昇腾910b部署Chatglm3-6b进行流式输出【pytorch框架】NPU推理

本文讲述了在使用ChatGLM3模型时,特别是在昇腾平台上遇到的问题,包括软件包的适配、驱动问题、模型加载失败以及如何通过添加代码来调整torch.npu设置以解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2025年1月14日更新

下面的操作已经过时了,现在直接运行代码即可,无需导入torch-npu
大家可以参考一下我的环境
我使用的服务器是Atlas 800T A2 推理服务器,显卡是 8*910B1
如果有需要mindie商用版可以私信我

Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run
Ascend-hdk-910b-npu-firmware_7.5.0.1.129.run
Ascend-cann-toolkit_8.0.RC3.alpha003_linux-aarch64.run
Ascend-cann-kernels-910b_8.0.RC3.alpha003_linux-aarch64.run

mindspore-2.4.1
torch_npu-2.4.0
transformers-4.47.1
tokenizers-0.19.1
mindnlp-0.4.0

准备阶段

本人环境

pip install transformers==4.39.2
pip3 install torch==2.1.0
pip3 install torch-npu==2.1.0.post4
pip3 install accelerate==0.24.1
pip3 install transformers-stream-generator==0.0.5

驱动:Ascend-hdk-910-npu-driver_24.1.rc1_linux-aarch64.run
固件:Ascend-hdk-910-npu-firmware_7.1.0.6.220.run
toolkit:Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run
kernels:Ascend-cann-kernels-910_8.0.RC1_linux.run

避坑阶段

  • 每个人的服务器都不一样,在ChatGLM3/issues中别人只需要修改指定驱动,但是我的不行
    在这里插入图片描述
  • 删除模型文件包中的model.safetensors.index.json,否则加载模型时会自动加载safetensors文件,而不加载bin文件
/home/anaconda3/envs/sakura/lib/python3.9/site-packages/torch_npu/contrib/transfer_to_npu.py:124: RuntimeWarning: torch.jit.script will be disabled by transfer_to_npu, which currently does not support it, if you need to enable torch.jit.script, please do not use transfer_to_npu.
  warnings.warn(msg, RuntimeWarning)
Loading checkpoint shards:   0%|                                                                                                                                     | 0/7 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/home/HwHiAiUser/work/ChatGLM3/basic_demo/cli_demo.py", line 22, in <module>
    model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True).npu().eval()
  File "/home/anaconda3/envs/sakura/lib/python3.9/site-packages/transformers/models/auto/auto_factory.py", line 558, in from_pretrained
    return model_class.from_pretrained(
  File "/home/anaconda3/envs/sakura/lib/python3.9/site-packages/transformers/modeling_utils.py", line 3187, in from_pretrained
    ) = cls._load_pretrained_model(
  File "/home/anaconda3/envs/sakura/lib/python3.9/site-packages/transformers/modeling_utils.py", line 3560, in _load_pretrained_model
    state_dict = load_state_dict(shard_file)
  File "/home/anaconda3/envs/sakura/lib/python3.9/site-packages/transformers/modeling_utils.py", line 467, in load_state_dict
    with safe_open(checkpoint_file, framework="pt") as f:
FileNotFoundError: No such file or directory: "/home/HwHiAiUser/models/chatglm3-6b/model-00001-of-00007.safetensors"
/home/anaconda3/envs/sakura/lib/python3.9/tempfile.py:817: ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/tmp/tmp1ygjyx3i'>
  _warnings.warn(warn_message, ResourceWarning)

在这里插入图片描述

添加代码

找到ChatGLM3/basic_demo/cli_demo.py
头部添加以下代码:

import os
import platform
import torch
import torch_npu
from torch_npu.contrib import transfer_to_npu
torch_device = "npu:3" # 0~7
torch.npu.set_device(torch.device(torch_device))
torch.npu.set_compile_mode(jit_compile=False)
option = {}
option["NPU_FUZZY_COMPILE_BLACKLIST"] = "Tril"
torch.npu.set_option(option)
print("torch && torch_npu import successfully")

模型加载部分修改为:

model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True).npu().eval()

结果展示

在这里插入图片描述

### 升腾AI平台部署Ollama大模型 #### 准备工作 为了在升腾AI处理器上成功部署Ollama大模型,需先确认服务器的操作系统版本以及安装必要的依赖库。对于操作系统的验证可以参照已有的指南[^1]。 #### 安装环境配置工具 针对Ollama大模型的特殊需求,在开始之前应当确保环境中已经正确设置了Python虚拟环境并安装了`pip`包管理器。这一步骤有助于后续更简便地管理和更新项目所需的各类软件包。 #### 获取预训练模型文件 访问官方发布的资源页面下载适用于升腾架构优化过的Ollama权重参数与配套脚本。通常这些资料会被打包成压缩文件形式提供给开发者使用。 #### 配置运行环境 通过命令行界面执行如下指令来创建一个新的Conda环境,并激活该环境以便于接下来的工作: ```bash conda create -n ollama python=3.8 conda activate ollama ``` 接着按照文档说明依次安装所需的各种Python库,特别是那些专门为适配NPU而设计的数据处理和加速计算组件。 #### 修改推理代码以适应硬件特性 由于Ollama原生可能并非直接支持升腾系列芯片,因此需要调整部分源码逻辑使其能够充分利用到Ascend 910的强大性能。具体改动涉及但不限于以下几个方面: - 调整网络层定义中的某些超参设置使之更适合当前硬件条件下的表现最优化; - 对原有框架做适当裁剪去除不必要的功能模块减少开销; 完成上述修改之后就可以尝试启动测试实例观察实际效果如何了。 #### 运行预测服务 当一切准备就绪后,可以通过调用API接口或者命令行的方式发起请求让模型基于输入样本给出相应的输出结果。此时应该密切关注日志输出情况及时发现潜在问题所在并加以解决直至整个流程稳定可靠为止。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值