InternLM2.5基于Ascend NPU的环境配置及应用部署心得
一、任务需求
首先了解熟悉任务计划书(https://bbs.huaweicloud.com/blogs/439896),目的需求是将 InternLM2.5 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保模型能在这些硬件平台上的高效运行,需要注意系统架构是aarch64。
二、过程
本文验证的模型是InternLM2.5-1.8B-chat,可根据需求替换不同参数的模型
明确需求后开始熟悉模型,了解其需要的配置和环境要求
安装相关依赖:python版本为3.10
#使用yum更新下环境包
yum update -y
#更新pip
python -m pip install --upgrade pip
#安装torch
pip install torch==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装numpy要2以下
pip install numpy==1.26.4
pip install packaging streamlit einops sentencepiece -i https://pypi.tuna.tsinghua.edu.cn/simple
#conda install -c conda-forge transformers==4.4.0
pip install transformers==4.40.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
下载模型
#安装ModelScope
pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
#下载internlm2_5-1_8b-chat模型到当前文件夹
modelscope download --model Shanghai_AI_Laboratory/internlm2_5-1_8b-chat --local_dir ./dir
下载代码
InternLM2.5的github地址:https://github.com/InternLM/InternLM,将其代码库中的代码文件下载下来(chat/web_demo.py)
需要将load_model函数下的地址修改为本地模型地址
代码修改适配,详情见代码仓库:https://gitcode.com/2401_82798006/InternLM/overview
web_demo_cpu_html:源码提供了html前端展示页面的代码部分,CSS样式可能在本地运行有冲突,修改了其中部分
web_demo_cpu_terminal:代码去除前端交互部分,可在终端交互
web_demo_npu_terminal:昇腾堡垒机不支持前端交互,在终端交互代码,指定npu加速模块
可根据调整相关参数来改变回答结果,主要参数如下:
#在生成文本模型的配置中,max_length、top_p 和 temperature 是常用的参数,用于控制生成文本的行为和质量。以下是对这三个参数的解释:
1. max_length:
含义: 生成文本的最大长度。
作用: 限制生成的文本序列的最大长度,以防止生成过长的文本。
使用场景: 当你希望生成的文本在一定长度内时,可以设置这个参数。
2. top_p (也称为 nucleus sampling):
含义: 控制生成文本的多样性。
作用: 通过选择概率总和达到 top_p 的词汇来限制候选词汇的集合。top_p=0.9 意味着只考虑概率总和达到 90% 的词汇。
使用场景: 当你希望生成的文本更加多样化时,可以调高 top_p;如果希望生成的文本更加确定,可以调低 top_p。
3. temperature:
含义: 控制生成文本的随机性。
作用: 通过缩放 logits 来影响生成的随机性。较高的温度(如 1.0)会使生成的文本更加随机,而较低的温度(如 0.1)会使生成的文本更加确定。
使用场景: 当你希望生成的文本更加有创意时,可以调高 temperature;如果希望生成的文本更加保守,可以调低 temperature。
这三个参数可以结合使用,以调整生成文本的风格和质量,具体的设置取决于你的应用场景和需求。
------------------------------------------------------------------------------------------------------------------
昇腾NPU和鲲鹏CPU部署整体过程类似,需要多安装一个touch_npu,版本也选择2.2,NPU需要将cpu核心换成npu,运行时可能会提醒缺少相关依赖,根据提示安装即可
pip install decorator scipy cloudpickle ml-dtypes psutil
需要更新昇腾环境
export ASCEND_GLOBAL_LOG_LEVEL=3
export ASCEND_SLOG_PRINT_TO_STDOUT=1
export ASCEND_GLOBAL_EVENT_ENABLE=0
export ASCEND_GLOBAL_LOG_FILE_NUM=10
export ASCEND_GLOBAL_LOG_FILE_SIZE=1024
export ASCEND_GLOBAL_LOG_PATH=/var/log/npu
export ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest
export ASCEND_OPP_PATH=/usr/local/Ascend/ascend-toolkit/latest/opp
export PYTHONPATH=/usr/local/Ascend/ascend-toolkit/latest/python/site-packages:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH
三、结果
使用InternLM进行对话问答
CPU
NPU
NPU运行状态
四、心得及其注意事项
- 系统是arrch64架构,不同于常见的x86,很多配置没有相应版本需要重新编译。
- numpy版本要小于2,本文提供的版本是numpy==1.26.4
- transformer官方版本是要大于4.38即可,最新版的易冲突报错,需要降级,但过程中测试transformers==4.40不行,需要多下载Rust重新编译且容易报错,建议用transformers==4.40.2
- 易忽略的点是推理代码中写的模型路径要用相对路径,绝对路径会报错找不到相对应的模块
- 国外模型网站不是经常能访问到,有需要可设置国内镜像源。
- 点赞
- 收藏
- 关注作者
评论(0)