2024-11-21 一站式 AI 平台生日大派对!2024-11-21 一站式 AI 平台生日大派对! 无问芯穹特别推出多项超值福利!立即参与
Skip to content

构建自定义镜像

非预置镜像均称为自定义镜像,存储在租户的私有租户镜像仓库中。本文描述如何在 AIStudio 平台通过多种方式创建自定义镜像。

NOTE

当前租户的自定义镜像,均会展示在镜像中心的自定义镜像标签页。如果在创建开发机、任务、推理服务时,无法在自定义镜像列表中无法找到自定义镜像,请检查创建实例的资源池与该镜像的可用资源池是否一致。

镜像大小限制

单个镜像大小不能超过 50 GiB。

镜像基础组件要求

如果您的镜像用于开发机,推荐在镜像中包含平台要求的必要组件:

以 Ubuntu 为例:

shell
apt update && apt install openssh-server sudo runit runit-systemd -y

如果镜像中缺失上述组件,在启动开发机时平台会尝试安装,但仍可能安装失败导致开发机无法正常启动。

在镜像中心快速构建镜像

AIStudio 镜像中心支持多种从网页端快捷创建自定义镜像的方式,包括基于现有的预置镜像或自定义镜像、基于 dockerfile,或直接保存运行中的开发机为镜像。

这种方式构建的镜像将直接保存到租户私有镜像仓库,无需推送。

切换到自定义镜像标签页后,点击构建镜像。进入创建页面后,请根据页面提示,完成以下配置。

  • 镜像名称及 tag:填写符合要求的名称与镜像标签。

  • 可用服务:如果您希望镜像被用于开发机和任务,可根据需要进行勾选。

  • 镜像构建资源池:选择可使用该镜像的资源池。如果下拉列表只有一项,选择默认值即可。如果有多项,说明您的计算资源分布在多个可用区(例如,宁夏、广东等)。列表中的每一行为该可用区中的所有资源池,请选择希望使用该镜像的资源池。单次构建操作仅支持选择一个可用区的所有资源池。

    alt text

  • 构建方式:自定义镜像的构建方式有如下三种,下文中提供了具体示例。

    方式说明
    基于现有镜像可使用平台预置镜像,或镜像中心的自定义镜像。在基础镜像上,可使用 apt-getpip install 安装其他软件。
    基于 dockerfile直接编写 dockerfile ​。
    基于现有开发机导出开发机 rootfs 并另存为自定义镜像,仅支持选择正在运行的开发机。保存开发机为镜像时,请停止开发机内的读写操作​。

基于现有镜像

如果您对某个现有的预置镜像或自定义镜像比较熟悉,需要扩展该镜像,可在该镜像基础上使用 apt-getpip install 等方式安装其他软件。

alt text

填写自定义镜像的基础信息后,选择基于现有镜像,在「安装命令」输入框中编写需要执行的 Shell 命令。以下示例以平台预置 Ubuntu 22.04 镜像为基础,安装了一些网络工具、传输工具、开发工具等。

shell
# 更新APT包列表
apt-get update

# 安装系统工具
# -y: 自动确认所有提示,避免交互式输入
# --no-install-recommends: 仅安装核心依赖,不安装推荐的附加包(本脚本中已省略该选项,因此会安装推荐依赖)
apt-get install -y htop            # 系统资源监控工具,比 'top' 更直观
apt-get install -y dnsutils        # DNS工具包,提供 nslookup 和 dig 等DNS查询工具
apt-get install -y traceroute      # 网络路径跟踪工具,用于跟踪数据包的传输路径
apt-get install -y netcat-openbsd  # 网络工具包,提供 nc 命令,支持端口扫描和网络连接测试
apt-get install -y tcpdump         # 网络数据包分析工具,用于抓包和分析网络流量
apt-get install -y host            # 简单的DNS查询工具
apt-get install -y whois           # 域名注册信息查询工具
apt-get install -y emacs-nox       # Emacs命令行版本(不包含图形界面)
apt-get install -y nano            # 简单易用的文本编辑器
apt-get install -y rsync           # 高效的文件同步和传输工具

# 清理APT缓存以减少空间占用
apt-get clean
rm -rf /var/lib/apt/lists/*

# 使用pip安装Python包
# --quiet: 减少安装过程的输出信息
# --no-cache-dir: 不缓存下载的包
python3 -m pip install --quiet --no-cache-dir --upgrade pip  # 升级 pip
python3 -m pip install --quiet --no-cache-dir ipython        # 增强的交互式Python解释器
python3 -m pip install --quiet --no-cache-dir jupyterlab     # 基于Web的交互式开发环境

基于 Dockerfile

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层。使用 Dockerfile 定制镜像,可以很好解决镜像构建透明性、镜像体积等问题。

alt text

填写自定义镜像的基础信息后,选择基于 Dockerfile,在「Dockerfile」输入框中编写文件内容。以下示例来自教程Xinference 安装指南,该示例以 Ubuntu 22.04 为基础镜像,安装 Xinference 和大模型推理引擎 vLLM。

dockerfile
# 以平台预置镜像为基础,在其上进行定制(可从镜像中心获取镜像地址)
FROM cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429

# --no-cache-dir: 不缓存下载的包,减少镜像体积
RUN python3 -m pip install --no-cache-dir "xinference[vllm]" \
    && python3 -m pip install --no-cache-dir flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/

如何编写 Dockerfile 不在本文档范围以内,您可以参考网络资源。

TIP

您可以使用 Dockerfile 方便地构建系统级 CUDA / cuDNN 环境。我们提供了一些示例,详见获取系统级 CUDA

基于现有开发机

如果您希望保存开发机中环境配置,以便复用环境,可以直接将运行中的开发机保存为自定义镜像。

alt text

填写自定义镜像的基础信息后,选择基于现有开发机,在下拉列表中选择可见的开发机即可。如果填写排除的路径,镜像中将不会保存该路径的数据。

WARNING

  • 请保证开发机处于运行中状态,且镜像构建过程中不要关机。
  • 请保证开发机中当前无活跃读写操作,否则可能导致镜像构建失败。
  • 镜像中仅包含开发机 rootfs 数据,不包含开发机挂载的高性能共享存储云盘目录上的数据。

使用 Docker 命令构建镜像

如果您更习惯使用 Docker CLI,也可在 AIStudio 开发机中构建镜像。

您需要为开发机启用Docker 容器功能,随后可在开发机中使用 docker pull/push/build 等命令制作镜像,并可推送到租户镜像仓库。详见 制作镜像

查看构建结果

构建完成后,您可以在自定义镜像标签页中查看您的镜像。构建镜像时间与具体操作有关,可能从几分钟到几十分钟不等。但是如果超过 30 分钟,镜像构建任务会直接超时并失败。

alt text

点击列表中的可用资源池可查看该镜像在哪些资源池中可用。弹窗中同时会展示镜像所在仓库的存储剩余额度。

alt text

NOTE

如果直接构建镜像失败,可尝试在开发机内安装依赖项目,再将开发机保存为自定义镜像。如果问题持续,请联系无问芯穹技术支持

查看构建日志

在自定义镜像构建过程中和构建完成后,均可以在自定义镜像标签页中查看镜像构建日志。点击列表中的构建日志可展开日志面板,可根据日志根据构建进度,或分析镜像构建失败的原因。

alt text

NOTE

在镜像中心快速构建的镜像才有构建日志。使用其他方式并推送到租户镜像仓库的镜像无构建日志。

限制可用服务范围

租户自定义镜像默认可用于开发机、推理服务、任务。如需限制该镜像的可用服务,请通过页面上的编辑按钮修改可用服务。

alt text