使用ACS快速构建大语言模型数据存储卷
大语言模型因其庞大的参数量,需要占用大量的磁盘空间来存储模型文件,建议您创建NAS存储卷或OSS存储卷来持久化存储模型文件。本文将介绍如何使用ACS快速构建大语言模型的数据存储卷。
使用前准备
在创建数据存储卷之前,请先创建ACS集群。请记录集群的VPC ID和控制面交换机ID,后续创建存储卷时需要使用。
NAS存储卷
由于大语言模型文件体积较大,每次下载耗时较长,建议将模型数据持久化存储。
步骤一:创建StorageClass
在容器计算服务控制台中选择使用NAS存储卷的集群,进入工作负载 > 自定义资源 > 资源定义 > 使用YAML创建资源。
输入如下YAML创建StorageClass。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nas-llm-sc mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: filesystem fileSystemType: standard storageType: Performance regionId: cn-wulanchabu zoneId: cn-wulanchabu-a vpcId: "vpc-2ze2fxn6popm8c2mzm****" #需要使用NAS存储卷的集群vpc ID,可见本文的使用前准备章节 vSwitchId: "vsw-2zwdg25a2b4y5juy****" #需要使用NAS存储卷的集群vSwitch ID,可见本文的使用前准备章节 accessGroupName: DEFAULT_VPC_GROUP_NAME deleteVolume: "false" provisioner: nasplugin.csi.alibabacloud.com如果您想了解更多相关参数,请参见动态挂载NAS存储卷。
步骤二:创建PVC
在工作负载 > 自定义资源 > 资源定义 > 使用YAML创建资源,输入如下YAML创建PVC。请根据模型大小确认PVC的容量,如Qwen2.5-7B模型需要20GiB容量。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-llm-pvc spec: accessModes: - ReadWriteMany storageClassName: nas-llm-sc resources: requests: storage: 30Gi
步骤三:创建临时工作负载并挂载NAS
创建一个临时工作负载挂载NAS存储卷。在工作负载 > 无状态 > 使用YAML创建资源中,输入如下YAML,单击创建。
该工作负载将创建一个临时Pod,用于下载模型文件至Pod目录中,该目录挂载了实际的NAS存储。模型文件下载完成后,可删除该工作负载(不会删除NAS中的模型文件),减少资源浪费。
apiVersion: apps/v1 kind: Deployment metadata: name: nas-test labels: app: nas-ai-model-download spec: replicas: 1 selector: matchLabels: app: nas-ai-model-download template: metadata: labels: app: nas-ai-model-download spec: containers: - command: - sh - -c - sleep infinity; name: nas-ai-model-download image: ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/base:ubuntu24.04-py312-optimised resources: limits: cpu: 8 memory: 32G requests: cpu: 8 memory: 32G ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: nas-llm-pvc
步骤四:拉取大语言模型文件
在工作负载 > 无状态中,单击刚创建的工作负载
nas-test,在容器组中找到Pod,单击终端进入Pod内部。执行
ls /data命令,确认当前目录为空。依次执行如下命令,下载相应模型文件,本文以Qwen2.5-7B为例。
pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /data/Qwen2.5-7B-Instruct下载完成Qwen2.5-7B-Instruct模型数据后,再次执行
ls /data命令,确认模型文件已下载成功。
步骤五:释放工作负载资源
完成模型文件下载后,可关闭终端页面,在工作负载 > 无状态中,勾选相应工作负载(nas-test),单击批量删除。
后续如需使用下载的模型数据只需在工作负载的YAML挂载本次创建的NAS存储卷即可。
OSS存储卷
OSS存储支持静态挂载方式,详情可见使用OSS静态存储卷。
步骤一:创建OSS bucket
登录OSS控制台,选择Bucket列表 > 创建Bucket,创建Bucket资源。为保证性能最佳,建议将Bucket和集群放在同一个地域。
步骤二:创建PV
登录容器计算服务控制台,选择要使用的集群。在工作负载 > 自定义资源 > 资源定义 > 使用YAML创建资源,使用以下YAML创建PV。
apiVersion: v1 kind: Secret metadata: name: oss-secret namespace: default stringData: akId: <your AccessKey ID> #填写OSS Bucket授权的AK ID akSecret: <your AccessKey Secret> #填写OSS Bucket授权的AK Secret --- apiVersion: v1 kind: PersistentVolume metadata: name: oss-pv labels: alicloud-pvname: oss-pv spec: storageClassName: test capacity: storage: 30Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-pv nodePublishSecretRef: name: oss-secret namespace: default volumeAttributes: bucket: "<your OSS Bucket Name>" url: "<your OSS Bucket Endpoint>" otherOpts: "-o max_stat_cache_size=0 -o allow_other"PV的相关参数说明如下。
参数
说明
alicloud-pvnamePV的标签。用于绑定PVC。
storageClassName该配置仅用于绑定PVC,无需关联实际的StorageClass。
storageOSS存储卷的容量大小。
说明OSS静态卷的容量仅起声明效果,实际容量不受限制,可使用量以OSS控制台显示为准。
accessModes访问模式。
persistentVolumeReclaimPolicy回收策略。
driver驱动类型。此处配置为
ossplugin.csi.alibabacloud.com,表示使用阿里云OSS CSI插件。volumeHandlePV的唯一标识符,与
metadata.name保持一致。nodePublishSecretRef从指定的Secret中获取AccessKey,用于授权认证。
bucketOSS Bucket的名称。请使用实际的OSS Bucket名称替换
bucket的取值。urlOSS Bucket的接入域名(Endpoint)。请使用实际的OSS Bucket的Endpoint替换
url的取值。OSS Bucket和ACS集群属于相同地域时,使用VPC内网的Endpoint。例如
oss-cn-shanghai-internal.aliyuncs.com。OSS Bucket没有地域属性,或者和ACS集群属于不同地域时,使用外网的Endpoint。例如
oss-cn-shanghai.aliyuncs.com。
otherOpts挂载参数。格式为
-o *** -o ***,例如:-o max_stat_cache_size=0 -o allow_other。
步骤三:创建PVC
在工作负载 > 自定义资源 > 资源定义 > 使用YAML创建资源,使用以下YAML创建PVC。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: oss-pvc spec: storageClassName: test accessModes: - ReadWriteMany resources: requests: storage: 30Gi selector: matchLabels: alicloud-pvname: oss-pv
步骤四:创建工作负载并挂载OSS
创建一个临时工作负载挂载OSS存储卷。在工作负载 > 无状态 > 使用YAML创建资源中,输入如下YAML,单击创建。
该工作负载将创建一个临时Pod,用于下载模型文件至Pod目录中,该目录挂载了实际的OSS存储。模型文件下载完成后,可删除该工作负载(不会删除OSS中的模型文件),减少资源浪费。
apiVersion: apps/v1 kind: Deployment metadata: name: oss-test labels: app: oss-ai-model-download spec: replicas: 1 selector: matchLabels: app: oss-ai-model-download template: metadata: labels: app: oss-ai-model-download spec: containers: - command: - sh - -c - sleep infinity; name: oss-ai-model-download image: ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/base:ubuntu24.04-py312-optimised resources: limits: cpu: 8 memory: 32G requests: cpu: 8 memory: 32G ports: - containerPort: 80 volumeMounts: - name: pvc-oss mountPath: /data volumes: - name: pvc-oss persistentVolumeClaim: claimName: oss-pvc
步骤五:拉取大语言模型文件
在工作负载 > 无状态中,单击刚创建的工作负载
oss-test,在容器组中找到Pod,单击终端进入Pod内部。执行
ls /data命令,确认当前目录为空。依次执行如下命令,下载相应模型文件,本文以Qwen2.5-7B为例。
pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /data/Qwen2.5-7B-Instruct下载完成Qwen2.5-7B-Instruct模型数据后,再次执行
ls /data命令,确认模型文件已下载成功。
步骤六:释放工作负载资源
完成模型文件下载后,可关闭终端页面,在工作负载 > 无状态中,选择相应工作负载(oss-test),单击批量删除。
后续如需使用下载的模型数据只需在工作负载的YAML挂载本次创建的OSS存储卷即可。