在ACS上使用PPU PIP服务

更新时间:
复制为 MD 格式

本文为您介绍如何在ACS上使用PTG提供的PPU PIP服务阿里云提供的PPU PIP服务。PTG提供的PPU PIP服务:使用前需申请鉴权账号和密码。软件包安装需通过公网进行,并在安装时显式提供账密信息。阿里云提供的PPU PIP服务:支持免密使用,且可在 VPC 内使用(Pod 无需连接公网)。使用前需完成必要的配置工作。两者在 PIP 软件的种类、数量及命名等方面完全一致。您可以根据实际需求选择适合的服务。

ACS产品使用阿里云提供的PPU PIP服务

场景说明

  1. 支持VPC内使用PIP服务,您的ACS PPU Pod可不通公网,满足合规和网络管控的需求。

  2. 您只需要设置一个PIP源,可以一站式安装XPUCPUPIP软件包。

  3. 软件包安装不需要您手动显式鉴权操作(对齐社区使用体验)。

  4. 所有ACSPPU您都可以使用,使用之前需要做必要的配置工作。

PTG提供的PPU PIP服务的异同

使用PTG提供的PPU PIP服务

使用阿里云提供的PPU PIP服务

PIP源 Index URL

形如https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu126_index/simple/Index URL

形如https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu126/simple/Index URL,与PTG版本的一一对应

详细Index URL信息和对应规则,请参见阿里云提供PPU PIP服务Index URL

PIP源鉴权

需要显式鉴权(按需申请)

免鉴权(配置后可用)

使用范围

已申请账号密码的用户

全部ACS PPU用户(需要配置开启)

访问途径

互联网访问

互联网访问、VPC内访问

使用前配置环节

不需要额外配置

需要进行一些前置的配置步骤

软件包使用

软件包命名、软件包数量、安装方式无差异

软件包命名、软件包数量、安装方式无差异(仅需替换PIPIndex URL)

说明

后续可能会取消服务

使用方式

开通PPU PIP免密授权

重要
  • 前置步骤:通过PPU阿里云网站查询官方提供的PPU-PIP包清单,只有这个列表中提供的软件包才可以安装,列表中找不到的CUDA相关的PIP软件包,建议您通过编译安装的方式安装,详细操作步骤,请参见自行编译PIP软件包

  • 资源和费用:PPU PIP免鉴权功能会在集群中部署ack-pod-identity-webhook无状态工作负载(3副本),每个Pod系统资源消耗(resources.requests)为:CPU: 100m、Memory: 100Mi。您对这3Pod有权访问使用,使用的资源按照ACS计费说明进行计费。为确保PIP免密功能的正常运行,请不要移除该工作负载。

  1. ACS(PPU实例)的PIP免密服务是按照集群维度授权的,您可以在ACS产品控制台,通过集群列表找到需要使用PIP服务的集群,点击集群名称进入集群信息页面,在基本信息选项卡中找到安全与审计面板,按照系统指引开启PIP 免密授权

    image.png

    说明
    • 每添加一个PIP 免密授权,会生成一个集群命名空间维度的Service Account,对应命名空间内所有 Pod 均可使用。若其他存量命名空间或者新增命名空间的 Pod 也有此需求,则需要再次添加授权。

    • 通过点击添加授权,选择欲添加的命名空间,可以查看是否已经添加成功,以及(如果存在)存量的Service Account。

    • PIP 免密授权的底层实现方案请参考通过RRSA配置ServiceAccountRAM权限实现Pod权限隔离

  2. 请务必生成授权URL,并在新浏览器页面完成后续的授权操作。image.png

  3. 需要您记录ACS集群的Service Account名称,后续的配置步骤会引用该名称。image.png

  4. 集群开通PIP免密授权之后,在这个集群内相应的命名空间中使用DinD Pod、Buildah Pod、普通PPU Pod都已经具备了PIP免密的基本条件。可以根据您的具体使用场景选取并执行后续步骤。

使用PPU PIP服务

