MLU370-M8跑大大大规模模型!!!Qwen-72b-chat


前言

2023年12月1日,通义千问在开源领域迎来重大突破,推出了一系列全家桶模型,包括参数从18亿到720亿的多款模型,涵盖了各种应用场景,目前已上线阿里魔搭社区。其中720 亿参数模型 Qwen-72B,在多个权威基准测评中表现出色,超越了同规模的Llama2-70B和大部分商用闭源模型,这填补了中国大模型市场的空白,为企业和科研机构提供了强大的推理能力。
大规模高质量训练预料
使用超过2.2万亿tokens的数据进行预训练,包含高质量中、英、多语言、代码、数学等数据,涵盖通用及专业领域的训练语料。通过大量对比实验对预训练语料分布进行了优化。
优秀的性能
在英语测试榜单中上,Qwen-72B在MMLU基准测试取得开源模型最高分;中文测试榜单中上,Qwen-72B在C-Eval、CMMLU、GaokaoBench等基准得分超越GPT-4;数学推理方面,Qwen-72B在GSM8K、MATH测评中断层式领先其他开源模型;代码理解方面,Qwen-72B在HumanEval、MBPP等测评中的表现大幅提升,代码能力有了质的飞跃。
覆盖更全面的词表
该模型使用了约15万大小的词表,该词表对多语言更加友好,方便用户在不扩展词表的情况下对部分语种进行能力增强和扩展,并支持32k上下文长度。
系统指令跟随
Qwen-72B 搭载了强大的系统指令(System Prompt)能力,用户只用一句提示词就可定制自己的 AI 助手,要求大模型扮演某个角色,或者执行特定的回复任务。
通义千问的开源模型不仅在性能上强大,而且在用户体验上进行了深度优化。Qwen-72B支持个性化角色设置,用户可以通过设置提示词,让AI助手拥有独特的角色、性格、腔调等。这为开发者提供了更灵活的定制选择,使得模型更贴近实际应用场景。


提示:以下是本篇文章正文内容,下面案例可供参考

一、云平台环境配置

MLU370-M8 推荐5.10.22的驱动【建议选择4-8卡规格哦】

镜像收藏pytorch中选择:pytorch:v1.17_torch1.13.1_ubuntu20.04_py310

二、环境准备

1.transformers

git clone -b v4.33.0 https://github.com/huggingface/transformers.git
python /torch/src/catch/tools/torch_gpu2mlu/torch_gpu2mlu.py -i transformers/
pip install -e ./transformers_mlu

2.accelerate

git clone -b v0.22.0 https://github.com/huggingface/accelerate.git
python /torch/src/catch/tools/torch_gpu2mlu/torch_gpu2mlu.py -i accelerate/
pip install -e ./accelerate_mlu

3.deepspeed

联系发放编译好的.whl包


4.常规库安装

pip install tiktoken einops scipy transformers_stream_generator==0.0.4 modelscope 

三、模型快速下载

from modelscope import snapshot_download
model_dir = snapshot_download("qwen/Qwen-72B-Chat", revision="master")

#路径在/root/.cache/modelscope/hub/qwen/下

四、代码修改

因为目前不支持torch.tril,所以模型部分要大致修改下

 key_size = key[0].size(2) if self.use_cache_quantization else key.size(1)
            if query.size(1) == key_size:
  			### +temp_cpu = torch.ones((key_size, key_size), dtype=torch.bool, device=query.device)
                causal_mask = torch.tril(
         	 ### -torch.ones((key_size, key_size), dtype=torch.bool, device=query.device)
             ### +  temp_cpu.cpu()
                ).view(1, 1, key_size, key_size)
          ### + causal_mask = causal_mask.to(query.device)

修改完这些就可以直接开始运行我们的Qwen-72b-chat代码了

五、运行代码

记得把路径改成我们自己的运行路径

from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig

# Note: The default behavior now has injection attack prevention off.
tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-72B-Chat", revision='master', trust_remote_code=True)

