Mistral AI发布首个开源MoE模型,魔搭社区推理微调最佳实践来啦!

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 继Mistral 7B 后,Mistral AI 近日又放出一记大招——发布了引爆开源社区的首个 MoE 开源模型 Mixtral 8x7B,在 Apache 2.0 许可证下可商用。

导读

继Mistral 7B 后,Mistral AI 近日又放出一记大招——发布了引爆开源社区的首个 MoE 开源模型 Mixtral 8x7B在 Apache 2.0 许可证下可商用。Mixtral-8x7B 是一款混合专家模型(Mixtrue of Experts),由8个拥有70亿参数的专家网络组成,这种结构不仅提高了模型处理信息的效率,还降低了运行成本。

在能力上,Mixtral-8x7B 支持 32k token 上下文长度,支持英语、法语、意大利语、德语和西班牙语,拥有优秀的代码生成能力,可微调为指令跟随模型(Mixtral 8x7B Instruct,已同步开源),在 MT-Bench 上达到 8.3 分,达到了可媲美GPT3.5的水平。

Mixtral-8x7B 在大多数Benchmarks中表现

与 Llama2 70B 和 GPT3.5相当,甚至部分项上更优于二者

Mixtral 拥有46.7B的总参数量,但每个token只使用 12.9B参数,也就是说,Mixtral的实际执行速度和所需的成本和一个12.9B的模型相当。下图展示了官方公布的模型生成质量与推理消耗成本的关系,与Llama 2相比,Mistral 7B和Mixtral 8x7B表现出自己高能效的优势。

目前魔搭社区已经支持 Mixtral-8x7BMixtral-8x7B-Instruct 的下载、推理、微调一站式体验,并提供对应最佳实践教程,欢迎感兴趣的开发者小伙伴们来玩

环境配置与安装

  1. python 3.8及以上版本
  2. pytorch 1.12及以上版本,推荐2.0及以上版本
  3. 建议使用CUDA 11.4及以上
  4. transformers>=4.36.0

本文主要演示的模型为 Mixtral-8x7B-v0.1 Mixtral-8x7B-Instruct-v0.1 两个MoE模型。这两个模型参数量大概是47B左右。半径度训练和推理均需要两张A100,或同等显存(约90G~120G显存)。

模型链接和下载

Mixtral-MoE系列模型现已在ModelScope社区开源,包括:

Mixtral-8x7B-v0.1模型:

https://www.modelscope.cn/models/AI-ModelScope/Mixtral-8x7B-v0.1/summary

Mixtral-8x7B-Instruct-v0.1模型:

https://www.modelscope.cn/models/AI-ModelScope/Mixtral-8x7B-Instruct-v0.1/summary

社区支持直接下载模型的repo:

from modelscope import snapshot_download
model_dir1 = snapshot_download("AI-ModelScope/Mixtral-8x7B-v0.1", revision = "master")
model_dir2 = snapshot_download("AI-ModelScope/Mixtral-8x7B-Instruct-v0.1", revision = "master")

值得一提的是,魔搭社区同步上线了Mistral-7B-Instruct-v0.2的新模型:

https://www.modelscope.cn/models/AI-ModelScope/Mistral-7B-Instruct-v0.2/summary

社区支持直接下载模型的repo:

from modelscope import snapshot_download
model_dir1 = snapshot_download("AI-ModelScope/Mistral-7B-Instruct-v0.2", revision = "master")

Mixtral模型推理

Mixtral-8x7B-v0.1推理代码:

from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "AI-ModelScope/Mixtral-8x7B-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map='auto', torch_dtype=torch.float16)
text = "Hello my name is"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Mixtral-8x7B-Instruct-v0.1推理代码:

from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "AI-ModelScope/Mixtral-8x7B-Instruct-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map='auto', torch_dtype=torch.float16)
text = "Hello my name is"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

资源消耗:

Mixtral模型微调和微调后推流

微调代码开源地址:

https://github.com/modelscope/swift/tree/main/examples/pytorch/llm

clone swift仓库并安装SWIFT(魔搭官方提供的训练推理框架)

# 设置pip全局镜像和安装相关的python包
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
git clone https://github.com/modelscope/swift.git
cd swift
pip install .[llm]
# 下面的脚本需要在此目录下执行
cd examples/pytorch/llm

模型微调脚本

由于模型尺寸较大,因此我们支持了基于LoRA的训练,精度使用了半精度。

  1. Mixtral-8x7B-v0.1模型
