本文主要是介绍MLU370-M8轻轻松松跑通Qwen-7B-chat,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这一期我们将快速让千问7B快速跑通在国产芯片MLU370-M8卡上,后续会更新更多有关于LORA、预训练、RLHF、SFT,Embedding、Fintuning等得操作过程,尽情期待
Qwen-7B-chat在MLU370-M8上实现
- 前言
- 一、环境准备
- 二、模型下载
- 1.魔塔社区引入
- 2.代码修改
- 3.代码运行
- 效果展示
前言
通义千问-7B(Qwen-7B) 是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B的基础上,我们使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。Qwen-7B系列模型的特点包括:
1 大规模高质量预训练数据:我们使用了超过2.2万亿token的自建大规模预训练数据集进行语言模型的预训练。,,上下文长度为2048,,数据集包括文本和代码等多种数据类型,覆盖通用领域和专业领域。包含高质量中、英、多语言、代码、数学等数据,涵盖通用及专业领域的训练语料。通过大量对比实验对预训练语料分布进行了优化。
2 优秀的模型性能:相比同规模的开源模型,Qwen-7B在多个评测数据集上具有显著优势,甚至超出12-13B等更大规模的模型。评测评估的能力范围包括自然语言理解与生成、数学运算解题、代码生成、常识推理、翻译等。
3 更好地支持多语言:基于更大词表的分词器在分词上更高效,同时它对其他语言表现更加友好。用户可以在Qwen-7B的基础上更方便地训练特定语言的7B语言模型。覆盖更全面的词表:相比目前以中英词表为主的开源模型,Qwen-7B使用了约15万大小的词表。该词表对多语言更加友好,方便用户在不扩展词表的情况下对部分语种进行能力增强和扩展。
4 8K的上下文长度:Qwen-7B及Qwen-7B-Chat均能支持8K的上下文长度, 允许用户输入更长的prompt。
5 支持插件调用:Qwen-7B-Chat针对插件调用相关的对齐数据做了特定优化,当前模型能有效调用插件以及升级为Agent。
一、环境准备
开发环境选择(关于开发环境及平台可参考前几期博文):
pytorch:v1.14.0-ubuntu20.04-py38
环境库安装:
1.transformers
git clone -b v4.31.0 https://github.com/huggingface/transformers.git
python /torch/src/catch/tools/torch_gpu2mlu.py -i transformers/ #cuda算子转换成mlu,后会生成transformers_mlu
cd transformers_mlu/ && python setup.py install
2.accelerate
git clone -b v0.20.2 https://github.com/huggingface/accelerate
python /torch/src/catch/tools/torch_gpu2mlu.py -i accelerate/ #cuda算子转换成mlu,后会生成accelerate_mlu
cd accelerate_mlu/ && python setup.py install
3.deepspeed
这个直接联系我们可以直接提供编译好的whl包
4.常规安装
pip install tiktoken transformers_stream_generator einops modelscope
二、模型下载
1.魔塔社区引入
因为之前有小伙伴说huggingface下载模型太慢了,因此我们采用国内源模型下载得方式,下载速度很快,模型自动下载到
/root/.cache/huggingface/hub/路径下
2.代码修改
运行3时可能会出现报错,此时注释transformers-4.31.0_mlu/src/transformers/utils/versions.py中43-46行(原因不让其查询版本)
# if not ops[op](version.parse(got_ver), version.parse(want_ver)):# raise ImportError(# f"{requirement} is required for a normal functioning of this module, but found {pkg}=={got_ver}.{hint}"# )
3.代码运行
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfigtokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-7B-Chat", revision = 'v1.0.5',trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", revision = 'v1.0.5',device_map="auto", trust_remote_code=True,fp16 = True).eval()
model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat",revision = 'v1.0.5', trust_remote_code=True) # 可指定不同的生成长度、top_p等相关超参response, history = model.chat(tokenizer, "你好", history=None)
print(response)
response, history = model.chat(tokenizer, "浙江的省会在哪里?", history=history)
print(response)
response, history = model.chat(tokenizer, "它有什么好玩的景点", history=history)
print(response)
效果展示
这篇关于MLU370-M8轻轻松松跑通Qwen-7B-chat的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!