Skip to content

Latest commit

 

History

History
114 lines (75 loc) · 2.29 KB

s7.md

File metadata and controls

114 lines (75 loc) · 2.29 KB

S7.Jetson端离线运行InternLM大模型

创建模型保存目录:

mkdir -p ~/models

S1.服务器端模型W4A16量化得到的internlm-chat-7b-turbomind.tgz上传到models目录下。

解压模型文件:

tar zxvf internlm-chat-7b-turbomind.tgz -C .

0.Bug解决:修改MMEngine库

Jetson端的pytorch不支持分布式的reduce算子,这会导致MMEngine库中与分布式有关的部分出现错误。

错误为:

AttributeError: module 'torch.distributed' has no attribute 'ReduceOp'

激活conda环境:

conda activate lmdeploy

用解释器方式运行python:

python

输入如下内容:

import mmengine
print(mmengine.__file__)

这就输出了MMEngine库的安装位置,笔者的是/home/nvidia/miniconda3/envs/lmdeploy/lib/python3.8/site-packages/mmengine/__init__.py,那么相应位置就是home/nvidia/miniconda3/envs/lmdeploy/lib/python3.8/site-packages/mmengine/,咱们用<path/to/mmengine>代替。

修改<path/to/mmengine>/logging/logger.py第208行:

- global_rank = _get_rank()
+ global_rank = 0

在运行就不会报错了。

注意:该方式过于粗暴,仅适用于Jetson平台部署推理,在服务器端会影响分布式功能!

1.终端运行

激活conda环境:

conda activate lmdeploy

运行模型:

lmdeploy chat turbomind ./internlm-chat-7b-turbomind

2.Python集成运行

编写运行脚本run_model.py,内容如下:

from lmdeploy import turbomind as tm


if __name__ == "__main__":
    model_path = "./internlm-chat-7b-turbomind" # 修改成你的路径

    tm_model = tm.TurboMind.from_pretrained(model_path)
    generator = tm_model.create_instance()

    while True:
        inp = input("[User] >>> ")
        if inp == "exit":
            break
        prompt = tm_model.model.get_prompt(inp)
        input_ids = tm_model.tokenizer.encode(prompt)
        for outputs in generator.stream_infer(session_id=0, input_ids=[input_ids]):
            res = outputs[1]
        response = tm_model.tokenizer.decode(res)
        print("[Bot] <<< {}".format(response))

激活conda环境:

conda activate lmdeploy

运行脚本:

python run_model.py