php模板网站,延庆网站建设,电线电缆做销售哪个网站好,今天的北京新闻本篇目录 1. 客户需求2. 需求调研3. 实践3.1 方案一#xff1a;环境变量的方式3.2 方案二#xff1a;k8s 自身的spec注入机制 4. 效果 该实践来自于客户的一个真实需求 1. 客户需求
客户的某些流水线需要使用GPU资源#xff0c;但是对于GPU服务器而言#xff0c;会有多张G… 本篇目录 1. 客户需求2. 需求调研3. 实践3.1 方案一环境变量的方式3.2 方案二k8s 自身的spec注入机制 4. 效果 该实践来自于客户的一个真实需求 1. 客户需求
客户的某些流水线需要使用GPU资源但是对于GPU服务器而言会有多张GPU显卡而客户只需要将runner的资源调度在其中的一张或者多张显卡而不是占用整个GPU服务器的显卡资源。
2. 需求调研
通过查看runner的相关文档对于runner使用GPU资源而言本身runner是不需要做任何配置的详见说明 [GPU] (https://docs.gitlab.com/runner/configuration/gpus.html)。关于GPU主要针对的英伟达可以通过 NVIDIA_VISIBLE_DEVICES 环境变量来控制进行制定数量GPU显卡资源的调度。针对runner的执行器为 kubernetes 类型而言可以通过spec的配置注入机制来实现将部分配置聚合在runner 拉起的pod中从而实现资源的控制该技术本身是基于k8s的原理来实现的。
3. 实践
3.1 方案一环境变量的方式
gitlab runner的配置文件调整如下 config: |[[runners]]environment [FF_USE_ADVANCED_POD_SPEC_CONFIGURATIONtrue,NVIDIA_VISIBLE_DEVICES0]说明
对于多张显卡而言总是从0..n因此这里的 0 指的是第一张显卡也就是说runner的作业拉起pod后会占用第一张显卡。如果要使用多张显卡可以参考NVIDIA_VISIBLE_DEVICES 的详细配置。
3.2 方案二k8s 自身的spec注入机制
相比于方案一方案二要更灵活一下但是需要开启 FF_USE_ADVANCED_POD_SPEC_CONFIGURATION flag。具体的配置调整如下
config: |[[runners]]environment [FF_USE_ADVANCED_POD_SPEC_CONFIGURATIONtrue][runners.kubernetes]namespace {{.Release.Namespace}}image alpinepull_policy [if-not-present][runners.kubernetes.node_selector]nvidia.com/gpu.present true[[runners.kubernetes.pod_spec]]name cpu limitpatch containers:- name: buildresources:limits:nvidia.com/gpu: 1patch_type strategicpatch_type说明
strategicKubernetes 的 战略合并 Patch可以在不破坏原始 YAML 结构的前提下进行合并和修改推荐。json使用 JSON Patch 格式来修改资源。merge简单的合并 Patch。
4. 效果
调整前
调整后