零成本上手:在魔塔社区用免费GPU微调InternLM2.5-7B-Chat实战
1. 为什么选择魔塔社区进行大模型微调第一次接触大模型微调的朋友们可能都有这样的困惑动辄几十GB的模型参数没有高端显卡怎么玩得转这里就要给大家安利一个宝藏平台——阿里魔塔社区。我去年刚开始研究大模型时也是被硬件门槛劝退了好几次直到发现了这个提供免费GPU的神仙社区。魔塔社区对新用户特别友好注册就送几十小时的免费GPU算力。实测下来用他们的T4显卡微调7B模型完全够用速度比本地3060还要快。最关键的是整个过程只需要一个浏览器连SSH都不用配置对新手简直不要太友好。说到InternLM2.5-7B-Chat这个模型它在中文对话场景表现非常亮眼。相比同类7B模型它的上下文理解能力更强特别是在多轮对话时不会轻易失忆。我用它做过客服场景的微调效果比直接调用API划算多了。2. 手把手注册与环境配置2.1 注册与资源领取打开魔塔社区官网modelscope.cn用手机号注册账号后在控制台就能看到免费资源的入口。这里有个小技巧建议选择GPU(T4)规格16GB显存刚好够7B模型微调。启动环境时可能会排队建议早上操作人少些。环境启动后别急着关页面系统会计时。我有次忘了点暂停白白浪费了4小时额度。进入JupyterLab后先新建一个Python3 Notebook建议命名为internlm_finetune方便管理。2.2 基础环境搭建在第一个代码单元格执行这些命令!pip install -U pip !pip install torch2.1.2 transformers4.40.0 !git clone https://github.com/InternLM/xtuner.git安装XTuner时可能会遇到依赖冲突这时候加上--ignore-installed参数就好。接着打开Launcher里的Terminal执行cd xtuner pip install -e .[deepspeed]这个过程大概要10分钟可以去泡杯咖啡。遇到过网络问题的同学可以试试换阿里云的pip源速度能快不少。3. 模型与数据准备实战3.1 快速下载模型权重在Notebook里直接运行!git clone https://www.modelscope.cn/Shanghai_AI_Laboratory/internlm2_5-7b-chat.git16G的模型下载确实需要耐心我实测校园网大概要25分钟。有个省时间的技巧如果中断了可以用git lfs pull继续下载不用重头开始。下载完成后检查下文件结构应该包含这些关键文件config.jsonmodeling_internlm2.pypytorch_model-00001-of-00002.bin3.2 处理微调数据集我们使用EmoLLM提供的情感对话数据集!git clone https://github.com/SmartFlowAI/EmoLLM.git数据集是JSON格式每条记录包含多轮对话。建议先用Python简单分析下数据分布import json with open(EmoLLM/datasets/multi_turn_dataset_2.json) as f: data json.load(f) print(f总样本数{len(data)}) print(f平均对话轮次{sum(len(d[conversation]) for d in data)/len(data):.1f})4. 关键配置与微调技巧4.1 配置文件详解把XTuner提供的配置模板复制到当前目录!cp xtuner/configs/internlm2_5_chat_7b/internlm2_5_chat_7b_qlora_oasst1_e3.py .主要修改这几个参数pretrained_model_name_or_path ./internlm2_5-7b-chat # 模型路径 data_path ./EmoLLM/datasets/multi_turn_dataset_2.json # 数据路径 batch_size 2 # T4显卡建议设为2 max_epochs 3 # 小数据集可以增加到54.2 启动训练与监控运行这个命令开始微调!xtuner train internlm2_5_chat_7b_qlora_oasst1_e3.py训练过程中可以监控GPU使用情况!nvidia-smi -l 1正常情况显存占用应该在14-15GB左右。如果发现OOM错误尝试把batch_size调小。5. 模型转换与效果测试5.1 格式转换实操训练完成后先转换模型格式!xtuner convert pth_to_hf ./internlm2_5_chat_7b_qlora_oasst1_e3.py \ ./work_dirs/internlm2_5_chat_7b_qlora_oasst1_e3/iter_1050.pth \ ./hf_adapter然后合并基础模型和Adapter!xtuner convert merge ./internlm2_5-7b-chat ./hf_adapter ./merged \ --max-shard-size 2GB5.2 对话测试技巧用这个命令快速测试效果!xtuner chat ./merged --prompt-template internlm_chat试试这些提问用心理医生的口吻安慰考试失利的患者如何区分抑郁症和普通情绪低落 你会发现微调后的模型回答明显更专业了。建议多准备些边缘case测试比如用户说不想活了时观察模型是否会给出正确引导。6. 部署为可交互Demo6.1 快速搭建Web界面新建app.py文件from transformers import AutoTokenizer, AutoModelForCausalLM import gradio as gr model AutoModelForCausalLM.from_pretrained(./merged, device_mapauto) tokenizer AutoTokenizer.from_pretrained(./merged) def respond(message, history): response, _ model.chat(tokenizer, message, historyhistory) return response gr.ChatInterface(respond).launch()运行后会在7860端口启动服务!python app.py6.2 性能优化建议如果响应速度慢可以尝试这些优化加载模型时加上torch_dtypetorch.float16使用vLLM等推理加速框架对长对话启用do_sampleFalse减少生成时间记得用完及时在魔塔社区控制台暂停环境省下的额度下次还能用。这套流程跑通后你可以尝试更换其他数据集比如法律咨询或编程助手场景方法都是相通的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2494501.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!