language:
- en pipeline_tag: text-generation tags:
- pretrained license: other hardwares:
- NPU frameworks:
- PyTorch library_name: openmind
InternVL2-8B
InternVL2-8B 是一种多模态大模型,具有强大的图像和文本处理能力,通过开源组件缩小与商业多模态模型的差距——GPT-4V的开源替代方案。在聊天机器人中,InternVL可以通过解析用户的文字输入,结合图像信息,生成更加生动、准确的回复。 此外,InternVL还可以根据用户的图像输入,提供相关的文本信息,实现更加智能化的交互。
准备模型
目前提供的MindIE镜像预置了 InternVL2-8B 模型推理脚本,无需使用本仓库自带的atb_models中的代码
加载镜像
前往昇腾社区/开发资源下载适配本模型的镜像包:1.0.0-800I-A2-py311-openeuler24.03-lts
完成之后,请使用docker images命令确认查找具体镜像名称与标签。
硬件要求
Atlas 800I A2 64GB 推理服务器
新建容器
自行修改端口等参数,启动样例
docker run -dit -u root \
--name ${容器名} \
-e ASCEND_RUNTIME_OPTIONS=NODRV \
--privileged=true \
-v ${所需映射目录}:${所需映射目录} \
-v /usr/local/Ascend/driver/:/usr/local/Ascend/driver/ \
-v /usr/local/Ascend/firmware/:/usr/local/Ascend/firmware/ \
-v /usr/local/sbin/:/usr/local/sbin \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
--shm-size=100g \
-p ${映射端口}:22 \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
${MindIE 1.0.0 镜像} \
/bin/bash
进入容器
docker exec -it ${容器名} bash
安装Python依赖
cd /usr/local/Ascend/atb-models
pip install -r requirements/models/requirements_internvl.txt
调试建议
若在运行过程中遇到未知报错或异常现象,建议开启日志打印开关以辅助排查问题。 在终端中执行以下命令设置环境变量:
export MINDIE_LOG_TO_STDOUT=1
export MINDIE_LOG_TO_FILE=1
export MINDIE_LOG_LEVEL=info
启用该环境变量后,系统日志将输出至终端(标准输出),并同步保存在/root/mindie目录下,方便后续定位和分析问题
纯模型推理
- 修改
/usr/local/Ascend/atb-models/examples/models/internvl/run_pa.sh脚本
export ASCEND_RT_VISIBLE_DEVICES=0
- 运行启动脚本(更多环境变量说明可参考run_pa.sh同级目录下的README.md)
bash /usr/local/Ascend/atb-models/examples/models/internvl/run_pa.sh --run --trust_remote_code ${权重路径} ${图片或视频所在文件夹路径}
服务化推理
- 打开配置文件
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
- 修改
MindIE-Service配置文件config.json,在Atlas 800I A2 64GB环境下,推荐使用以下配置,请自行修改modelWeightPath为实际权重路径:
{
"ServerConfig": {
"port" : 1025,
"managementPort" : 1026,
"httpsEnabled": false,
},
"BackendConfig": {
"npuDeviceIds": [
[0]
],
"ModelDeployConfig": {
"maxSeqLen": 32768,
"maxInputTokenLen": 32768,
"ModelConfig": [
{
"modelInstanceType": "Standard",
"modelName": "internvl",
"modelWeightPath": "/absolute/path/to/model/weights",
"worldSize": 1,
"npuMemSize": 24, #kvcache分配,可自行调整,单位是GB
"trustRemoteCode": true #默认为false,该模型需要设为true,信任本地代码,若使用该推荐配置,用户需自行承担风险
}
]
},
"ScheduleConfig": {
"maxPrefillTokens": 65536,
}
}
}
- 部署服务化
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemon
-
新建同一个Docker容器的终端会话,在任意路径下发送curl请求完成推理,以下分别以OpenAI接口与vLLM接口为例,请自行修改
image_url的路径为实际图片路径:- OpenAI接口
curl http://localhost:1025/v1/chat/completions -d '{ "model": "internvl", "messages": [{ "role": "user", "content": [ { "type": "text", "text": "Describe the contents of the image." }, {"type": "image_url", "image_url": "/absolute/path/to/image"} ] }], "max_tokens": 512, "stream": false }'- vLLM接口
curl http://localhost:1025/generate -d '{ "prompt": [ {"type": "text", "text": "Describe the contents of the image."}, { "type": "image_url", "image_url": "/absolute/path/to/image" } ], "max_tokens": 512, "do_sample": false, "stream": false, "model": "internvl" }'
声明
- 本代码仓提到的数据集和模型仅作为示例,这些数据集和模型仅供您用于非商业目的,如您使用这些数据集和模型来完成示例,请您特别注意应遵守对应数据集和模型的License,如您因使用数据集或模型而产生侵权纠纷,华为不承担任何责任。
- 如您在使用本代码仓的过程中,发现任何问题(包括但不限于功能问题、合规问题),请在本代码仓提交issue,我们将及时审视并解答。