在BML平台使用容器镜像服务CCR

全功能AI开发平台 BML

  • 版本发布记录
  • 快速开始
    • 用BML实现表格预测
    • 用BML实现序列标注
    • 用BML实现文本实体抽取
    • 用BML实现图片分类
    • 用BML实现实例分割
    • 用BML评价短文本相似度
    • 用BML实现开源大模型的预训练(Post-pretrain)
    • 用BML实现文本分类
    • 用BML实现物体检测
  • 模型仓库
    • 从训练任务导入模型
    • 查看模型
    • 创建模型
    • 模型仓库简介
    • 从本地导入模型
    • 校验模型
    • 服务代码文件示例
      • Sklearn服务代码文件示例
      • XGBoost服务代码文件示例
  • 平台管理
    • 权限管理
    • 在BML平台使用并行文件系统PFS和对象存储BOS
    • 在BML平台使用容器镜像服务CCR
    • 在BML使用外部镜像
    • 项目空间管理
    • 镜像管理
      • 镜像使用
      • 镜像管理简介
      • 常见问题
      • 自定义镜像
    • 资源管理
      • 资源池管理简介
      • 资源池使用简介
  • 预测部署
    • 批量预测(用户资源池)API
    • 文字识别模型部署
      • 文字识别任务API参考文档
      • 文字识别任务公有云部署
    • 通用模型部署
      • 标准接口规范参考
      • Paddle框架API调用文档
      • sklearn框架API调用文档
      • 公有云部署
      • XGBoost框架API调用文档
      • tensorflow框架API调用文档
      • Pytorch框架API调用文档
      • 通用类模型API参考
      • 错误码
    • 语音技术模型部署
      • 声音分类API调用文档
    • 视觉模型部署
      • 智能边缘控制台-多节点版
      • 端云协同服务部署
      • 智能边缘控制台-单节点版
      • 视觉任务模型部署整体说明
      • 软硬一体方案部署
        • 视觉任务Jetson专用SDK集成文档
        • 如何获取视觉任务软硬一体产品
        • 视觉任务EdgeBoard(VMX)专用SDK集成文档
        • 视觉任务EdgeBoard(FZ)专用SDK集成文档
        • 视觉任务专用辨影SDK集成开发文档
      • 私有服务器部署
        • 视觉模型如何部署在私有服务器
        • 私有API
          • 如何发布私有API
          • 图像分类-单图单标签私有API集成文档
          • 图像分类-单图多标签私有API集成文档
          • 物体检测私有API集成文档
        • 服务器端SDK
          • 视觉任务服务器端LinuxSDK集成文档-Python
          • 视觉任务服务器端LinuxSDK集成文档-C++
          • 如何发布服务器端SDK
          • 视觉任务服务器端WindowsSDK集成文档
          • 视觉任务服务器端SDK简介
      • 设备端SDK部署
        • 视觉任务WindowsSDK集成文档
        • 视觉任务iOSSDK集成文档
        • 视觉任务LinuxSDK集成文档-Python
        • 视觉任务LinuxSDK集成文档-C++
        • 视觉任务设备端SDK使用说明
        • 如何发布视觉任务设备端SDK
        • 视觉任务AndroidSDK集成文档
      • 公有云部署
        • 文字识别API参考文档
        • 视觉任务公有云部署
        • 物体检测API参考文档
        • 图像分类-单图单标签API参考文档
        • 实例分割API参考文档
        • 图像分类-单图多标签API参考文档
    • 表格预测模型部署
      • 整体说明
      • 公有云部署
    • 公有云部署管理
      • 配置AB测试版本
      • 批量预测服务
      • 公有云部署
      • 公有云部署简介
      • 配置休眠策略
    • NLP模型部署
      • 自然语言处理任务模型部署整体说明
      • 私有服务器部署
        • 如何部署在私有服务器
        • 私有服务API说明
          • 私有部署说明-短文本相似度
          • 私有化部署接口说明-文本分类
          • 私有部署文档-序列标注
          • 文本实体抽取API调用文档
      • 公有云部署
        • 短文本匹配API调用文档
        • 文本实体抽取私有API调用说明
        • 如何发布自然语言处理任务API
        • 文本分类-多标签API调用文档
        • 文本分类API调用文档
        • 序列标注API调用文档
  • 数据服务
    • 数据服务简介
    • 智能数据API
    • 公有云服务调用数据反馈
    • 智能标注
      • 文本智能标注介绍及原理说明
      • 图像智能标注介绍说明
    • 管理视觉数据
      • 实例分割数据导入与标注
        • 数据标注说明
        • 导入未标注数据
        • 导入已标注数据
      • 物体检测数据导入与标注
        • 物体检测数据标注说明
        • 物体检测导入未标注数据
        • 物体检测导入已标注数据
      • 图像分类数据导入与标注
        • 图像分类导入未标注数据
        • 图像分类导入已标注数据
        • 图像分类数据标注说明
    • 管理文本数据
      • 文本分类数据导入与标注
        • 文本分类数据标注说明
        • 文本分类数据导入与标注
        • 数据去重策略
      • 序列标注数据导入与标注
        • 序列标注标注说明
        • 序列标注数据导入
        • 数据去重策略
      • 文本实体抽取数据标注
        • 文本实体抽取数据标注
        • 文本实体抽取数据导入
        • 数据去重策略
      • 短文本匹配数据导入与标注
        • 短文本匹配数据导入与标注
        • 数据去重策略说明
        • 短文本匹配数据标注
  • 产品简介
    • BML平台升级公告
    • 平台重点升级介绍
    • 产品优势
    • 产品功能
    • 什么是BML
    • 文心大模型
  • 产品定价
    • 服务器部署价格说明
    • 专项适配硬件部署价格说明
    • 公有云部署计费说明
    • 批量预测计费说明
    • 模型训练计费说明
    • 通用小型设备部署价格说明
  • 模型训练
    • Notebook建模
      • 创建并启动Notebook
      • Notebook导入数据集
      • 保存Notebook中的模型
      • Notebook使用参考
      • 常见问题
      • 数据模型可视化功能说明
      • Notebook简介
      • 发布模型
      • 配置模型
      • 使用Notebook开发模型
      • 如何使用Notebook SSH 功能
      • Notebook从训练到部署快速入门
        • Codelab Notebook自定义环境部署最佳实践
        • 基于Notebook的图像分类模板使用指南
        • 基于 Notebook 的 NLP 通用模板使用指南
        • Notebook 模板使用指南概述
        • 基于 Notebook 的通用模板使用指南
        • 基于 Notebook 的物体检测模板使用指南
    • 自定义作业建模
      • 自定义作业简介
      • 训练作业API
      • 训练作业
        • 使用训练作业训练模型
        • 创建训练作业
        • 发布模型
        • 训练作业代码示例
          • TensorFlow 1.13.2
          • AIAK- Training Pytorch版
          • TensorFlow 2.3.0
          • Blackhole 1.0.0
          • Pytorch 1.7.1
          • Sklearn 0.23.2
          • XGBoost 1.3.1
          • PaddlePaddle 2.0.0rc
      • 自动搜索作业
        • 创建自动搜索作业
        • yaml文件编写规范
        • 自动搜索作业简介
        • 自动搜索作业代码编写规范
        • 自动搜索作业代码示例
          • XGBoost 1.3.1代码规范
          • TensorFlow 1.13.2代码规范
          • Sklearn 0.23.2代码规范
          • Pytorch 1.7.1代码规范
          • Tensorflow2.3.0代码规范
          • PaddlePaddle 2.1.1代码规范
    • 可视化建模
      • 快速入门
      • 概述
      • 组件菜单
        • 001-基本操作
        • 003-查看模型特征溯源
        • 007-组件状态
        • 008-组件资源配置
        • 006-组件列选择
        • 002-查看模型可解释性
        • 004-查看特征重要性
      • 组件说明
        • 015-图算法
        • 004-特征工程组件
        • 003-数据处理组件
        • 012-预测组件
        • 008-聚类算法
        • 009-Python算法组件
        • 002-数据集组件
        • 014-自然语言处理组件
        • 010-NLP算法
        • 016-统计分析组件
        • 006-回归算法
        • 007-异常检测算法
        • 013-模型评估组件
        • 005-分类算法
        • 018-时间序列组件
      • 画布操作说明
        • 005-AutoML(自动调参)
        • 002-开始训练
        • 001-概述
    • 预置模型调参建模
      • 预置模型调参简介
      • 神经网络训练搜索
      • 开发视觉模型
        • 视觉任务简介
        • 查看训练结果
        • 创建视觉任务
        • 配置视觉任务
        • 开发参考
          • 视觉预训练模型
          • 超参数配置参考
          • 评估报告参考
          • 自动超参搜索配置参考
          • 数据增强算子参考
          • 训练时长设置参考
          • 网络选型参考
      • 开发表格预测模型
        • 创建表格预测任务
        • 配置专家模式表格数据预测任务
        • 查看训练结果
        • 配置AUTOML模式表格数据预测任务
        • 表格预测任务简介
      • 开发文字识别模型
        • 文字识别任务简介
        • 文字识别任务操作流程
      • 开发自然语言处理模型
        • 查看训练结果
        • 自然语言处理任务简介
        • 配置NLP任务
        • 创建NLP任务
        • 代码模板升级及迁移说明
