华为云用户手册

  • 附录:基于vLLM不同模型推理支持最小卡数和最大序列说明 基于vLLM(v0.6.0)部署推理服务时,不同模型推理支持的最小昇腾卡数和对应卡数下的max-model-len长度说明,如下面的表格所示。 以下值是在gpu-memory-utilization为0.9时测试得出,为服务部署所需的最小昇腾卡数及该卡数下推荐的最大max-model-len长度,不代表最佳性能。 以llama2-13b为例,NPU卡显存为32GB时,至少需要2张卡运行推理业务,2张卡运行的情况下,推荐的最大序列max-model-len长度最大是16K,此处的单位K是1024,即16*1024。 测试方法:gpu-memory-utilization为0.9下,以4k、8k、16k递增max-model-len,直至达到能执行静态benchmark下的最大max-model-len。 表1 基于vLLM不同模型推理支持最小卡数和最大序列说明 序号 模型名 32GB显存 64GB显存 最小卡数 最大序列(K) max-model-len 最小卡数 最大序列(K) max-model-len 1 llama-7b 1 16 1 32 2 llama-13b 2 16 1 16 3 llama-65b 8 16 4 16 4 llama2-7b 1 16 1 32 5 llama2-13b 2 16 1 16 6 llama2-70b 8 32 4 64 7 llama3-8b 1 32 1 128 8 llama3-70b 8 32 4 64 9 qwen-7b 1 8 1 32 10 qwen-14b 2 16 1 16 11 qwen-72b 8 8 4 16 12 qwen1.5-0.5b 1 128 1 256 13 qwen1.5-7b 1 8 1 32 14 qwen1.5-1.8b 1 64 1 128 15 qwen1.5-14b 2 16 1 16 16 qwen1.5-32b 4 32 2 64 17 qwen1.5-72b 8 8 4 16 18 qwen1.5-110b -- 8 128 19 qwen2-0.5b 1 128 1 256 20 qwen2-1.5b 1 64 1 128 21 qwen2-7b 1 8 1 32 22 qwen2-72b 8 32 4 64 23 chatglm2-6b 1 64 1 128 24 chatglm3-6b 1 64 1 128 25 glm-4-9b 1 32 1 128 26 baichuan2-7b 1 8 1 32 27 baichuan2-13b 2 4 1 4 28 yi-6b 1 64 1 128 29 yi-9b 1 32 1 64 30 yi-34b 4 32 2 64 31 deepseek-llm-7b 1 16 1 32 32 deepseek-coder-instruct-33b 4 32 2 64 33 deepseek-llm-67b 8 32 4 64 34 mistral-7b 1 32 1 128 35 mixtral-8x7b 4 8 2 32 36 gemma-2b 1 64 1 128 37 gemma-7b 1 8 1 32 38 falcon-11b 1 8 1 64 父主题: 主流开源大模型基于Standard适配PyTorch NPU推理指导(6.3.909)
  • 准备Notebook ModelArts Notebook云上云下,无缝协同,更多关于ModelArts Notebook的详细资料请查看Notebook使用场景介绍。本案例中使用ModelArts的开发环境Notebook部署推理服务进行调试,请按照以下步骤完成Notebook的创建。 登录ModelArts控制台,在贵阳一区域,进入开发环境的Notebook界面,单击右上角“创建”,创建一个开发环境。创建Notebook的详细介绍可以参考创建Notebook实例,此处仅介绍关键步骤。 图1 创建Notebook 创建Notebook时,选择自定义镜像,并选择Step8 注册镜像章中注册的镜像。 图2 选择自定义镜像 资源类型推荐使用专属资源池,规格选到Ascend snt9b,显存规格建议选择64G以上的规格,磁盘规格建议选择500GB及以上。 创建完Notebook后,待Notebook状态变为“运行中”时,打开Notebook,可参考后续章节在Notebook调试环境中部署推理服务。 父主题: 准备工作
  • 准备权重 获取对应模型的权重文件,获取链接参考支持的模型列表和权重文件。 在创建的OBS桶下创建文件夹用以存放权重文件,例如在桶中创建文件夹。将下载的权重文件上传至OBS中,得到OBS下数据集结构。此处以qwen-14b举例。 obs://${bucket_name}/${folder-name}/ #OBS桶名称和文件目录可以自定义创建,此处仅为举例。 ├── config.json ├── generation_config.json ├── gitattributes.txt ├── LICENSE.txt ├── Notice.txt ├── pytorch_model-00001-of-00003.bin ├── pytorch_model-00002-of-00003.bin ├── pytorch_model-00003-of-00003.bin ├── pytorch_model.bin.index.json ├── README.md ├── special_tokens_map.json ├── tokenizer_config.json ├── tokenizer.json ├── tokenizer.model └── USE_POLICY.md └── ... 父主题: 准备工作
  • 创建OBS桶 ModelArts使用 对象存储服务 (Object Storage Service,简称OBS)存储输入输出数据、运行代码和模型文件,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。 本文档也以将运行代码存放OBS为例,请参考创建OBS桶,例如桶名:standard-qwen-14b。并在该桶下创建文件夹目录用于后续存储代码使用,例如:code。 创建的OBS桶和开通的Standard资源必须在同一个Region。
  • 附录:基于vLLM不同模型推理支持最小卡数和最大序列说明 基于vLLM(v0.6.0)部署推理服务时,不同模型推理支持的最小昇腾卡数和对应卡数下的max-model-len长度说明,如下面的表格所示。 以下值是在gpu-memory-utilization为0.9时测试得出,为服务部署所需的最小昇腾卡数及该卡数下推荐的最大max-model-len长度,不代表最佳性能。 以llama2-13b为例,NPU卡显存为32GB时,至少需要2张卡运行推理业务,2张卡运行的情况下,推荐的最大序列max-model-len长度最大是16K,此处的单位K是1024,即16*1024。 测试方法:gpu-memory-utilization为0.9下,以4k、8k、16k递增max-model-len,直至达到能执行静态benchmark下的最大max-model-len。 表1 基于vLLM不同模型推理支持最小卡数和最大序列说明 序号 模型名 32GB显存 64GB显存 最小卡数 最大序列(K) max-model-len 最小卡数 最大序列(K) max-model-len 1 llama-7b 1 16 1 32 2 llama-13b 2 16 1 16 3 llama-65b 8 16 4 16 4 llama2-7b 1 16 1 32 5 llama2-13b 2 16 1 16 6 llama2-70b 8 32 4 64 7 llama3-8b 1 32 1 128 8 llama3-70b 8 32 4 64 9 qwen-7b 1 8 1 32 10 qwen-14b 2 16 1 16 11 qwen-72b 8 8 4 16 12 qwen1.5-0.5b 1 128 1 256 13 qwen1.5-7b 1 8 1 32 14 qwen1.5-1.8b 1 64 1 128 15 qwen1.5-14b 2 16 1 16 16 qwen1.5-32b 4 32 2 64 17 qwen1.5-72b 8 8 4 16 18 qwen1.5-110b - - 8 128 19 qwen2-0.5b 1 128 1 256 20 qwen2-1.5b 1 64 1 128 21 qwen2-7b 1 8 1 32 22 qwen2-72b 8 32 4 64 23 chatglm2-6b 1 64 1 128 24 chatglm3-6b 1 64 1 128 25 glm-4-9b 1 32 1 128 26 baichuan2-7b 1 8 1 32 27 baichuan2-13b 2 4 1 4 28 yi-6b 1 64 1 128 29 yi-9b 1 32 1 64 30 yi-34b 4 32 2 64 31 deepseek-llm-7b 1 16 1 32 32 deepseek-coder-instruct-33b 4 32 2 64 33 deepseek-llm-67b 8 32 4 64 34 mistral-7b 1 32 1 128 35 mixtral-8x7b 4 8 2 32 36 gemma-2b 1 64 1 128 37 gemma-7b 1 8 1 32 38 falcon-11b 1 8 1 64 39 llava-1.5-7b 1 16 1 32 40 llava-1.5-13b 1 8 1 16 41 llava-v1.6-7b 1 16 1 32 42 llava-v1.6-13b 1 8 1 16 43 llava-v1.6-34b 4 32 2 64 44 internvl2-26b 2 8 1 8 45 MiniCPM-v2.6 2 4 1 32 46 llama-3.1-405B-AWQ - - 8 32 47 qwen2-57b-a14b - - 2 16 48 mixtral8x7b 4 4 2 16 49 deepseek-v2-lite-16b 2 4 1 4 50 deepseek-v2-236b - - 8 4 “-”表示不支持。 父主题: 主流开源大模型基于Lite Server适配PyTorch NPU推理指导(6.3.909)
  • 附录:基于vLLM不同模型推理支持最小卡数和最大序列说明 基于vLLM(v0.5.0)部署推理服务时,不同模型推理支持的最小昇腾卡数和对应卡数下的max-model-len长度说明,如下面的表格所示。 以下值是在gpu-memory-utilization为0.9时测试得出,为服务部署所需的最小昇腾卡数及该卡数下推荐的最大max-model-len长度,不代表最佳性能。 以llama2-13b为例,NPU卡显存为32GB时,至少需要2张卡运行推理业务,2张卡运行的情况下,推荐的最大序列max-model-len长度最大是16K,此处的单位K是1024,即16*1024。 测试方法:gpu-memory-utilization为0.9下,以4k、8k、16k递增max-model-len,直至达到能执行静态benchmark下的最大max-model-len。 表1 基于vLLM不同模型推理支持最小卡数和最大序列说明 序号 模型名 32GB显存 64GB显存 最小卡数 最大序列(K) max-model-len 最小卡数 最大序列(K) max-model-len 1 llama-7b 1 16 1 32 2 llama-13b 2 16 1 16 3 llama-65b 8 16 4 16 4 llama2-7b 1 16 1 32 5 llama2-13b 2 16 1 16 6 llama2-70b 8 32 4 64 7 llama3-8b 1 32 1 128 8 llama3-70b 8 32 4 64 9 qwen-7b 1 8 1 32 10 qwen-14b 2 16 1 16 11 qwen-72b 8 8 4 16 12 qwen1.5-0.5b 1 128 1 256 13 qwen1.5-7b 1 8 1 32 14 qwen1.5-1.8b 1 64 1 128 15 qwen1.5-14b 2 16 1 16 16 qwen1.5-32b 4 32 2 64 17 qwen1.5-72b 8 8 4 16 18 qwen1.5-110b -- 8 128 19 qwen2-0.5b 1 128 1 256 20 qwen2-1.5b 1 64 1 128 21 qwen2-7b 1 8 1 32 22 qwen2-72b 8 32 4 64 23 chatglm2-6b 1 64 1 128 24 chatglm3-6b 1 64 1 128 25 glm-4-9b 1 32 1 128 26 baichuan2-7b 1 8 1 32 27 baichuan2-13b 2 4 1 4 28 yi-6b 1 64 1 128 29 yi-9b 1 32 1 64 30 yi-34b 4 32 2 64 31 deepseek-llm-7b 1 16 1 32 32 deepseek-coder-instruct-33b 4 32 2 64 33 deepseek-llm-67b 8 32 4 64 34 mistral-7b 1 32 1 128 35 mixtral-8x7b 4 8 2 32 36 gemma-2b 1 64 1 128 37 gemma-7b 1 8 1 32 38 falcon-11b 1 8 1 64 父主题: 主流开源大模型基于Standard适配PyTorch NPU推理指导(6.3.908)
  • 准备Notebook ModelArts Notebook云上云下,无缝协同,更多关于ModelArts Notebook的详细资料请查看Notebook使用场景介绍。本案例中使用ModelArts的开发环境Notebook部署推理服务进行调试,请按照以下步骤完成Notebook的创建。 登录ModelArts控制台,在贵阳一区域,进入开发环境的Notebook界面,单击右上角“创建”,创建一个开发环境。创建Notebook的详细介绍可以参考创建Notebook实例,此处仅介绍关键步骤。 图1 创建Notebook 创建Notebook时,选择自定义镜像,并选择Step8 注册镜像章中注册的镜像。 图2 选择自定义镜像 资源类型推荐使用专属资源池,规格选到Ascend snt9b,显存规格建议选择64G以上的规格,磁盘规格建议选择500GB及以上。 创建完Notebook后,待Notebook状态变为“运行中”时,打开Notebook,可参考后续章节在Notebook调试环境中部署推理服务。 父主题: 准备工作
  • 准备权重 获取对应模型的权重文件,获取链接参考支持的模型列表和权重文件。 在创建的OBS桶下创建文件夹用以存放权重文件,例如在桶中创建文件夹。将下载的权重文件上传至OBS中,得到OBS下数据集结构。此处以qwen-14b举例。 obs://${bucket_name}/${folder-name}/ #OBS桶名称和文件目录可以自定义创建,此处仅为举例。 ├── config.json ├── generation_config.json ├── gitattributes.txt ├── LICENSE.txt ├── Notice.txt ├── pytorch_model-00001-of-00003.bin ├── pytorch_model-00002-of-00003.bin ├── pytorch_model-00003-of-00003.bin ├── pytorch_model.bin.index.json ├── README.md ├── special_tokens_map.json ├── tokenizer_config.json ├── tokenizer.json ├── tokenizer.model └── USE_POLICY.md └── ... 父主题: 准备工作
  • 创建OBS桶 ModelArts使用对象存储服务(Object Storage Service,简称OBS)存储输入输出数据、运行代码和模型文件,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。 本文档也以将运行代码存放OBS为例,请参考创建OBS桶,例如桶名:standard-qwen-14b。并在该桶下创建文件夹目录用于后续存储代码使用,例如:code。 创建的OBS桶和开通的Standard资源必须在同一个Region。
  • 附录:基于vLLM不同模型推理支持最小卡数和最大序列说明 基于vLLM(v0.5.0)部署推理服务时,不同模型推理支持的最小昇腾卡数和对应卡数下的max-model-len长度说明,如下面的表格所示。 以下值是在gpu-memory-utilization为0.9时测试得出,为服务部署所需的最小昇腾卡数及该卡数下推荐的最大max-model-len长度,不代表最佳性能。 以llama2-13b为例,NPU卡显存为32GB时,至少需要2张卡运行推理业务,2张卡运行的情况下,推荐的最大序列max-model-len长度最大是16K,此处的单位K是1024,即16*1024。 测试方法:gpu-memory-utilization为0.9下,以4k、8k、16k递增max-model-len,直至达到能执行静态benchmark下的最大max-model-len。 表1 基于vLLM不同模型推理支持最小卡数和最大序列说明 序号 模型名 32GB显存 64GB显存 最小卡数 最大序列(K) max-model-len 最小卡数 最大序列(K) max-model-len 1 llama-7b 1 16 1 32 2 llama-13b 2 16 1 16 3 llama-65b 8 16 4 16 4 llama2-7b 1 16 1 32 5 llama2-13b 2 16 1 16 6 llama2-70b 8 32 4 64 7 llama3-8b 1 32 1 128 8 llama3-70b 8 32 4 64 9 qwen-7b 1 8 1 32 10 qwen-14b 2 16 1 16 11 qwen-72b 8 8 4 16 12 qwen1.5-0.5b 1 128 1 256 13 qwen1.5-7b 1 8 1 32 14 qwen1.5-1.8b 1 64 1 128 15 qwen1.5-14b 2 16 1 16 16 qwen1.5-32b 4 32 2 64 17 qwen1.5-72b 8 8 4 16 18 qwen1.5-110b -- 8 128 19 qwen2-0.5b 1 128 1 256 20 qwen2-1.5b 1 64 1 128 21 qwen2-7b 1 8 1 32 22 qwen2-72b 8 32 4 64 23 chatglm2-6b 1 64 1 128 24 chatglm3-6b 1 64 1 128 25 glm-4-9b 1 32 1 128 26 baichuan2-7b 1 8 1 32 27 baichuan2-13b 2 4 1 4 28 yi-6b 1 64 1 128 29 yi-9b 1 32 1 64 30 yi-34b 4 32 2 64 31 deepseek-llm-7b 1 16 1 32 32 deepseek-coder-instruct-33b 4 32 2 64 33 deepseek-llm-67b 8 32 4 64 34 mistral-7b 1 32 1 128 35 mixtral-8x7b 4 8 2 32 36 gemma-2b 1 64 1 128 37 gemma-7b 1 8 1 32 38 falcon-11b 1 8 1 64 父主题: 主流开源大模型基于Lite Server适配PyTorch NPU推理指导(6.3.908)
  • 附录:基于vLLM不同模型推理支持最小卡数和最大序列说明 基于vLLM(v0.6.0)部署推理服务时,不同模型推理支持的最小昇腾卡数和对应卡数下的max-model-len长度说明,如下面的表格所示。 以下值是在gpu-memory-utilization为0.9时测试得出,为服务部署所需的最小昇腾卡数及该卡数下推荐的最大max-model-len长度,不代表最佳性能。 以llama2-13b为例,NPU卡显存为32GB时,至少需要2张卡运行推理业务,2张卡运行的情况下,推荐的最大序列max-model-len长度最大是16K,此处的单位K是1024,即16*1024。 测试方法:gpu-memory-utilization为0.9下,以4k、8k、16k递增max-model-len,直至达到能执行静态benchmark下的最大max-model-len。 表1 基于vLLM不同模型推理支持最小卡数和最大序列说明 序号 模型名 32GB显存 64GB显存 最小卡数 最大序列(K) max-model-len 最小卡数 最大序列(K) max-model-len 1 llama-7b 1 16 1 32 2 llama-13b 2 16 1 16 3 llama-65b 8 16 4 16 4 llama2-7b 1 16 1 32 5 llama2-13b 2 16 1 16 6 llama2-70b 8 32 4 64 7 llama3-8b 1 32 1 128 8 llama3-70b 8 32 4 64 9 qwen-7b 1 8 1 32 10 qwen-14b 2 16 1 16 11 qwen-72b 8 8 4 16 12 qwen1.5-0.5b 1 128 1 256 13 qwen1.5-7b 1 8 1 32 14 qwen1.5-1.8b 1 64 1 128 15 qwen1.5-14b 2 16 1 16 16 qwen1.5-32b 4 32 2 64 17 qwen1.5-72b 8 8 4 16 18 qwen1.5-110b -- 8 128 19 qwen2-0.5b 1 128 1 256 20 qwen2-1.5b 1 64 1 128 21 qwen2-7b 1 8 1 32 22 qwen2-72b 8 32 4 64 23 chatglm2-6b 1 64 1 128 24 chatglm3-6b 1 64 1 128 25 glm-4-9b 1 32 1 128 26 baichuan2-7b 1 8 1 32 27 baichuan2-13b 2 4 1 4 28 yi-6b 1 64 1 128 29 yi-9b 1 32 1 64 30 yi-34b 4 32 2 64 31 deepseek-llm-7b 1 16 1 32 32 deepseek-coder-instruct-33b 4 32 2 64 33 deepseek-llm-67b 8 32 4 64 34 mistral-7b 1 32 1 128 35 mixtral-8x7b 4 8 2 32 36 gemma-2b 1 64 1 128 37 gemma-7b 1 8 1 32 38 falcon-11b 1 8 1 64 父主题: 主流开源大模型基于Lite Cluster适配PyTorch NPU推理指导(6.3.909)
  • 支持的模型列表和权重文件 本方案支持vLLM的v0.6.0版本。不同vLLM版本支持的模型列表有差异,具体如表1所示。 表1 支持的模型列表和权重获取地址 序号 模型名称 是否支持fp16/bf16推理 是否支持W4A16量化 是否支持W8A8量化 是否支持W8A16量化 是否支持 kv-cache-int8量化 开源权重获取地址 1 llama-7b √ √ √ √ √ https://huggingface.co/huggyllama/llama-7b 2 llama-13b √ √ √ √ √ https://huggingface.co/huggyllama/llama-13b 3 llama-65b √ √ √ √ √ https://huggingface.co/huggyllama/llama-65b 4 llama2-7b √ √ √ √ √ https://huggingface.co/meta-llama/Llama-2-7b-chat-hf 5 llama2-13b √ √ √ √ √ https://huggingface.co/meta-llama/Llama-2-13b-chat-hf 6 llama2-70b √ √ √ √ √ https://huggingface.co/meta-llama/Llama-2-70b-hf https://huggingface.co/meta-llama/Llama-2-70b-chat-hf (推荐) 7 llama3-8b √ √ √ √ √ https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct 8 llama3-70b √ √ √ √ √ https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct 9 yi-6b √ √ √ √ √ https://huggingface.co/01-ai/Yi-6B-Chat 10 yi-9b √ √ √ √ √ https://huggingface.co/01-ai/Yi-9B 11 yi-34b √ √ √ √ √ https://huggingface.co/01-ai/Yi-34B-Chat 12 deepseek-llm-7b √ x x x x https://huggingface.co/deepseek-ai/deepseek-llm-7b-chat 13 deepseek-coder-33b-instruct √ x x x x https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct 14 deepseek-llm-67b √ x x x x https://huggingface.co/deepseek-ai/deepseek-llm-67b-chat 15 qwen-7b √ √ √ √ x https://huggingface.co/Qwen/Qwen-7B-Chat 16 qwen-14b √ √ √ √ x https://huggingface.co/Qwen/Qwen-14B-Chat 17 qwen-72b √ √ √ √ x https://huggingface.co/Qwen/Qwen-72B-Chat 18 qwen1.5-0.5b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-0.5B-Chat 19 qwen1.5-7b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-7B-Chat 20 qwen1.5-1.8b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat 21 qwen1.5-14b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-14B-Chat 22 qwen1.5-32b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-32B/tree/main 23 qwen1.5-72b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-72B-Chat 24 qwen1.5-110b √ √ √ √ x https://huggingface.co/Qwen/Qwen1.5-110B-Chat 25 qwen2-0.5b √ √ √ √ x https://huggingface.co/Qwen/Qwen2-0.5B-Instruct 26 qwen2-1.5b √ √ √ √ x https://huggingface.co/Qwen/Qwen2-1.5B-Instruct 27 qwen2-7b √ √ x √ x https://huggingface.co/Qwen/Qwen2-7B-Instruct 28 qwen2-72b √ √ √ √ x https://huggingface.co/Qwen/Qwen2-72B-Instruct 29 baichuan2-7b √ x x √ x https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat 30 baichuan2-13b √ x x √ x https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat 31 gemma-2b √ x x x x https://huggingface.co/google/gemma-2b 32 gemma-7b √ x x x x https://huggingface.co/google/gemma-7b 33 chatglm2-6b √ x x x x https://huggingface.co/THUDM/chatglm2-6b 34 chatglm3-6b √ x x x x https://huggingface.co/THUDM/chatglm3-6b 35 glm-4-9b √ x x x x https://huggingface.co/THUDM/glm-4-9b-chat 36 mistral-7b √ x x x x https://huggingface.co/mistralai/Mistral-7B-v0.1 37 mixtral-8x7b √ x x x x https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1 38 falcon-11b √ x x x x https://huggingface.co/tiiuae/falcon-11B/tree/main 39 qwen2-57b-a14b √ x x x x https://huggingface.co/Qwen/Qwen2-57B-A14B-Instruct 40 llama3.1-8b √ √ √ √ x https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct 41 llama3.1-70b √ √ √ √ x https://huggingface.co/meta-llama/Meta-Llama-3.1-70B-Instruct 42 llama-3.1-405B √ √ x x x https://huggingface.co/hugging-quants/Meta-Llama-3.1-405B-Instruct-AWQ-INT4 43 llava-1.5-7b √ x x x x https://huggingface.co/llava-hf/llava-1.5-7b-hf/tree/main 44 llava-1.5-13b √ x x x x https://huggingface.co/llava-hf/llava-1.5-13b-hf/tree/main 45 llava-v1.6-7b √ x x x x https://huggingface.co/llava-hf/llava-v1.6-vicuna-7b-hf/tree/main 46 llava-v1.6-13b √ x x x x https://huggingface.co/llava-hf/llava-v1.6-vicuna-13b-hf/tree/main 47 llava-v1.6-34b √ x x x x llava-hf/llava-v1.6-34b-hf at main (huggingface.co) 48 internvl2-26B √ x x x x OpenGVLab/InternVL2-26B at main (huggingface.co) 49 MiniCPM-v2.6 √ x x x x https://huggingface.co/openbmb/MiniCPM-V-2_6/tree/main 50 deepseek-v2-236b x x √ x x https://huggingface.co/deepseek-ai/DeepSeek-V2 51 deepseek-v2-lite-16b √ x √ x x https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite 各模型支持的卡数请参见附录:基于vLLM不同模型推理支持最小卡数和最大序列说明章节。
  • 约束限制 本方案目前仅适用于部分企业客户。 本文档适配昇腾云ModelArts 6.3.909版本,请参考软件配套版本获取配套版本的软件包,请严格遵照版本配套关系使用本文档。 资源规格推荐使用“西南-贵阳一”Region上的Lite k8s Cluster和昇腾Snt9B资源。 本文档中的CCE集群版本选择v1.27~1.28。版本使用的容器引擎为Containerd。 推理部署使用的服务框架是vLLM。vLLM支持v0.6.0版本。 支持FP16和BF16数据类型推理。 Lite k8s Cluster驱动版本推荐为23.0.6。 适配的CANN版本是cann_8.0.rc3。
  • 通过start_profile和stop_profile方法获取Profiling数据 通过指定环境变量VLLM_TORCH_PROFILER_DIR确定Profiling数据存放路径,开启Profiling功能。 例如:export VLLM_TORCH_PROFILER_DIR=".torch_profile",指定将Profiling结果存放在当前目录的 .torch_profile目录下。 初始化LLM对象,调用start_profile,stop_profile,中间是任何想profile的操作。
  • 通过offline_profile.py脚本获取Profiling数据 脚本路径是:tools/llm_evaluation/benchmark_tools/offline_profile.py 脚本参数: --save-path:Profiling结果存放路径,默认是".torch_profile"。 --prefill:收集prefill过程的数据。 --decode:收集decode过程的数据。 --with-stack:记录调用堆栈。 --with-modules:记录模块层级。 --record-shapes:记录input shape和input type。 --profile-memory:记录内存使用。 --profiler-level:日志记录层次。字符串类型,三个有效值 "level0"、"level1"、"level2",默认为level1。 "level0: Collects upper-layer application data, lower-layer NPU data (Ascend Headware data), and information about operators executed on the NPU.\n" "level1: On the basis of Level0, collect Ascend CL data at the CANN layer and AI Core performance indicators executed on the NPU, and enable aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization.\n" "level2: Collect GE and Runtime data, HCCL and AI CPU data at the CANN layer, and enable aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization on the basis of Level1." --prompt-len:prompt长度,默认256。 --batch-size:默认1。 --output-len:输出长度,默认5。 --temperature:浮点数,默认0。 --top-p:浮点数,默认0.8。 --top-k:默认20。 --repetition-penalty,默认1。 请求示例: python tools/llm_evaluation/benchmark_tools/offline_profile.py \ --save-path .torch_profile \ --model /nfs-data/model/nlp/Qwen2/Qwen2-0.5B/ \ --record-shapes \ --with-stack \ --with-modules \ --output-len 118 \ --prefill \ --decode \ --enforce-eager
  • 什么是Chunked Prefill Chunked Prefill(Splitfuse)特性的目的是将长prompt request分解成更小的块,并在多个forward step中进行调度,只有最后一块的forward完成后才开始这个prompt request的生成。将短prompt request组合以精确填充step的空隙,每个step的计算量基本相等,达到所有请求平均延迟更稳定的目的。 关键行为: 长prompts被分解成更小的块,并在多个迭代中进行调度,只有最后一遍迭代执行输出生成token。 构建batch时,一个prefill块和其余槽位用decode填充,降低仅decode组batch的成本。 其优势主要包括: 提升效率:通过合理组合长短prompt,保持模型高吞吐量运行。 增强一致性:统一前向传递大小,降低延迟波动,使生成频率更稳定。 降低时延:通过平衡prefill和decode的计算利用率,降低请求P90_ttft(time to first token)、P90_tpot(time per output token)时延。在短输入、短输出且高并发的场景优势明显。
  • 开启动态配比调整功能 动态配比调整功能允许服务在运行时根据负载调整全量和增量的数量配比。例如启动时设置全量个数为2,增量个数为2。开启此功能后,服务能够根据负载的特性自动调整为1:3或3:1的全量增量比。 全量和增量的启动方法无需变化,scheduler实例启动时需要额外配置一些参数,示例命令如下: export GLOBAL_RANK_TABLE_FILE_PATH=global_ranktable_10.**.**.18.json export RANK_TABLE_FILE_PATH=local_rank_table_10.**.**.18_host.json export NODE_PORTS=8088,8089 export USE_OPENAI=1 sh AscendCloud-LLM/llm_tools/PD_separate/start_servers.sh \ --model=${model} \ --tensor-parallel-size=2 \ --max-model-len=4096 \ --max-num-seqs=256 \ --max-num-batched-tokens=4096 \ --host=0.0.0.0 \ --port=9000 \ --served-model-name ${served-model-name} \ --dynamic \ --replan-interval=6000 \ --workload-results="workload_dir" \ --max-files=2 \ --max-workload-nums=100 \ --profile-input-len="64,256,2048" \ --profile-out-len="4,16,64,128" \ --profile-results="training_data_8b-063.json" \ --ratio-model="ProducerConsumer" # 当前schduler端口port对外提供推理服务,故使用该端口进行性能验证和精度对齐 基本参数请参考步骤四:启动scheduler实例,额外的参数如下: --dynamic:是否开启自适应角色转换,如果不开启,则下方参数无效 --replan-interval:重新计算pd配比转换的间隔时间,默认6000,单位为秒 --profile-input-len:profiling的输入长度,默认"64,256,2048",服务会在启动时测算这些输入长度数据的执行时间,该数量会影响服务启动时间,建议不超过10个 --profile-out-len:profiling的输出长度,默认"4,16,64,128",服务会在启动时测算这些输出长度数据的执行时间,该数量会影响服务启动时间,建议不超过5个 --profile-results:profiling结果的输出地址,用于估算配比的重要数据,可重复使用及用于离线计算配比 --ratio-model:配比计算方法,当前仅支持"ProducerConsumer" --workload-results:定期将处理过的请求输出到该目录下,务必是一个空文件夹 --max-files:记录请求的最大文件数量 --max-workload-num: 每个文件记录的最大请求数量,当请求数超过该值时才会触发配比调整 除了在线配比调整的功能之外,还提供了额外离线估算最优配比的工具,用户可以在服务启动之前用此工具获得一个较优的配比,使用示例如下: python ${LLM_TOOLS_PATH}/PD_separate/ratio_offline.py \ --model=${model} \ --tensor-parallel-size=1 \ --max-model-len=8192 \ --max-num-seqs=256 \ --max-num-batched-tokens=8192 \ --ratio-model=ProducerConsumer \ --block-num=476 \ --instance-num=6 \ --input-len=1024 \ --output-len=48 \ --request-rate=10 \ --num-prompts=1000 \ --arrival-pattern=poisson \ --profile-results=training_data_8b-063.json 其中常见的参数如下: --model:HuggingFace下载的模型文件,此工具不会加载模型权重,也无需NPU --max-num-seqs:同时处理的最大句子数量 --max-num-batched-tokens:最多会使用多少token,必须大于或等于--max-model-len,推荐使用4096或8192 --tensor-parallel-size:模型并行数量 --ratio-model:配比计算方法,当前仅支持"ProducerConsumer" --block-num: 全量或增量实例可用的free block数,可通过步骤二:启动全量推理实例中的启动日志获得 --instance-num: 全量+增量的实例总个数 --input-len: 模拟数据的输入长度 --output-len: 模拟数据的输出长度 --request-rate: 平均每秒发送的请求个数(request per seconds) --num-prompts: 模拟的请求总数 --arrival-pattern: 请求发送的pattern,当前仅支持poisson --profile-results: profiling的结果文件,可通过在scheduler实例开启动态功能获得,较大影响配比计算的准确率,建议先获取此文件后使用该工具
  • 安装AscendModelNano AscendModelNano是FASP剪枝工具,适配代码存放在代码包AscendCloud-LLM-x.x.x.zip的llm_tools/ModelNano目录下。 AscendModelNano工具需要安装,执行命令如下。 cd ModelNano # 进入ModelNano工具目录 bash build.sh AscendModelNano # 编译 pip install dist/AscendModelNano-0.1.0-py3-none-any.whl #安装
  • 模型剪枝 可以在Huggingface开源社区获取需剪枝的模型权重或者获得业务上已预训练好的模型权重,通过AscendModelNano工具进行FASP剪枝。 CUDA_VISIBLE_DEVI CES =0 python3 -m model_nano.prune_llama \ --model $MODEL_FILE \ --dataset $DATASET \ --nsamples $SAMPLE \ --sparsity $SPARSITY \ --save $SAVE_DIR \ --seed 0 \ --memory_efficient \ --eval 参数介绍: model:必选,要进行压缩的原始模型地址 save:必选,压缩后模型的保存的地址 dataset:可选,压缩模型所用的校准数据,可选范围["wikitext2","c4"],默认wikitext2。 nsamples:可选,压缩模型所用的校准数据样本数量,默认128。 seed:可选,随机数种子。 sparsity:可选,剪枝稀疏度,稀疏度越大剪枝压缩率越高,默认0.1。 memory_efficient:可选,优化剪枝过程中的显存使用,推荐传入。 eval:可选,是否进行压缩后模型的PPL评估。如果输入此参数,在wikitext2以及c4数据上进行PPL计算。 具体的代码示例如下。 GPU=0 SPARSITY=0.1 MODEL="llama-3-8b" SAMPLE=128 DATASET="wikitext2" MODEL_FILE="/mnt/models/$MODEL" SAVE_DIR="/mnt/save_models/${MODEL}_${SPARSITY}_${DATASET}_n${SAMPLE}" CUDA_VISIBLE_DEVICES=$GPU python3 -m model_nano.prune_llama \ --model $MODEL_FILE \ --dataset $DATASET \ --nsamples $SAMPLE \ --sparsity $SPARSITY \ --save $SAVE_DIR \ --seed 0 \ --memory_efficient \ --eval
  • FASP剪枝 FASP剪枝是一种结构化稀疏剪枝方法,能有效降低模型显存以及需要部署的资源依赖,减小推理过程中的计算量,降低增量推理时延,提升吞吐。 FASP (Fast and Accurate Structured Pruning) 一种针对LLM进行结构化剪枝的算法,可以减少大模型对于内存和计算资源的需求,提升推理速度,同时其具备比较高的剪枝速度。使用FASP对大模型进行稀疏化剪枝,可以在几乎不影响推理精度情况下,可以有效提升推理性能(吞吐等)。 本文主要应用FASP对LLM进行剪枝压缩。
  • 使用llm-compressor工具量化Deepseek-v2系列模型 本章节介绍如何在GPU的机器上使用开源量化工具llm-compressor量化模型权重,然后在NPU的机器上实现推理量化。 具体操作如下: 开始之前,请确保安装了以下库: git clone https://github.com/vllm-project/llm-compressor.git cd llm-compressor pip install -e . 修改examples/quantizing_moe/deepseek_moe_w8a8_int8.py中的代码: 1)如果本地已有权重,请将MODEL_ID修改为权重路径; MODEL_ID = "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct" 2)如果量化Deepseek-V2-236B模型,请将num_gpus改为8; device_map = calculate_offload_device_map( MODEL_ID, reserve_for_hessians=True, num_gpus=8, torch_dtype=torch.bfloat16, trust_remote_code=True, ) 3)为减少量化时间,建议将以下参数设置为512; NUM_CALIBRATION_SAMPLES = 512 执行权重量化: python deepseek_moe_w8a8_int8.py 1、执行权重量化过程中,请保证使用的GPU卡上没有其他进程,否则可能出现OOM; 2、如果量化Deepseek-v2-236b模型,大致需要10+小时。
  • SmoothQuant量化模型 本章节介绍如何使用SmoothQuant量化工具实现推理量化。 SmoothQuant量化工具使用到的脚本存放在代码包AscendCloud-LLM-x.x.x.zip的llm_tools目录下。 代码目录如下: AutoSmoothQuant #量化工具 ├── ascend_autosmoothquant_adapter # 昇腾量化使用的算子模块 ├── autosmoothquant # 量化代码 ├── build.sh # 安装量化模块的脚本 ... 执行如下命令进行权重转换。 cd autosmoothquant/examples/ python smoothquant_model.py --model-path /home/ma-user/llama-2-7b/ --quantize-model --generate-scale --dataset-path /data/nfs/user/val.jsonl --scale-output scales/llama2-7b.pt --model-output quantized_model/llama2-7b --per-token --per-channel 参数说明: --model-path:原始模型权重路径。 --quantize-model:体现此参数表示会生成量化模型权重。不需要生成量化模型权重时,不体现此参数 --generate-scale:体现此参数表示会生成量化系数,生成后的系数保存在--scale-output参数指定的路径下。如果有指定的量化系数,则不需此参数,直接读取--scale-input参数指定的量化系数输入路径即可。 --dataset-path:数据集路径,推荐使用:https://huggingface.co/datasets/mit-han-lab/pile-val-backup/resolve/main/val.jsonl.zst。 --scale-output:量化系数保存路径。 --scale-input:量化系数输入路径,如果之前已生成过量化系数,则可指定该参数,跳过生成scale的过程。 --model-output:量化模型权重保存路径。 --smooth-strength:平滑系数,推荐先指定为0.5,后续可以根据推理效果进行调整。 --per-token:激活值量化方法,如果指定则为per-token粒度量化,否则为per-tensor粒度量化。 --per-channel:权重量化方法,如果指定则为per-channel粒度量化,否则为per-tensor粒度量化。 参考启动推理服务,启动推理服务时添加如下命令。 -q smoothquant 或者 --quantization smoothquant
  • 附录:rank_table_file.json文件 rank_table_file.json文件样例如下,需要根据实际修改server_count,device_ip,server_id,container_ip参数,每台机器上的rank_table_file.json文件内容一致。在步骤三:创建rank_table_file.json步骤中会用到。 server_count:节点个数。当前默认为2。 device_ip:当前卡的IP地址,2台机器共16张卡。device_ip查询命令 for i in {0..7};do hccn_tool -i $i -ip -g; done server_id:当前Server节点的IP地址,涉及2台机器。 container_ip:容器IP地址,无特殊配置时与server_id保存一致。 { "server_count": "2", "server_list": [ { "device": [ { "device_id": "0", "device_ip": "29.82.85.12", "rank_id": "0" }, { "device_id": "1", "device_ip": "29.82.98.67", "rank_id": "1" }, { "device_id": "2", "device_ip": "29.82.133.21", "rank_id": "2" }, { "device_id": "3", "device_ip": "29.82.175.69", "rank_id": "3" }, { "device_id": "4", "device_ip": "29.82.13.154", "rank_id": "4" }, { "device_id": "5", "device_ip": "29.82.140.51", "rank_id": "5" }, { "device_id": "6", "device_ip": "29.82.157.87", "rank_id": "6" }, { "device_id": "7", "device_ip": "29.82.15.225", "rank_id": "7" } ], "server_id": "7.242.110.112", "container_ip": "7.242.110.112" }, { "device": [ { "device_id": "0", "device_ip": "29.82.177.28", "rank_id": "8" }, { "device_id": "1", "device_ip": "29.82.41.231", "rank_id": "9" }, { "device_id": "2", "device_ip": "29.82.16.3", "rank_id": "10" }, { "device_id": "3", "device_ip": "29.82.154.20", "rank_id": "11" }, { "device_id": "4", "device_ip": "29.82.56.73", "rank_id": "12" }, { "device_id": "5", "device_ip": "29.82.177.138", "rank_id": "13" }, { "device_id": "6", "device_ip": "29.82.29.230", "rank_id": "14" }, { "device_id": "7", "device_ip": "29.82.1.176", "rank_id": "15" } ], "server_id": "7.242.104.54", "container_ip": "7.242.104.54" } ], "status": "completed", "version": "1.0" } 父主题: DeepSeek模型基于ModelArts Lite Server适配MindIE推理部署指导
  • 步骤八:下载模型权重 模型权重(可选择)InternVL2-8B, InternVL2-26B, InternVL2-40B, InternVL2.5-4B, InternVL2.5-8B 手动下载放置在${container_work_dir}/InternVL/internvl_chat/pretrained路径下, pretrained目录需手动创建。 https://huggingface.co/OpenGVLab/InternVL2-8B/tree/main https://huggingface.co/OpenGVLab/InternVL2-26B/tree/main https://huggingface.co/OpenGVLab/InternVL2-40B/tree/main https://huggingface.co/OpenGVLab/InternVL2_5-4B https://huggingface.co/OpenGVLab/InternVL2_5-8B
  • 步骤九:开始训练 打开需要训练的模型internvl2.0/internvl2.5文件: vim ${container_work_dir}/InternVL/internvl_chat/shell/internvl2.0/2nd_finetune/internvl*.sh vim ${container_work_dir}/InternVL/internvl_chat/shell/internvl2.5/2nd_finetune/internvl*.sh 修改文件参数路径: torchrun \ # 模型权重路径,需要指定成真实模型权重的路径 --model_name_or_path "${container_work_dir}/model/InternVL2_5-4B" \ # 模型数据路径,需要指定成真实的数据路径 --meta_path "${container_work_dir}/InternVL/internvl_chat/shell/data/coco_caption.json" \ internvl2.0单机训练 cd ${container_work_dir}/InternVL/internvl_chat # 8B全参微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_full.sh # 8Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_lora.sh # 26Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_26b_internlm2_20b_dynamic_res_2nd_finetune_lora.sh # 40Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_40b_hermes2_yi_34b_dynamic_res_2nd_finetune_lora.sh internvl2.5单机训练 # 4B全参微调 GPUS=8 PER_DEVICE_BATCH_SIZE=4 sh shell/internvl2.5/2nd_finetune/internvl2_5_4b_dynamic_res_2nd_finetune_full.sh # 4Blora微调 GPUS=2 PER_DEVICE_BATCH_SIZE=4 sh shell/internvl2.5/2nd_finetune/internvl2_5_4b_dynamic_res_2nd_finetune_lora.sh # 8B全参微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.5/2nd_finetune/internvl2_5_8b_dynamic_res_2nd_finetune_full.sh # 8Blora微调 GPUS=2 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.5/2nd_finetune/internvl2_5_8b_dynamic_res_2nd_finetune_lora.sh internvl2.0多机训练 cd ${container_work_dir}/InternVL/internvl_chat # 8B lora GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_lora_multi.sh # 8B full GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_full_multi.sh # 26B lora GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_26b_internlm2_20b_dynamic_res_2nd_finetune_lora_multi.sh # 26B full GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_26b_internlm2_20b_dynamic_res_2nd_finetune_full_multi.sh # 40B lora GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_40b_hermes2_yi_34b_dynamic_res_2nd_finetune_lora_multi.sh # 40B full GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_40b_hermes2_yi_34b_dynamic_res_2nd_finetune_full_multi.sh internvl2.5多机训练 # 4B全参微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.5/2nd_finetune/internvl2_5_4b_dynamic_res_2nd_finetune_full.sh # 4Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.5/2nd_finetune/internvl2_5_4b_dynamic_res_2nd_finetune_lora.sh # 8B全参微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.5/2nd_finetune/internvl2_5_8b_dynamic_res_2nd_finetune_full.sh # 8Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.5/2nd_finetune/internvl2_5_8b_dynamic_res_2nd_finetune_lora.sh 参数说明: NODE_NUM:机器数量。 NODE_RANK:机器rank num,主机为0,其余递增。 MASTER_ADDR:主机IP地址。 GPUS: 每台机器npu卡数。 PER_DEVICE_BATCH_SIZE:每张卡batch size。 model_name_or_path:模型权重路径。 meta_path:下载的数据集配置文件coco_caption.json的相对路径。 训练成功如下图所示。
  • 步骤六:增加适配代码 表4 添加优化代码 模型 使用方法 internVL2-40B internVL2-40B模型需要执行下列步骤。 cd ${container_work_dir}/multimodal_algorithm/ascendcloud_multimodal_plugin pip install -e . cd ${container_work_dir} 修改InternVL/internvl_chat/internvl/train/internvl_chat_finetune.py 文件,加入如下命令,用于引入优化代码包。 from ascendcloud_multimodal.train.models.internvl2 import ascend_modeling_internvl 执行如下命令添加优化代码。 cp -rf multimodal_algorithm/ascendcloud_multimodal_plugin/ascendcloud_multimodal/train/models/internvl2/modeling_intern_vit.py ${container_work_dir}/InternVL/internvl_chat/internvl/model/internvl_chat/modeling_intern_vit.py internVL2-8B或 internVL2-26B internVL2-8B或internVL2-26B模型需要执行如下命令添加优化代码。 cd ${container_work_dir} cp -rf multimodal_algorithm/ascendcloud_multimodal_plugin/ascendcloud_multimodal/train/models/internvl2/modeling_intern_vit.py ${container_work_dir}/InternVL/internvl_chat/internvl/model/internvl_chat/modeling_intern_vit.py cp -rf multimodal_algorithm/ascendcloud_multimodal_plugin/ascendcloud_multimodal/train/models/internvl2/modeling_internlm2.py ${container_work_dir}/InternVL/internvl_chat/internvl/model/internlm2/modeling_internlm2.py 注:InternVL2.5版本模型需修改版本依赖,执行如下命令:pip install deepspeed==0.14.2
  • 获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.5.901软件包中的AscendCloud-AIGC-6.5.901-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 获取路径:Support-E,在此路径中查找下载ModelArts 6.5.901版本。 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像包 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2409-aarch64-snt9b-20241213131522-aafe527 SWR上拉取。 表3 模型镜像版本 模型 版本 CANN cann_8.0.rc3 驱动 24.1.rc1 PyTorch 2.1.0
  • 步骤五:下载代码安装环境 下载华为侧插件代码包AscendCloud-AIGC-6.3.912-xxx.zip文件,获取路径参见表2。 1. InternVL2 unzip AscendCloud-AIGC-6.3.912-*.zip bash multimodal_algorithm/InternVL2/train/5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775/InternVL2_install.sh cp multimodal_algorithm/InternVL2/train/5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775/shells/* InternVL/internvl_chat/shell/internvl2.0/2nd_finetune/ 下载华为侧插件代码包AscendCloud-AIGC-6.5.901-xxx.zip文件,获取路径参见表2。
  • 方案概览 本方案介绍了在ModelArts Lite Server上使用昇腾计算资源Ascend Snt9B开展InternVL2-8B, InternVL2-26B,InternVL2-40B及InternVL2.5-4B,InternVL2.5-8B模型的训练过程,包括Finetune训练和LoRA训练。 表1 支持的模型列表 支持的模型 Finetune训练 LoRA训练 社区版本 权重获取路径 InternVL2-8B True True 5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775 https://huggingface.co/OpenGVLab/InternVL2-8B/tree/main InternVL2-26B True True 5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775 https://huggingface.co/OpenGVLab/InternVL2-26B/tree/main InternVL2-40B True True 5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775 https://huggingface.co/OpenGVLab/InternVL2-40B/tree/main InternVL2_5-4B True True 2d57e2181dad4c1c3c50f8da8a23600d4ee19fda https://huggingface.co/OpenGVLab/InternVL2_5-4B InternVL2_5-8B True True 2d57e2181dad4c1c3c50f8da8a23600d4ee19fda https://huggingface.co/OpenGVLab/InternVL2_5-8B
  • 步骤一:检查环境 请参考Lite Server资源开通,购买Lite Server资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买Lite Server资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 SSH登录机器后,检查NPU卡状态。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 检查是否安装docker。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全