容器开发环境(如DinD、Buildah)

  1. YAML文件添加PIP免密授权字段。

    修改ACS PPU用户容器镜像开发实践中创建DinD Pod/Buildah PodYAML文件,添加spec.serviceAccountName字段。image.png

  2. 根据使用的场景,进行环境设置并使用PIP服务。

    使用DinD的场景

    1. 在启动内层PPU容器的时候要挂载免鉴权必要的环境变量和文件。

      # 使用PTG提供的PIP服务
      id=$(docker run --network host -tid --privileged {ppu-image-uri} bash)
      
      # 将上述启动容器的命令改造成如下的形式:增加4ALIBABA_CLOUD*的环境变量和1个文件挂载
      
      # 使用阿里云提供的PIP服务
      id=$(docker run --network host -tid --privileged \
      -e ALIBABA_CLOUD_OIDC_PROVIDER_ARN=$ALIBABA_CLOUD_OIDC_PROVIDER_ARN \
      -e ALIBABA_CLOUD_ROLE_ARN=$ALIBABA_CLOUD_ROLE_ARN \
      -e ALIBABA_CLOUD_OIDC_TOKEN_FILE=$ALIBABA_CLOUD_OIDC_TOKEN_FILE \
      -e ALIBABA_CLOUD_STS_ENDPOINT=$ALIBABA_CLOUD_STS_ENDPOINT \
      -v /var/run/secrets/ack.alibabacloud.com/rrsa-tokens/:/var/run/secrets/ack.alibabacloud.com/rrsa-tokens/ \
      {ppu-image-uri} bash)
    2. 内部PPU容器内安装免密插件,然后就可以免密使用PIP服务了(与PTG提供的PIP服务相比安装指令只需要替换Index URL,其他方面无区别)。

      # 其他Linux软件包安装步骤省略
      
      # 只示意使用阿里云提供的PIP软件安装相关的步骤
      ## 1. 首先安装免密插件aiext-pypi-plugin
      pip install aiext-pypi-plugin -i http://mirrors.cloud.aliyuncs.com/aiext-pypi/aiext-pypi-plugin/simple --trusted-host mirrors.cloud.aliyuncs.com
      
      ## 2. 然后就可以正常免密安装相关pip wheel包,比如:
      pip install torch==2.5.1 vllm==0.7.3 -i https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu123/simple/
      
      ## 3. PIP安完成后建议清理环境。
      pip uninstall -y aiext-pypi-plugin
      rm ~/.netrc   # 按需清理,或者编辑文件仅删除machine aiext-pypi.mirrors.aliyuncs.com相关内容

    使用Buildah场景

    1. Dockerfile做必要的修改,安装免密插件,然后就可以免密使用PIP服务了(与PTG提供的PIP服务相比安装指令只需要替换Index URL,其他方面无区别)。

      # 如果使用ACS提供的标准镜像
      FROM egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/{image:tag}
      
      # 其他Dockerfile步骤省略
      
      # 只示意使用阿里云提供的PIP软件安装相关的步骤
      ## 1. 设置免密相关Env
      ARG ALIBABA_CLOUD_STS_ENDPOINT
      ARG ALIBABA_CLOUD_OIDC_PROVIDER_ARN
      ARG ALIBABA_CLOUD_ROLE_ARN
      ENV ALIBABA_CLOUD_STS_ENDPOINT=${ALIBABA_CLOUD_STS_ENDPOINT}
      ENV ALIBABA_CLOUD_OIDC_PROVIDER_ARN=${ALIBABA_CLOUD_OIDC_PROVIDER_ARN}
      ENV ALIBABA_CLOUD_ROLE_ARN=${ALIBABA_CLOUD_ROLE_ARN}
      ENV ALIBABA_CLOUD_OIDC_TOKEN_FILE=/mount/rrsa-tokens/token
      
      ## 2. 安装免密插件aiext-pypi-plugin,安装插件限制(暂不支持以python -m pip执行请求)
      
      RUN pip install aiext-pypi-plugin -i http://mirrors.cloud.aliyuncs.com/aiext-pypi/aiext-pypi-plugin/simple --trusted-host mirrors.cloud.aliyuncs.com
      
      ## 3. 每一条pip install前都要增加--mount选项,比如:
      RUN --mount=type=bind,source=/var/run/secrets/ack.alibabacloud.com/rrsa-tokens,target=/mount/rrsa-tokens \
          pip install torch==2.5.1 -i https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu123/simple/
      RUN --mount=type=bind,source=/var/run/secrets/ack.alibabacloud.com/rrsa-tokens,target=/mount/rrsa-tokens \
         pip install vllm==0.7.3 -i https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu123/simple/
      
      ## 4. PIP安完成后建议清理环境
      RUN pip uninstall -y aiext-pypi-plugin
    2. Buildah Podbuildah build命令添加3ALIBABA_CLOUD*环境变量,改造如下:

      # 使用PTG提供的PIP服务
      buildah --storage-driver=overlay build --no-cache -t test:v1 .
      
      # 改造为如下形式,添加4ALIBABA_CLOUD*的构建参数:
      
      # 使用阿里云提供的PIP服务
      buildah --storage-driver=overlay build --no-cache \
      --build-arg ALIBABA_CLOUD_OIDC_PROVIDER_ARN=$ALIBABA_CLOUD_OIDC_PROVIDER_ARN \
      --build-arg ALIBABA_CLOUD_ROLE_ARN=$ALIBABA_CLOUD_ROLE_ARN \
      --build-arg ALIBABA_CLOUD_STS_ENDPOINT=$ALIBABA_CLOUD_STS_ENDPOINT \
      -t demo:v1 .

