开始使用镜像服务

镜像仓库

英博云在每个分区,都部署有镜像仓库服务,其统一的url前缀如下:

registry-{region-label}-internal.ebcloud.com

其中region-label为每个分区独有,华北一区的region-label为:cn-huabei1

预置镜像

基于分区的镜像仓库服务,英博云提供了许多预置镜像,位于目录:ebsys下,以华北一区为例,预置镜像url前缀形如:

registry-cn-huabei1-internal.ebcloud.com/ebsys

预置镜像囊括了基本的训练及推理框架,您可以在英博云控制台:镜像 -> 预置镜像,进行查看,如下所示:

预置镜像

点击镜像仓库名称,可以进一步查看各个镜像版本,如下所示:

预置镜像版本

点击每个tag对应的拉取命令,可以获取对应的拉取地址,一个示例如下:

docker pull registry-cn-huabei1-internal.ebcloud.com/ebsys/pytorch:2.5.1-cuda12.2-python3.10-ubuntu22.04-v09

注意:

  • 这个拉取地址为内网地址,仅限对应分区内的开发机、k8s工作负载使用。
  • 不可以跨分区使用及从公网拉取。

基于预置镜像提交工作负载

已经预置镜像的url地址,可以提交k8s工作负载,以下是部署sglang推理服务的yaml示例:

# sglang.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deepseek-r1-distill-qwen-14b-sglang
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deepseek-r1-distill-qwen-14b-sglang
  template:
    metadata:
      labels:
        app: deepseek-r1-distill-qwen-14b-sglang
    spec:
      affinity:
        nodeAffinity: # Pod调度亲和性
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.ebtech.com/gpu
                operator: In
                values:
                - A800_NVLINK_80GB
      containers:
      - name: deepseek
        image: registry-cn-huabei1-internal.ebcloud.com/ebsys/sglang:0.4.6-cuda12.2-python3.10-ubuntu22.04-v04
        command:
          - "python3"
          - "-m"
          - "sglang.launch_server"
          - "--host"
          - "0.0.0.0"
          - "--port"
          - "8080"
          - "--model"
          - "/public/huggingface-models/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B"
          - "--trust-remote-code"
          - "--tp"
          - "1"
        ports:
          - containerPort: 8080
        resources:
          limits: # 指定资源配额,例如:CPU 上限、内存上限、 本地存储大小、GPU 卡数等。
            cpu: "10"
            ephemeral-storage: 100Gi
            memory: 100Gi
            nvidia.com/gpu: "1"
          requests: # 指定资源最小请求值,例如:CPU 、内存、 本地存储大小、GPU 卡数等。
            cpu: "10"
            ephemeral-storage: 100Gi
            memory: 100Gi
            nvidia.com/gpu: "1"   # 这里指定要申请的GPU卡数
        volumeMounts:
          - mountPath: /public
            name: public-volume
      volumes:
        - name: public-volume
          hostPath:
            path: /public
            type: Directory

准备好yaml文件后,可以通过如下命令,部署一个服务:

kubectl apply -f sglang.yaml

基于预置镜像,在开发机内运行docker容器

在开发机内开启了docker支持的情况,可以通过docker pull命令,拉取改镜像到开发机本地,命令如下:

docker pull registry-cn-huabei1-internal.ebcloud.com/ebsys/pytorch:2.5.1-cuda12.2-python3.10-ubuntu22.04-v09

启动一个docker容器:

docker run -ti registry-cn-huabei1-internal.ebcloud.com/ebsys/pytorch:2.5.1-cuda12.2-python3.10-ubuntu22.04-v09 bash

注意:

  • 在container server开发机内执行docker pull命令,拉取预置镜像,无需docker login操作,系统会自动自动登录。
  • 预置镜像,目前仅支持从开发机内进行pull,从公网无法pull。