# use bf16
# model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-72B-Chat", device_map="auto", trust_remote_code=True, bf16=True).eval()
# use fp16
# model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-72B-Chat", device_map="auto", trust_remote_code=True, fp16=True).eval()
# use cpu only
# model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-72B-Chat", device_map="cpu", trust_remote_code=True).eval()
# use auto mode, automatically select precision based on the device.
model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-72B-Chat", revision='master', device_map="auto", trust_remote_code=True).eval()
# NOTE: The above line would require at least 144GB memory in total

# Specify hyperparameters for generation. But if you use transformers>=4.32.0, there is no need to do this.
# model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-72B-Chat", trust_remote_code=True) # 可指定不同的生成长度、top_p等相关超参

# 第一轮对话 1st dialogue turn
response, history = model.chat(tokenizer, "你好", history=None)
print(response)
# 你好!很高兴为你提供帮助。

# 第二轮对话 2nd dialogue turn
response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)
print(response)
# 这是一个关于一个年轻人奋斗创业最终取得成功的故事。
# 故事的主人公叫李明,他来自一个普通的家庭,父母都是普通的工人。从小,李明就立下了一个目标:要成为一名成功的企业家。
# 为了实现这个目标,李明勤奋学习,考上了大学。在大学期间,他积极参加各种创业比赛,获得了不少奖项。他还利用课余时间去实习,积累了宝贵的经验。
# 毕业后,李明决定开始自己的创业之路。他开始寻找投资机会,但多次都被拒绝了。然而,他并没有放弃。他继续努力,不断改进自己的创业计划,并寻找新的投资机会。
# 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业。
# 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功。

# 第三轮对话 3rd dialogue turn
response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history)
print(response)
# 《奋斗创业:一个年轻人的成功之路》

# Qwen-72B-Chat现在可以通过调整系统指令(System Prompt),实现角色扮演,语言风格迁移,任务设定,行为设定等能力。
# Qwen-72B-Chat can realize roly playing, language style transfer, task setting, and behavior setting by system prompt.
response, _ = model.chat(tokenizer, "你好呀", history=None, system="请用二次元可爱语气和我说话")
print(response)
# 哎呀,你好哇!是怎么找到人家的呢?是不是被人家的魅力吸引过来的呀~(≧▽≦)/~

response, _ = model.chat(tokenizer, "My colleague works diligently", history=None, system="You will write beautiful compliments according to needs")
print(response)
# Your colleague is a shining example of dedication and hard work. Their commitment to their job is truly commendable, and it shows in the quality of their work. 
# They are an asset to the team, and their efforts do not go unnoticed. Keep up the great work!

暂时把这个代码命名文件为test.py吧
运行命令:【4卡运行】

export MLU_VISIBLE_DEVICES=0,1,2,3 && python test.py

六、效果展示

显存使用

在这里插入图片描述

推理效果

问:给我讲一个年轻人奋斗创业最终取得成功的故事
答:下面是一个关于年轻人奋斗创业最终取得成功的励志故事。

主人公叫小明,他一直梦想着成为一名企业家,并且有一个创新的商业想法。他在大学期间就开始研究市场,制定计划,并开始寻找投资者。

毕业后,小明辞去了稳定的工作,全身心投入自己的创业项目中。刚开始的时候非常困难,资金不足,团队不稳定,市场竞争激烈。但是小明始终坚持不懈,不断调整策略和方向。

经过几年的努力,小明的公司终于在市场上崭露头角,吸引到了更多的客户和投资者。他的团队也逐渐壮大,吸引了许多优秀的人才加入。

在经历了一系列的挑战和困难后,小明的公司最终取得了巨大的成功。他的产品和服务受到了市场的广泛认可和好评,他也成为了一名备受尊敬的企业家。

这个故事告诉我们,只有坚持不懈地追求自己的梦想,不断努力、不断学习、不断成长,才能实现真正的成功。无论面临多大的困难和挑战,只要我们相信自己并且不放弃,就一定能够达到我们的目标。

问:给这个故事起一个标题
答:这个故事可以叫做“坚韧不拔的创业者:小明的成功之路”。

问:你好呀   指令:"请用二次元可爱语气和我说话"
答:嗨!人家是你的小助手哦~有什么需要帮助的呢?(✿◡‿◡)

在这里插入图片描述

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值