所有文档
menu
没有找到结果,请重新输入

全功能AI开发平台 BML

  • 版本发布记录
  • 快速开始
    • 用BML实现表格预测
    • 用BML实现序列标注
    • 用BML实现文本实体抽取
    • 用BML实现图片分类
    • 用BML实现实例分割
    • 用BML评价短文本相似度
    • 用BML实现开源大模型的预训练(Post-pretrain)
    • 用BML实现文本分类
    • 用BML实现物体检测
  • 模型仓库
    • 从训练任务导入模型
    • 查看模型
    • 创建模型
    • 模型仓库简介
    • 从本地导入模型
    • 校验模型
    • 服务代码文件示例
      • Sklearn服务代码文件示例
      • XGBoost服务代码文件示例
  • 平台管理
    • 权限管理
    • 在BML平台使用并行文件系统PFS和对象存储BOS
    • 在BML平台使用容器镜像服务CCR
    • 在BML使用外部镜像
    • 项目空间管理
    • 镜像管理
      • 镜像使用
      • 镜像管理简介
      • 常见问题
      • 自定义镜像
    • 资源管理
      • 资源池管理简介
      • 资源池使用简介
  • 预测部署
    • 批量预测(用户资源池)API
    • 文字识别模型部署
      • 文字识别任务API参考文档
      • 文字识别任务公有云部署
    • 通用模型部署
      • 标准接口规范参考
      • Paddle框架API调用文档
      • sklearn框架API调用文档
      • 公有云部署
      • XGBoost框架API调用文档
      • tensorflow框架API调用文档
      • Pytorch框架API调用文档
      • 通用类模型API参考
      • 错误码
    • 语音技术模型部署
      • 声音分类API调用文档
    • 视觉模型部署
      • 智能边缘控制台-多节点版
      • 端云协同服务部署
      • 智能边缘控制台-单节点版
      • 视觉任务模型部署整体说明
      • 软硬一体方案部署
        • 视觉任务Jetson专用SDK集成文档
        • 如何获取视觉任务软硬一体产品
        • 视觉任务EdgeBoard(VMX)专用SDK集成文档
        • 视觉任务EdgeBoard(FZ)专用SDK集成文档
        • 视觉任务专用辨影SDK集成开发文档
      • 私有服务器部署
        • 视觉模型如何部署在私有服务器
        • 私有API
          • 如何发布私有API
          • 图像分类-单图单标签私有API集成文档
          • 图像分类-单图多标签私有API集成文档
          • 物体检测私有API集成文档
        • 服务器端SDK
          • 视觉任务服务器端LinuxSDK集成文档-Python
          • 视觉任务服务器端LinuxSDK集成文档-C++
          • 如何发布服务器端SDK
          • 视觉任务服务器端WindowsSDK集成文档
          • 视觉任务服务器端SDK简介
      • 设备端SDK部署
        • 视觉任务WindowsSDK集成文档
        • 视觉任务iOSSDK集成文档
        • 视觉任务LinuxSDK集成文档-Python
        • 视觉任务LinuxSDK集成文档-C++
        • 视觉任务设备端SDK使用说明
        • 如何发布视觉任务设备端SDK
        • 视觉任务AndroidSDK集成文档
      • 公有云部署
        • 文字识别API参考文档
        • 视觉任务公有云部署
        • 物体检测API参考文档
        • 图像分类-单图单标签API参考文档
        • 实例分割API参考文档
        • 图像分类-单图多标签API参考文档
    • 表格预测模型部署
      • 整体说明
      • 公有云部署
    • 公有云部署管理
      • 配置AB测试版本
      • 批量预测服务
      • 公有云部署
      • 公有云部署简介
      • 配置休眠策略
    • NLP模型部署
      • 自然语言处理任务模型部署整体说明
      • 私有服务器部署
        • 如何部署在私有服务器
        • 私有服务API说明
          • 私有部署说明-短文本相似度
          • 私有化部署接口说明-文本分类
          • 私有部署文档-序列标注
          • 文本实体抽取API调用文档
      • 公有云部署
        • 短文本匹配API调用文档
        • 文本实体抽取私有API调用说明
        • 如何发布自然语言处理任务API
        • 文本分类-多标签API调用文档
        • 文本分类API调用文档
        • 序列标注API调用文档
  • 数据服务
    • 数据服务简介
    • 智能数据API
    • 公有云服务调用数据反馈
    • 智能标注
      • 文本智能标注介绍及原理说明
      • 图像智能标注介绍说明
    • 管理视觉数据
      • 实例分割数据导入与标注
        • 数据标注说明
        • 导入未标注数据
        • 导入已标注数据
      • 物体检测数据导入与标注
        • 物体检测数据标注说明
        • 物体检测导入未标注数据
        • 物体检测导入已标注数据
      • 图像分类数据导入与标注
        • 图像分类导入未标注数据
        • 图像分类导入已标注数据
        • 图像分类数据标注说明
    • 管理文本数据
      • 文本分类数据导入与标注
        • 文本分类数据标注说明
        • 文本分类数据导入与标注
        • 数据去重策略
      • 序列标注数据导入与标注
        • 序列标注标注说明
        • 序列标注数据导入
        • 数据去重策略
      • 文本实体抽取数据标注
        • 文本实体抽取数据标注
        • 文本实体抽取数据导入
        • 数据去重策略
      • 短文本匹配数据导入与标注
        • 短文本匹配数据导入与标注
        • 数据去重策略说明
        • 短文本匹配数据标注
  • 产品简介
    • BML平台升级公告
    • 平台重点升级介绍
    • 产品优势
    • 产品功能
    • 什么是BML
    • 文心大模型
  • 产品定价
    • 服务器部署价格说明
    • 专项适配硬件部署价格说明
    • 公有云部署计费说明
    • 批量预测计费说明
    • 模型训练计费说明
    • 通用小型设备部署价格说明
  • 模型训练
    • Notebook建模
      • 创建并启动Notebook
      • Notebook导入数据集
      • 保存Notebook中的模型
      • Notebook使用参考
      • 常见问题
      • 数据模型可视化功能说明
      • Notebook简介
      • 发布模型
      • 配置模型
      • 使用Notebook开发模型
      • 如何使用Notebook SSH 功能
      • Notebook从训练到部署快速入门
        • Codelab Notebook自定义环境部署最佳实践
        • 基于Notebook的图像分类模板使用指南
        • 基于 Notebook 的 NLP 通用模板使用指南
        • Notebook 模板使用指南概述
        • 基于 Notebook 的通用模板使用指南
        • 基于 Notebook 的物体检测模板使用指南
    • 自定义作业建模
      • 自定义作业简介
      • 训练作业API
      • 训练作业
        • 使用训练作业训练模型
        • 创建训练作业
        • 发布模型
        • 训练作业代码示例
          • TensorFlow 1.13.2
          • AIAK- Training Pytorch版
          • TensorFlow 2.3.0
          • Blackhole 1.0.0
          • Pytorch 1.7.1
          • Sklearn 0.23.2
          • XGBoost 1.3.1
          • PaddlePaddle 2.0.0rc
      • 自动搜索作业
        • 创建自动搜索作业
        • yaml文件编写规范
        • 自动搜索作业简介
        • 自动搜索作业代码编写规范
        • 自动搜索作业代码示例
          • XGBoost 1.3.1代码规范
          • TensorFlow 1.13.2代码规范
          • Sklearn 0.23.2代码规范
          • Pytorch 1.7.1代码规范
          • Tensorflow2.3.0代码规范
          • PaddlePaddle 2.1.1代码规范
    • 可视化建模
      • 快速入门
      • 概述
      • 组件菜单
        • 001-基本操作
        • 003-查看模型特征溯源
        • 007-组件状态
        • 008-组件资源配置
        • 006-组件列选择
        • 002-查看模型可解释性
        • 004-查看特征重要性
      • 组件说明
        • 015-图算法
        • 004-特征工程组件
        • 003-数据处理组件
        • 012-预测组件
        • 008-聚类算法
        • 009-Python算法组件
        • 002-数据集组件
        • 014-自然语言处理组件
        • 010-NLP算法
        • 016-统计分析组件
        • 006-回归算法
        • 007-异常检测算法
        • 013-模型评估组件
        • 005-分类算法
        • 018-时间序列组件
      • 画布操作说明
        • 005-AutoML(自动调参)
        • 002-开始训练
        • 001-概述
    • 预置模型调参建模
      • 预置模型调参简介
      • 神经网络训练搜索
      • 开发视觉模型
        • 视觉任务简介
        • 查看训练结果
        • 创建视觉任务
        • 配置视觉任务
        • 开发参考
          • 视觉预训练模型
          • 超参数配置参考
          • 评估报告参考
          • 自动超参搜索配置参考
          • 数据增强算子参考
          • 训练时长设置参考
          • 网络选型参考
      • 开发表格预测模型
        • 创建表格预测任务
        • 配置专家模式表格数据预测任务
        • 查看训练结果
        • 配置AUTOML模式表格数据预测任务
        • 表格预测任务简介
      • 开发文字识别模型
        • 文字识别任务简介
        • 文字识别任务操作流程
      • 开发自然语言处理模型
        • 查看训练结果
        • 自然语言处理任务简介
        • 配置NLP任务
        • 创建NLP任务
        • 代码模板升级及迁移说明
  • 文档中心
  • arrow
  • 全功能AI开发平台BML
  • arrow
  • 平台管理
  • arrow
  • 在BML平台使用容器镜像服务CCR
