Kimi开源Moonlight-16B-A3B:基于Muon优化器的高效大模型,性能与训练效率双突破!

简介: Kimi开源Moonlight-16B-A3B:基于Muon优化器的高效大模型,性能与训练效率双突破!

01前言


最近,Muon优化器在训练小规模语言模型方面展示了强大的效果,但其在大规模模型上的可扩展性尚未得到验证。Kimi确定了两个扩展Muon的关键技术:

  • 权重衰减:对扩展到更大模型至关重要
  • 一致的RMS更新:在模型更新中保持一致的均方根


这些技术使Muon能够在大规模训练中开箱即用,无需超参数调优。扩展定律实验表明,在计算最优训练中,Muon相较通常默认使用的AdamW优化器,能提供高约2倍的样本效率。


基于这些改进,Kimi基于Muon训练了Moonlight-16B-A3B系列模型。这是一个具备16B参数(激活参数为3B)的专家混合(MoE)模型,使用5.7T个token数据训练得到。该模型模型改进了当前的帕累托前沿,与之前的模型相比,使用更少的训练FLOPs就能实现更好的性能。


同时Kimi开源了内存优化和通信效率高的Muon实现,还发布了预训练、指令微调和中间检查点,以支持未来的研究。


所有代码可在MoonshotAI/Moonlight获取。


代码链接:

https://github.com/MoonshotAI/Moonlight


模型链接:

  • Moonlight-16B-A3B

   https://modelscope.cn/models/moonshotai/Moonlight-16B-A3B


  • Moonlight-16B-A3B-Instruct

   https://modelscope.cn/models/moonshotai/Moonlight-16B-A3B-Instruct


体验链接:

https://www.modelscope.cn/studios/moonshotai/Moonlight-16B-Demo/summary


技术贡献包括:

  • Muon有效扩展分析:通过广泛分析,研究团队发现权重衰减在Muon的可扩展性中起着关键作用。此外,研究团队提出通过参数级更新尺度调整,在不同的矩阵和非矩阵参数之间保持一致的更新均方根(RMS)。这些调整显著提高了训练稳定性。
  • 高效分布式实现:研究团队开发了具有ZeRO-1风格优化的Muon分布式版本,实现了最优的内存效率和减少的通信开销,同时保持了算法的数学特性。
  • 扩展定律验证:研究团队进行了扩展定律研究,将Muon与强大的AdamW基线进行比较,展示了Muon的卓越性能(见图1)。基于扩展定律结果,Muon只需要约52%的训练FLOPs就能达到与AdamW训练的对应模型相当的性能。



Muon的扩展

(a) 比较Muon和Adam的扩展定律实验,Muon的样本效率是Adam的2倍;

(b) Moonlight模型(使用Muon优化)与其他可比较模型在MMLU上的表现。


Moonlight在性能与训练FLOPs的权衡上推进了帕累托前沿。


02性能


将Moonlight与类似规模的SOTA公开模型进行了比较:

  • LLAMA3-3B是一个使用9T个token训练的3B参数密集模型
  • Qwen2.5-3B是一个使用18T个token训练的3B参数密集模型
  • Deepseek-v2-Lite是一个使用5.7T个token训练的2.4B/16B参数MOE模型



基准测试(指标)

Llama3.2-3B

Qwen2.5-3B

DSV2-Lite

Moonlight


激活参数†

2.81B

2.77B

2.24B

2.24B


总参数†

2.81B

2.77B

15.29B

15.29B


训练token数

9T

18T

5.7T

5.7T


优化器

AdamW

*

AdamW

Muon

英语

MMLU

54.75

65.6

58.3

70.0


MMLU-pro

25.0

34.6

25.5

42.4


BBH

46.8

56.3

44.1

65.2


TriviaQA‡

59.6

51.1

65.1

66.3

代码

HumanEval

28.0

42.1

29.9

48.1


MBPP

48.7

57.1

43.2

63.8

数学

GSM8K

34.0

79.1

41.1

77.4


MATH

8.5

42.6

17.1

45.3


CMath

-

80.0

58.4

81.1

中文

C-Eval

-

75.0

60.3

77.2


CMMLU

-

75.0

64.3

78.2


03模型推理


推理代码


from modelscope import AutoModelForCausalLM, AutoTokenizer

model_name = "moonshotai/Moonlight-16B-A3B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)

prompt = "1+1=2, 1+2="
inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True).to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=100)
response = tokenizer.batch_decode(generated_ids)[0]
print(response)


显存占用:

04Muon优化器微调