普通PPU容器环境

说明

您可以查询和获取ACS容器镜像版本发布记录中的AI容器镜像直接启动PPU容器,该容器适用于一次性任务环境。任务完成后,容器Pod将自动退出,且不支持保存对容器环境的修改。

  1. YAML文件添加PIP免密授权字段。

    改造创建PPU PodYAML文件,添加spec.serviceAccountName字段。image.png

  2. 在普通PPU容器内完成环境设置并使用PIP服务。

    # 1. 首先安装免密插件aiext-pypi-plugin,安装插件限制(暂不支持以python -m pip执行请求)
    pip install aiext-pypi-plugin -i http://mirrors.cloud.aliyuncs.com/aiext-pypi/aiext-pypi-plugin/simple --trusted-host mirrors.cloud.aliyuncs.com
    
    # 2. 然后就可以正常免密安装相关pip wheel包,比如:
    pip install torch==2.5.1 vllm==0.7.3 -i https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu123/simple/

阿里云提供PPU PIP服务Index URL

阿里云提供PPU PIP服务的Index URLPTG提供PPU PIP服务的Index URL是一一映射的,映射规则如下表所示。

两种不同的Index URL提供的软件包的内容完全相同。

阿里云提供PPU PIP服务Index URL

PTG提供PPU PIP服务的Index URL

OS绑定的Index URL

(<=v1.5.3)

格式:https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_<cuda-version>/simple/

举例:

  • https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu128/simple/

  • https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu129/simple/

格式:https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_<cuda-version>_index/simple/

举例:

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu128_index/simple/

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu129_index/simple/

OS Free模式Index URL

(v1.6.x引入)

格式:https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/<cuda-version>/simple/

举例:

  • https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/cu128/simple/

  • https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/cu129/simple/

格式:https://art-pub.eng.t-head.cn/artifactory/api/pypi/<cuda-version>_index/simple/

举例:

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/cu128_index/simple/

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/cu129_index/simple/

OS/CUDA Free模式Index URL

(v1.7.x引入)

固定为:https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/pypi_index/simple/

固定为:https://art-pub.eng.t-head.cn/artifactory/api/pypi/pypi_index/simple/

ACS产品使用PTG提供的PPU PIP服务

场景说明

  1. 只支持以公网方式访问PTG提供PIP服务。

  2. 使用之前需要向您的PDSA申请PIP源访问的鉴权信息。

PPU PIP简介

  • PPU PIP源提供适用于PPU产品的框架、基于PPU SDK重编译的开源库,方便您快速搭建生产环境。如果您需要的包不在PPU PIP源范畴内默认会从官方Pypi源拉取软件包。

  • PPU-PIP包清单会按照月度更新,优化版本的安装包为修改过代码并针对PPU做过性能优化的库、框架安装包,社区版本的安装包为在PPU SDK上编译的开源库、框架安装包。

PPU PIP命名规则

1.5.3及以下版本PPU PIPIndex URL命名规则

1.5.3及以下版本PPU PIP源的Python Package Index Base URL的命名规则为:{index-prefix}_{os}_{cuda}_{index-suffix},其中字段的含义如下:

Index URL构成

取值

说明

index-perfix部分

固定为https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu

os部分

枚举值:ubuntualios等(不区分具体OS版本)

ACS场景只有Ubuntu的镜像

cuda部分

枚举值:cu126cu124cu123等,具体以PPU-PIP包清单中公示的为准

index-suffix部分