本页目录
  • 在BML平台使用容器镜像服务CCR
  • 前提条件
  • 创建镜像仓库
  • 使用镜像提交自定义作业任务
  • 附录:自定义镜像规范
  • Paddle镜像
  • Sklearn镜像
  • 如果是pytorch/tensorflow的多机分布式作业,则需要安装额外的依赖包
  • pytorch/tf 镜像示例

在BML平台使用容器镜像服务CCR

更新时间:2025-08-21

在BML平台使用容器镜像服务CCR

平台支持用户在用户资源池上关联容器镜像服务CCR作为资源池的镜像仓库,在使用用户资源池提交任务时,可以使用镜像仓库中的镜像。

当前支持的容器镜像服务CCR类型:

  • 容器镜像服务CCR-企业版
  • 容器镜像服务CCR-个人版

当前支持使用容器镜像服务CCR提交的任务:

  • 自定义作业-训练作业任务、自动搜索作业任务

前提条件

  1. 用户在平台上已经挂载了容器引擎CCE资源作为用户资源池,点击了解容器引擎CCE;
  2. 用户已经创建了容器镜像服务CCR,点击了解容器镜像服务CCR。
  3. 容器镜像服务CCR能够被容器引擎CCE资源访问到,也即能被对应的VPC访问到。