ms-swift第一时间提供了Muon优化器的对接。ms-swift是魔搭社区提供的,大模型训练部署框架,其开源地址为:https://github.com/modelscope/ms-swift


鉴于目前moonshotai/Moonlight-16B-A3B系列MoE模型不再支持进一步的微调(由于topk_method='noaux_tc'),我们这里选择使用由Moonshot改进的muon优化器,来实现对于dense模型的微调。具体而言,在以下范例中,我们采用了Qwen2.5-7B-Instruct,来验证通过swift进行基于Muon优化器的微调训练。


在开始微调之前,请确保您的环境已准备妥当。


# pip install git+https://github.com/modelscope/ms-swift.git

git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .


微调脚本如下:



# 17GB
# ref: https://github.com/MoonshotAI/Moonlight/blob/master/examples/toy_train.py
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model Qwen/Qwen2.5-7B-Instruct \
    --train_type lora \
    --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \
              'AI-ModelScope/alpaca-gpt4-data-en#500' \
              'swift/self-cognition#500' \
    --optimizer muon \
    --torch_dtype bfloat16 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --learning_rate 1e-4 \
    --lora_rank 8 \
    --lora_alpha 32 \
    --target_modules all-linear \
    --gradient_accumulation_steps 16 \
    --eval_steps 50 \
    --save_steps 50 \
    --save_total_limit 5 \
    --logging_steps 5 \
    --max_length 2048 \
    --output_dir output \
    --system 'You are a helpful assistant.' \
    --warmup_ratio 0.05 \
    --dataloader_num_workers 4 \
    --model_author swift \
    --model_name swift-robot


训练显存占用:


如果要使用自定义数据集进行训练,你可以参考以下格式,并指定`--dataset <dataset_path>`。


{"messages": [{"role": "user", "content": "浙江的省会在哪?"}, {"role": "assistant", "content": "浙江的省会在杭州。"}]}
{"messages": [{"role": "system", "content": "你是个有用无害的数学计算器"}, {"role": "user", "content": "1+1等于几"}, {"role": "assistant", "content": "等于2"}, {"role": "user", "content": "再加1呢"}, {"role": "assistant", "content": "等于3"}]}


训练完成后,使用以下命令对训练后的权重进行推理:

提示:这里的`--adapters`需要替换成训练生成的last checkpoint文件夹。由于adapters文件夹中包含了训练的参数文件`args.json`,因此不需要额外指定`--model`,swift会自动读取这些参数。如果要关闭此行为,可以设置`--load_args false`。


CUDA_VISIBLE_DEVICES=0 \
swift infer \   
--adapters output/vx-xxx/
checkpoint-xxx \    
--stream true \  
--temperature 0


训练效果:


推送模型到ModelScope:


CUDA_VISIBLE_DEVICES=0 \
swift export \ 
--adapters output/vx-xxx/checkpoint-xxx \  
--push_to_hub true \   
--hub_model_id '<your-model-id>' \ 
--hub_token '<your-sdk-token>'