# Experimental environment: 2 * A100
# 2 * 50GB GPU memory
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
python llm_sft.py \
    --model_id_or_path AI-ModelScope/Mixtral-8x7B-v0.1 \
    --model_revision master \
    --sft_type lora \
    --tuner_backend swift \
    --dtype AUTO \
    --output_dir output \
    --ddp_backend nccl \
    --dataset dureader-robust-zh \
    --train_dataset_sample -1 \
    --num_train_epochs 2 \
    --max_length 512 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps 16 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 300 \
    --save_steps 300 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --only_save_model true \
    --gradient_checkpointing false

  1. Mixtral-8x7B-Instruct-v0.1模型
# Experimental environment: 2 * A100
# 2 * 65GB GPU memory
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
python llm_sft.py \
    --model_id_or_path AI-ModelScope/Mixtral-8x7B-Instruct-v0.1 \
    --model_revision master \
    --sft_type lora \
    --tuner_backend swift \
    --dtype AUTO \
    --output_dir output \
    --ddp_backend nccl \
    --dataset dureader-robust-zh \
    --train_dataset_sample -1 \
    --num_train_epochs 2 \
    --max_length 2048 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps 16 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 300 \
    --save_steps 300 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --only_save_model true \
    --gradient_checkpointing false

训练过程也支持本地数据集,需要指定如下参数:

--custom_train_dataset_path /path/to/local/train/file
--custom_val_dataset_path /path/to/local/val/file

数据集格式请参考:

模型微调后的推理脚本,这里的ckpt_dir需要修改为训练生成的checkpoint文件夹:

# Experimental environment: A100
# 2 * 45GB GPU memory
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
python llm_infer.py \
    --ckpt_dir "output/mistral-7b-moe/vx_xxx/checkpoint-xxx" \
    --load_args_from_ckpt_dir true \
    --eval_human false \
    --max_length 4096 \
    --max_new_tokens 2048 \
    --temperature 0.1 \
    --top_p 0.7 \
    --repetition_penalty 1.05 \
    --do_sample true \
    --merge_lora_and_save false \

微调的可视化结果

训练损失:

评估损失

训练后生成样例

[INFO:swift] Setting args.verbose: True
[PROMPT]<s> [INST] <<SYS>>
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.
If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
<</SYS>>
Task: Question Generation
Context: 爬行垫根据中间材料的不同可以分为:XPE爬行垫、EPE爬行垫、EVA爬行垫、PVC爬行垫;其中XPE爬行垫、EPE爬行垫都属于PE材料加保鲜膜复合而成,都是无异味的环保材料,但是XPE爬行垫是品质较好的爬行垫,韩国进口爬行垫都是这种爬行垫,而EPE爬行垫是国内厂家为了减低成本,使用EPE(珍珠棉)作为原料生产的一款爬行垫,该材料弹性差,易碎,开孔发泡防水性弱。EVA爬行垫、PVC爬行垫是用EVA或PVC作为原材料与保鲜膜复合的而成的爬行垫,或者把图案转印在原材料上,这两款爬行垫通常有异味,如果是图案转印的爬行垫,油墨外露容易脱落。当时我儿子爬的时候,我们也买了垫子,但是始终有味。最后就没用了,铺的就的薄毯子让他爬。
Answer: XPE
Question:  [/INST][OUTPUT]什么材质的爬行垫好</s>
[LABELS]爬行垫什么材质的好
--------------------------------------------------
[PROMPT]<s> [INST] <<SYS>>
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.
If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
<</SYS>>
Task: Question Generation
Context: 真实情况是160-162。她平时谎报的168是因为不离脚穿高水台恨天高(15厘米) 图1她穿着高水台恨天高和刘亦菲一样高,(刘亦菲对外报身高172)范冰冰礼服下厚厚的高水台暴露了她的心机,对比一下两者的鞋子吧 图2 穿着高水台恨天高才和刘德华谢霆锋持平,如果她真的有168,那么加上鞋高,刘和谢都要有180?明显是不可能的。所以刘德华对外报的身高174减去10-15厘米才是范冰冰的真实身高 图3,范冰冰有一次脱鞋上场,这个最说明问题了,看看她的身体比例吧。还有目测一下她手上鞋子的鞋跟有多高多厚吧,至少超过10厘米。
Answer: 160-162
Question:  [/INST][OUTPUT]范冰冰身高</s>
[LABELS]范冰冰多高真实身高
--------------------------------------------------
[PROMPT]<s> [INST] <<SYS>>
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.
If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
<</SYS>>
Task: Question Generation
Context: 防水作为目前高端手机的标配,特别是苹果也支持防水之后,国产大多数高端旗舰手机都已经支持防水。虽然我们真的不会故意把手机放入水中,但是有了防水之后,用户心里会多一重安全感。那么近日最为火热的小米6防水吗?小米6的防水级别又是多少呢? 小编查询了很多资料发现,小米6确实是防水的,但是为了保持低调,同时为了不被别人说防水等级不够,很多资料都没有标注小米是否防水。根据评测资料显示,小米6是支持IP68级的防水,是绝对能够满足日常生活中的防水需求的。
Answer: IP68级
Question:  [/INST][OUTPUT]小米6防水等级</s>
[LABELS]小米6防水等级