创建镜像仓库

  • Step1:进入平台管理-资源池管理,已挂载并运行正常的用户资源池支持“镜像仓库”的操作项,点击即可开始查看镜像仓库。

image.png

  • Step2:点击镜像仓库,即可进入镜像仓库列表。

image.png

  • Step3:点击添加镜像仓库,即可进入添加流程。

企业版:支持选择资源池对应区域和VPC下的,归属于主账号的容器镜像服务CCR-企业版的实例,并填写账号密码进行添加。

image.png

个人版:支持选择归属于主账号的容器镜像服务CCR-个人版的实例,并填写账号密码进行添加。

image.png

使用镜像提交自定义作业任务

在算法配置阶段,如果用户选择了用户资源池,即支持选择该资源池所关联的CCR镜像环境提交任务。(训练作业和自动搜索作业任务的提交过程一致)

  • 企业版:支持依次选择镜像仓库-命名空间-镜像-版本,从而选中一个唯一确定的镜像用于提交任务。

image.png

  • 个人版:支持依次选择镜像仓库-镜像-版本,从而选中一个唯一确定的镜像用于提交任务。

image.png

在选择完镜像后,需要根据镜像中的深度学习框架来选择分布式框架,其中:

  • Paddlefleet:PaddleFleet是PaddlePaddle推出的分布式图引擎以及大规模参数服务器,用于支撑⻜桨框架大规模分布式训练能力。
  • Horovod:分布式训练框架,支持tensorflow、pytorch、ray、mxnet等业界著名的开源的机器学习框架。通过对底层tensorflow等框架进行上层分布式调度、分布式通信、梯度计算等封装,完成大规模集群下模型的训练。horovod主要支持在GPU资源集群上的大规模分布式的同步训练。