相关文章
|
2月前
|
人工智能 自然语言处理 测试技术
Moonlight-16B-A3B:月之暗面开源MoE模型,160亿参数仅需激活30亿,训练成本直接减半!Muon优化器效率2倍于AdamW
Moonlight-16B-A3B 是 Moonshot AI 推出的 MoE 模型,拥有 160 亿参数,激活参数仅 30 亿,使用优化的 Muon 优化器,计算效率提升 2 倍,适合大规模分布式训练。
120 3
|
2月前
|
算法 测试技术 Swift
Kimi开源Moonlight-16B-A3B:基于Muon优化器的高效大模型,性能与效率双突破!
最近,Muon优化器在训练小规模语言模型方面展示了强大的效果,但其在大规模模型上的可扩展性尚未得到验证。
132 0
|
8月前
|
分布式计算 关系型数据库 数据处理
深度揭秘:ADB之外的数据库战场,Planner与ORCA优化器,谁才是性能提升的幕后推手?
【8月更文挑战第27天】在数据库和Android调试领域,优化器如Planner与ORCA扮演着提升性能的关键角色。Planner作为传统数据库的核心,以成熟稳定、高度集成及易于扩展著称,适用于大多数查询优化场景。ORCA则凭借其模块化设计、高并发性和基于成本的优化策略,在处理复杂查询和大规模数据集时展现出色性能。尽管ADB本身不包含这些优化器,但其调试理念与优化器的设计理念相辅相成,共同推动技术进步。例如,在使用ORCA的数据库中,一个涉及多表连接的复杂查询可以被自动优化,通过评估不同连接策略的成本来选择最佳执行计划。这两种优化器各有所长,共同促进数据处理技术的发展。
106 0
|
5月前
|
机器学习/深度学习 算法 开发者
探索深度学习中的优化器选择对模型性能的影响
在深度学习领域,优化器的选择对于模型训练的效果具有决定性作用。本文通过对比分析不同优化器的工作原理及其在实际应用中的表现,探讨了如何根据具体任务选择合适的优化器以提高模型性能。文章首先概述了几种常见的优化算法,包括梯度下降法、随机梯度下降法(SGD)、动量法、AdaGrad、RMSProp和Adam等;然后,通过实验验证了这些优化器在不同数据集上训练神经网络时的效率与准确性差异;最后,提出了一些基于经验的规则帮助开发者更好地做出选择。
|
8月前
|
存储 机器学习/深度学习 算法
Adam-mini:内存占用减半,性能更优的深度学习优化器
论文提出一种新的优化器Adam-mini,在不牺牲性能的情况下减少Adam优化器的内存占用。
318 10
Adam-mini:内存占用减半,性能更优的深度学习优化器
|
8月前
|
缓存 Java Spring
Spring缓存实践指南:从入门到精通的全方位攻略!
【8月更文挑战第31天】在现代Web应用开发中,性能优化至关重要。Spring框架提供的缓存机制可以帮助开发者轻松实现数据缓存,提升应用响应速度并减少服务器负载。通过简单的配置和注解,如`@Cacheable`、`@CachePut`和`@CacheEvict`,可以将缓存功能无缝集成到Spring应用中。例如,在配置文件中启用缓存支持并通过`@Cacheable`注解标记方法即可实现缓存。此外,合理设计缓存策略也很重要,需考虑数据变动频率及缓存大小等因素。总之,Spring缓存机制为提升应用性能提供了一种简便快捷的方式。
94 0
|
11月前
|
达摩院 Linux 决策智能
阿里达摩院MindOpt优化求解器-月刊(2024年3月)
### MindOpt 优化求解器月刊(2024年3月) - 发布亮点:MAPL建模语言升级至V2.4,支持云上无安装使用和向量化建模语法。 - 新增功能:Linux用户可本地安装`maplpy`,并支持Python与MAPL混编。 - 实例分享:介绍背包问题的组合优化,展示如何在限定容量下最大化收益。 - 用户投稿:探讨机票超售时的最优调派策略,以最小化赔付成本。 - 加入互动:官方钉钉群32451444,更多资源及。 [查看详细内容](https://opt.aliyun.com/)
163 0
阿里达摩院MindOpt优化求解器-月刊(2024年3月)
|
11月前
|
机器学习/深度学习 达摩院
阿里达摩院MindOpt优化求解器-月刊(2024年4月)
【摘要】2024.04.30,阿里云发布了MindOpt优化求解器的新商品和功能。MindOpt现在已上架,提供超低价零售求解器,支持按需购买,可在阿里云平台上直接购买联网或不联网License。新版本V1.2发布,提升MILP性能,并增加PostScaling参数。此外,MindOpt Studio推出租户定制版,正处于邀测阶段。同时分享了使用MindOpt解决二分类SVM问题的案例。更多内容,可访问相关链接。
277 0
|
8月前
|
达摩院 供应链 安全
光储荷经济性调度问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文介绍使用MindOpt工具优化光储荷经济性调度的数学规划问题。光储荷经济性调度技术旨在最大化能源利用率和经济效益,应用场景包括分布式光伏微网、家庭能源管理系统、商业及工业用电、电力市场参与者等。文章详细阐述了如何通过数学规划方法解决虚拟电厂中的不确定性与多目标优化难题,并借助MindOpt云建模平台、MindOpt APL建模语言及MindOpt优化求解器实现问题建模与求解。最终案例展示了如何通过合理充放电策略减少37%的电费支出,实现经济与环保双重效益。读者可通过提供的链接获取完整源代码。
|
8月前
|
达摩院 BI 索引
切割问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文主要讲述了使用MindOpt工具对切割问题进行优化的过程与实践。切割问题是指从一维原材料(如木材、钢材等)中切割出特定长度的零件以满足不同需求,同时尽可能减少浪费的成本。文章通过实例详细介绍了如何使用MindOpt云上建模求解平台及其配套的MindOpt APL建模语言来解决此类问题,包括数学建模、代码实现、求解过程及结果分析等内容。此外,还讨论了一维切割问题的应用场景,并对其进行了扩展,探讨了更复杂的二维和三维切割问题。通过本文的学习,读者能够掌握利用MindOpt工具解决实际切割问题的方法和技术。

热门文章

最新文章