资源消耗:

2 * 46G

点击链接直达模型:Mixtral-8x7B-v0.1 · 模型库 (modelscope.cn)

相关文章
|
28天前
|
机器学习/深度学习 人工智能 并行计算
"震撼!CLIP模型:OpenAI的跨模态奇迹,让图像与文字共舞,解锁AI理解新纪元!"
【10月更文挑战第14天】CLIP是由OpenAI在2021年推出的一种图像和文本联合表示学习模型,通过对比学习方法预训练,能有效理解图像与文本的关系。该模型由图像编码器和文本编码器组成,分别处理图像和文本数据,通过共享向量空间实现信息融合。CLIP利用大规模图像-文本对数据集进行训练,能够实现zero-shot图像分类、文本-图像检索等多种任务,展现出强大的跨模态理解能力。
77 2
|
13天前
|
机器学习/深度学习 人工智能 算法
整合海量公共数据,谷歌开源AI统计学专家DataGemma
【10月更文挑战第28天】谷歌近期开源了DataGemma,一款AI统计学专家工具,旨在帮助用户轻松整合和利用海量公共数据。DataGemma不仅提供便捷的数据访问和处理功能,还具备强大的数据分析能力,支持描述性统计、回归分析和聚类分析等。其开源性质和广泛的数据来源使其成为AI研究和应用的重要工具,有助于加速研究进展和推动数据共享。
42 6
|
13天前
|
存储 人工智能 SEO
全开源免费AI网址导航网站源码
Aigotools 可以帮助用户快速创建和管理导航站点,内置站点管理和自动收录功能,同时提供国际化、SEO、多种图片存储方案。让用户可以快速部署上线自己的导航站。
31 1
|
20天前
|
人工智能
AI科学家太多,谁靠谱一试便知!普林斯顿新基准CORE-Bench:最强模型仅有21%准确率
【10月更文挑战第21天】普林斯顿大学研究人员提出了CORE-Bench,一个基于计算可重复性的AI代理基准,涵盖计算机科学、社会科学和医学领域的270个任务。该基准旨在评估AI代理在科学研究中的准确性,具有多样性、难度级别和现实相关性等特点,有助于推动AI代理的发展并提高计算可重复性。
39 4
|
30天前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
29天前
|
人工智能 自然语言处理
从迷茫到精通:揭秘模型微调如何助你轻松驾驭AI新热点,解锁预训练模型的无限潜能!
【10月更文挑战第13天】本文通过简单的问题解答形式,结合示例代码,详细介绍了模型微调的全流程。从选择预训练模型、准备新任务数据集、设置微调参数,到进行微调训练和评估调优,帮助读者全面理解模型微调的技术细节和应用场景。
67 6
|
15天前
|
人工智能 Anolis 开发者
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
2024年,AI大模型在软件开发领域的应用正重塑传统流程,从自动化编码、智能协作到代码审查和测试,显著提升了开发效率和代码质量。然而,技术挑战、伦理安全及模型可解释性等问题仍需解决。未来,AI将继续推动软件开发向更高效、智能化方向发展。
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗领域的应用及其挑战
【10月更文挑战第34天】本文将探讨人工智能(AI)在医疗领域的应用及其面临的挑战。我们将从AI技术的基本概念入手,然后详细介绍其在医疗领域的各种应用,如疾病诊断、药物研发、患者护理等。最后,我们将讨论AI在医疗领域面临的主要挑战,包括数据隐私、算法偏见、法规合规等问题。
27 1

热门文章

最新文章