后续填写代码文件、启动命令、输出路径等信息后,即可提交自定义作业任务。

附录:自定义镜像规范

Paddle镜像

  • python版本要求:python3.7及以上
  • 安装bos:dockerfile实现
Plain Text
1RUN /bin/bash -c 'mkdir /home/bos && \
2    cd /home/bos && \
3    wget --no-check-certificate https://sdk.bce.baidu.com/console-sdk/linux-bcecmd-0.3.0.zip && \
4    unzip linux-bcecmd-0.3.0.zip && \
5    echo "export LANG=en_US.UTF-8" >> ~/.bashrc && \
6    echo "export PATH="/home/bos/linux-bcecmd-0.3.0:${PATH}"" >> ~/.bashrc && \
7    source ~/.bashrc'

或者自行在镜像中安装到/home/bos/linux-bcecmd-0.3.0目录下,确保 “/home/bos/linux-bcecmd-0.3.0/bcecmd” 这句命令在命令行能弹出相关bcecmd帮助信息,即命令能被系统识别

  • 安装搜索需要的 sdk
  • 用户自行安装wheel包:rudder_autosearch-1.0.0-py3-none-any.whl,点击下载。
  • 安装 jq 解析sts需要:apt-get install jq
  • 安装 curl 解析sts需要:apt-get install curl
  • 安装protobuf 搜索sdk需要:建议安装3.20.1版本 pip install protobuf==3.20.1
  • 设置虚拟化环境变量初始值:dockerfile实现