固定为index/simple/

完整的Python Package Index Base URL举例如下:

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu126_index/simple/

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu124_index/simple/

1.6.x引入的OS Free模式Index URL

1.6.x引入的OS Free模式 PPU PIP源的Python Package Index Base URL的命名规则为:{os-free-index-prefix}{cuda}{os-free-index-suffix},其中字段的含义如下:

OS Free Index URL构成

取值

os-free-index-prefix部分

固定为https://art-pub.eng.t-head.cn/artifactory/api/pypi/

cuda部分

枚举值:cu128cu126cuda124等,具体以PPU-PIP包清单中公示的为准

os-free-index-suffix部分

固定为_index/simple/

说明
  • OS Free模式的PIP软件包可以兼容不同的 OS 版本,在源地址中不需要指定特定的 OS。

  • 新的OS Free模式的PIP软件包仍然支持通过之前的OS绑定模式(v1.5.3及以下版本)的Index URL安装。

完整的OS Free Python Package Index Base URL举例如下:

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/cu128_index/simple/

  • https://art-pub.eng.t-head.cn/artifactory/api/pypi/cu126_index/simple/

1.7.x引入的OS/CUDA Free模式Index URL

1.7.x引入的OS/CUDA Free模式 PPU PIP源的Python Package Index Base URL的命名固定为:

https://art-pub.eng.t-head.cn/artifactory/api/pypi/pypi_index/simple/
说明
  • OS/CUDA Free模式的PIP软件包在安装过程中会自动识别环境中的OS、CUDA、Torch、Python的版本并匹配合适的安装包。

  • 新的OS/CUDA Free模式的PIP软件包仍然支持通过之前的OS Free模式(v1.6.x引入)、OS绑定模式(v1.5.3及以下版本)的Index URL安装。

PPU PIP软件包安装指导

flash-attn==2.4.3+ppu1.5.2.ce为例说明PPU PIP软件包安装指令命名规则:

字段组成部分

2.4.3

+ppu1.5.2

.ce

字段说明

软件版本

发布版本

ce/oe字段

  • ce:开源(Community Edition)

  • oe:针对PPU优化(Optimized Edition)

flash-attn==2.4.3+ppu1.5.2.ce软件包的软件版本、发布版本、ce/oe字段等可以省略,因此理论上您有四种方式安装该软件。

重要

您需要根据PIP List上公布的具体清单和版本信息来选择,并不是每一种组合都能找到具体的软件包。

pip install flash-attn==2.4.3+ppu1.5.2.ce 
pip install flash-attn==2.4.3+ppu1.5.2     # ce/oe字段缺省:默认安装的是“优化版”的包,如果没有则安装“社区版”的包
## 推荐使用如下两种
pip install flash-attn==2.4.3              # 发布版本缺省:默认安装PIP源上该版本的最新编译的版本
pip install flash-attn                     # 软件版本缺省:默认安装一个最新版本

使用示例

完整的PIP软件包安装示例如下:

pip install sglang==0.4.6.post1+ppu1.5.1 -i https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu126_index/simple/
pip install vllm==0.6.6.post1+ppu1.5.1 -i https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu126_index/simple/
pip install mmdet3d==1.4.0 -i https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu126_index/simple/
说明

如果您是ACS产品使用阿里云提供的PPU PIP服务,以上安装指令您仅需替换Index URLhttps://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu126/simple/即可。

常见问题解决

如遇到以下PIPhash值错误,请使用--no-cache指令解决。

image.png

# 如遇到pip源hash值错误,请添加--no-cache指令
pip install --no-cache-dir torch==2.1.2+ppu1.5.2

# 也可以清除当前系统中全部pip缓存再行安装
pip cache purge
pip install torch==2.1.2+ppu1.5.2

附录

使用和修改PIP配置文件

“阿里云提供的PIP服务”和“PTG提供的PIP服务”这两种服务的pip.config配置文件的配置不同,请按需使用。

25.07(包括)之前版本AI容器镜像内使用PIP服务

说明

由于在25.07(包括)之前版本AI容器镜像中内置了PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple/环境变量,在默认使用情况下会屏蔽pip.config配置文件中的新设置,以下为注意事项:

  • 如果您省略-i <index-url>选项运行pip install命令,环境变量会屏蔽pip.config配置文件中的设置导致使用错误的Index URL。为确保正常使用“阿里云提供的PIP服务”和“PTG提供的PIP服务”,您需要运行unset PIP_INDEX_URLexport PIP_INDEX_URL=命令禁用该环境变量。

  • 如果您显式指定-i <index-url>选项运行pip install命令则不受影响。

使用“阿里云提供的PIP服务”

阿里云提供的PIP服务支持一站式安装PPU相关的CUDA PIP软件包和Pypi社区的非CUDAPIP软件包(使用之前您需要参考前序章节完成“ACS PIP免密”设置),即只需要一个PIP源就可以一站式安装所有的PIP软件包。

以下为“阿里云提供的PIP服务”的推荐配置文件,可替换镜像原来默认的配置文件。使用该配置文件您在安装PIP软件包的时候可以不用添加-i <index-url>选项。

说明

以下配置文件中的<cuda-version>需要根据您具体使用的容器镜像的cuda版本(可通过nvcc --version命令查询)进行配置,合法的值包括cu126cu124cu123等。

[global]
index-url = https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_<cuda-version>/simple/
# eg: index-url = https://aiext-pypi.mirrors.aliyuncs.com/pg1-pip/ubuntu_cu126/simple/

[install]
trusted-host = aiext-pypi.mirrors.aliyuncs.com

使用“PTG提供的PIP服务”

PTG提供的PIP服务支持一站式安装PPU相关的CUDA PIP软件包和Pypi社区的非CUDAPIP软件包(使用之前需要向对接的PDSA同学获取“PTG PIP服务”的账密),即只需要一个PIP源就可以一站式安装所有的PIP软件包。

以下为“PTG提供的PIP服务”的推荐配置文件,可替换镜像原来默认的配置文件。使用该配置文件在安装PIP软件包的时候可以不用添加-i <index-url>选项。

说明

以下配置文件中的<cuda-version>需要根据您具体使用的容器镜像的cuda版本(可通过nvcc --version命令查询)进行配置,合法的值包括cu126cu124cu123等。

[global]
index-url = https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_<cuda-version>_index/simple/
# eg: index-url = https://art-pub.eng.t-head.cn/artifactory/api/pypi/ptgai-pypi_ppu_ubuntu_cu126_index/simple/

[install]
trusted-host = art-pub.eng.t-head.cn mirrors.cloud.aliyuncs.com

25.08(包括)之后版本AI容器镜像内使用PIP服务

25.08(包括)之后版本AI容器镜像内已经内置了“阿里云提供的PIP服务”和“PTG提供的PIP服务”的配置文件,可根据具体使用情形动态修改软连接来启用不同的PIP服务配置。

# 在25.08(包括)之后版本AI容器镜像内使用“阿里云提供的PIP服务” (镜像内默认配置,可以不用操作)
## 如果您是从“PTG提供的PIP服务”切换到“阿里云提供的PIP服务”,则需要先移除pip.config软链接 (rm ~/.pip/pip.config)
ln -s ~/.pip/pip.config.aiext-pypi ~/.pip/pip.config

# 在25.08(包括)之后版本AI容器镜像内使用“PTG提供的PIP服务”
ln -s ~/.pip/pip.config.art-pub ~/.pip/pip.config

配置.netrc文件简化手动输入账密问题

在使用“PTG提供的PIP服务”时需要在安装每个PIP软件包时都手动输入PTG PIP账密(提前向对接PDSA获取),使用上很不方便,可考虑使用.netrc自动化身份验证方案来简化这个过程。

# PIP .netrc
cat > ~/.netrc << EOF
machine art-pub.eng.t-head.cn
login <pip-username>
password <pip-passwd>
EOF
说明
  • 25.07(包括)之前版本的AI容器镜像混合使用了mirrors.cloud.aliyuncs.com(不需要账密,便于安装非CUDAPIP软件包)和art-pub.eng.t-head.cn(需要账密,可以安装涉及CUDAPPU版本的PIP软件包)两个源,您可以沿用原来的使用方式,或者参考本文修改为推荐的使用方式。

  • 25.08(包括)之后版本的AI容器镜像内置了2个版本的pip.config配置文件,您可以根据您使用的具体的PIP服务的情形自行切换配置文件。

由于~/.netrc文件包含了明文的登录用户名和密码,请确保~/.netrc 文件的权限为600(即只有您可以读写该文件),同时在镜像开发场景使用PIP服务之后建议您删除该文件。