Plain Text
1ENV NVIDIA_VISIBLE_DEVICES ""

Sklearn镜像

Plain Text
1FROM ubuntu16.04-python3
2
3# Configure time zone
4RUN apt-get update && \
5    apt-get install -y tzdata && \
6    ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
7    dpkg-reconfigure -f noninteractive tzdata && \
8    apt-get clean
9
10RUN apt-get install -y --no-install-recommends\
11    build-essential \
12    libopencv-dev \
13    libssl-dev \
14    dnsutils \
15    unzip \
16    vim \
17    jq \
18    curl \
19    wget && \
20    apt-get clean && \
21    rm -rf /var/lib/apt/lists/*
22
23#py3
24RUN bash -c 'cd /tmp && \
25    wget --no-check-certificate https://repo.anaconda.com/miniconda/Miniconda3-py37_4.8.3-Linux-x86_64.sh && \
26    bash Miniconda3-py37_4.8.3-Linux-x86_64.sh -b -p ~/miniconda3 && \
27    echo "source ~/miniconda3/bin/activate" >> ~/.bashrc && \
28    echo "export PATH="~/miniconda3/bin:${PATH}"" >> ~/.bashrc && \
29    source ~/.bashrc  && \
30    rm -rf Miniconda3-py37_4.8.3-Linux-x86_64.sh' && \
31    /root/miniconda3/bin/python -m pip config set global.index-url https://pypi.douban.com/simple/ && \
32    /root/miniconda3/bin/python -m pip install --upgrade pip && \
33    /root/miniconda3/bin/python -m pip install --upgrade setuptools && \
34    /root/miniconda3/bin/python -m pip install numpy==1.17.4 && \
35    /root/miniconda3/bin/python -m pip install albumentations==0.4.3 && \
36    /root/miniconda3/bin/python -m pip install Cython==0.29.16 && \
37    /root/miniconda3/bin/python -m pip install pycocotools==2.0.0 && \
38    /root/miniconda3/bin/python -m pip install ruamel.yaml && \
39    /root/miniconda3/bin/python -m pip install ujson && \
40    /root/miniconda3/bin/python -m pip install scipy==1.5.3 && \
41    /root/miniconda3/bin/python -m pip install scikit-learn==0.23.2 && \
42    /root/miniconda3/bin/python -m pip install pandas
43
44RUN /root/miniconda3/condabin/conda clean -p && \
45    /root/miniconda3/condabin/conda clean -t
46RUN rm -rf ~/.cache/pip
47RUN rm -rf /usr/bin/python3 && ln -s /root/miniconda3/bin/python /usr/bin/python3
48       
49#sklearn
50RUN /root/miniconda3/bin/python -m pip install xgboost==1.3.1
51                                                
52#安装bos
53RUN /bin/bash -c 'mkdir /home/bos && \
54    cd /home/bos && \
55    wget --no-check-certificate https://sdk.bce.baidu.com/console-sdk/linux-bcecmd-0.3.0.zip && \
56    unzip linux-bcecmd-0.3.0.zip && \
57    echo "export LANG=en_US.UTF-8" >> ~/.bashrc && \
58    echo "export PATH="/home/bos/linux-bcecmd-0.3.0:${PATH}"" >> ~/.bashrc && \
59    source ~/.bashrc'
60
61#添加搜索作业SDK install 3.20.1 protobuf for searchjob
62COPY rudder-autosearch-1.0.0-py3-none-any.whl /home/rudder-autosearch-1.0.0-py3-none-any.whl
63RUN pip install /home/rudder-autosearch-1.0.0-py3-none-any.whl && \
64    pip install protobuf==3.20.1
65   
66ENV NVIDIA_VISIBLE_DEVICES ""
67
68ENTRYPOINT ["/bin/bash"]

如果是pytorch/tensorflow的多机分布式作业,则需要安装额外的依赖包

  • 安装openmpi
Plain Text
1#安装openmpi
2RUN mkdir /tmp/openmpi && \
3    cd /tmp/openmpi && \
4    wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz && \
5    tar zxf openmpi-4.0.0.tar.gz && \
6    cd openmpi-4.0.0 && \
7    ./configure --enable-orterun-prefix-by-default && \
8    make -j $(nproc) all && \
9    make install && \
10    ldconfig && \
11    rm -rf /tmp/openmpi
12# Create a wrapper for OpenMPI to allow running as root by default
13RUN mv /usr/local/bin/mpirun /usr/local/bin/mpirun.real && \
14    echo '#!/bin/bash' > /usr/local/bin/mpirun && \
15    echo 'mpirun.real --allow-run-as-root "$@"' >> /usr/local/bin/mpirun && \
16    chmod a+x /usr/local/bin/mpirun
17
18# Configure OpenMPI to run good defaults:
19#   --bind-to none --map-by slot --mca btl_tcp_if_exclude lo,docker0
20RUN echo "hwloc_base_binding_policy = none" >> /usr/local/etc/openmpi-mca-params.conf && \
21    echo "rmaps_base_mapping_policy = slot" >> /usr/local/etc/openmpi-mca-params.conf && \
22    echo "btl_tcp_if_exclude = lo,docker0" >> /usr/local/etc/openmpi-mca-params.conf
  • 安装horvod(MPI形式的作业,需要安装horovod,并进行相关配置。horovod安装需要cmake3.13+,可以apt-get install 指定版本安装)
Plain Text
1RUN ldconfig /usr/local/cuda/targets/x86_64-linux/lib/stubs && \
2    HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_WITH_PYTORCH=1  pip install --no-cache-dir horovod && \
3    ldconfig
  • 安装并配置nccl
Plain Text
1# Set default NCCL parameters
2RUN echo NCCL_DEBUG=INFO >> /etc/nccl.conf
  • 安装openssh并配置
Plain Text
1# Install OpenSSH for MPI to communicate between containers
2RUN apt-get install -y --no-install-recommends openssh-client openssh-server && \
3    mkdir -p /var/run/sshd
4
5# Allow OpenSSH to talk to containers without asking for confirmation
6RUN cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \
7    echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \
8    mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config

pytorch/tf 镜像示例

Plain Text
1FROM cuda11.0.3-cudnn8-devel-ubuntu18.04
2
3# Configure time zone
4RUN rm /etc/apt/sources.list.d/cuda.list && rm /etc/apt/sources.list.d/nvidia-ml.list
5RUN apt-get update && \
6    DEBIAN_FRONTEND="noninteractive" TZ="Asia/Shanghai" \
7    apt-get install -y tzdata && \
8    ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
9    dpkg-reconfigure -f noninteractive tzdata && \
10    apt-get clean
11    
12#cmake需要大于3.13版本
13RUN apt-get install -y \
14    build-essential \
15    libopencv-dev \
16    libssl-dev \
17    dnsutils \
18    unzip \
19    vim \
20    git \
21    jq \
22    curl \
23    cmake \
24    wget \
25    ca-certificates \
26    libjpeg-dev \
27    libpng-dev \
28    wget && \    
29    apt-get clean && \
30    rm -rf /var/lib/apt/lists/*
31
32#py3
33RUN bash -c 'cd /tmp && \
34    wget --no-check-certificate https://repo.anaconda.com/miniconda/Miniconda3-py37_4.8.3-Linux-x86_64.sh && \
35    bash Miniconda3-py37_4.8.3-Linux-x86_64.sh -b -p ~/miniconda3 && \
36    echo "source ~/miniconda3/bin/activate" >> ~/.bashrc && \
37    echo "export PATH="~/miniconda3/bin:${PATH}"" >> ~/.bashrc && \
38    source ~/.bashrc  && \
39    rm -rf Miniconda3-py37_4.8.3-Linux-x86_64.sh' && \
40    /root/miniconda3/bin/python -m pip config set global.index-url https://pypi.douban.com/simple/ && \
41    /root/miniconda3/bin/python -m pip install --upgrade pip && \
42    /root/miniconda3/bin/python -m pip install --upgrade setuptools && \
43    /root/miniconda3/bin/python -m pip install numpy==1.17.4 && \
44    /root/miniconda3/bin/python -m pip install albumentations==0.4.3 && \
45    /root/miniconda3/bin/python -m pip install Cython==0.29.16 && \
46    /root/miniconda3/bin/python -m pip install pycocotools==2.0.0 && \
47    /root/miniconda3/bin/python -m pip install ruamel.yaml && \
48    /root/miniconda3/bin/python -m pip install ujson && \
49    /root/miniconda3/bin/python -m pip install scikit-learn==0.23.2 && \
50    /root/miniconda3/bin/python -m pip install pandas
51
52RUN /root/miniconda3/condabin/conda clean -p && \
53    /root/miniconda3/condabin/conda clean -t
54RUN rm -rf ~/.cache/pip
55RUN rm -rf /usr/bin/python3 && ln -s /root/miniconda3/bin/python /usr/bin/python3
56
57#torch
58RUN /root/miniconda3/bin/python -m pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 \
59    -f https://download.pytorch.org/whl/torch_stable.html
60
61# Install Open MPI 4.0.0
62RUN mkdir /tmp/openmpi && \
63    cd /tmp/openmpi && \
64    wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz && \
65    tar zxf openmpi-4.0.0.tar.gz && \
66    cd openmpi-4.0.0 && \
67    ./configure --enable-orterun-prefix-by-default && \
68    make -j $(nproc) all && \
69    make install && \
70    ldconfig && \
71    rm -rf /tmp/openmpi
72
73# Install Horovod, temporarily using CUDA stubs
74# /usr/local/cuda links to /usr/local/cuda-10.1
75RUN ldconfig /usr/local/cuda/targets/x86_64-linux/lib/stubs && \
76    HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_WITH_PYTORCH=1  pip install --no-cache-dir horovod && \
77    ldconfig
78
79# Create a wrapper for OpenMPI to allow running as root by default
80RUN mv /usr/local/bin/mpirun /usr/local/bin/mpirun.real && \
81    echo '#!/bin/bash' > /usr/local/bin/mpirun && \
82    echo 'mpirun.real --allow-run-as-root "$@"' >> /usr/local/bin/mpirun && \
83    chmod a+x /usr/local/bin/mpirun
84    
85# Configure OpenMPI to run good defaults:
86#   --bind-to none --map-by slot --mca btl_tcp_if_exclude lo,docker0
87RUN echo "hwloc_base_binding_policy = none" >> /usr/local/etc/openmpi-mca-params.conf && \
88    echo "rmaps_base_mapping_policy = slot" >> /usr/local/etc/openmpi-mca-params.conf && \
89    echo "btl_tcp_if_exclude = lo,docker0" >> /usr/local/etc/openmpi-mca-params.conf
90
91# Set default NCCL parameters
92RUN echo NCCL_DEBUG=INFO >> /etc/nccl.conf
93
94# Install OpenSSH for MPI to communicate between containers
95RUN apt-get install -y --no-install-recommends openssh-client openssh-server && \
96    mkdir -p /var/run/sshd
97
98# Allow OpenSSH to talk to containers without asking for confirmation
99RUN cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \
100    echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \
101    mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config
102
103#安装bos
104RUN /bin/bash -c 'mkdir /home/bos && \
105    cd /home/bos && \
106    wget --no-check-certificate https://sdk.bce.baidu.com/console-sdk/linux-bcecmd-0.3.0.zip && \
107    unzip linux-bcecmd-0.3.0.zip && \
108    echo "export LANG=en_US.UTF-8" >> ~/.bashrc && \
109    echo "export PATH="/home/bos/linux-bcecmd-0.3.0:${PATH}"" >> ~/.bashrc && \
110    source ~/.bashrc'
111
112#添加搜索作业SDK install 3.20.1 protobuf for searchjob
113COPY rudder-autosearch-1.0.0-py3-none-any.whl /home/rudder-autosearch-1.0.0-py3-none-any.whl
114RUN pip install /home/rudder-autosearch-1.0.0-py3-none-any.whl && \
115    pip install protobuf==3.20.1
116   
117ENV NVIDIA_VISIBLE_DEVICES ""
118
119ENTRYPOINT ["/bin/bash"]

上一篇
在BML平台使用并行文件系统PFS和对象存储BOS
下一篇
在BML使用外部镜像