瓯北网站制作,军事新闻视频,wordpress文章注册才能预览,前端开发培训要多少钱文章介绍了开源大模型的概念及LLaMA Factory工具的使用。详细讲解了模型微调流程#xff0c;包括数据集准备#xff08;Alpaca、ShareGPT等多种格式#xff09;、训练参数配置、模型合并与量化技术。最后介绍了模型评估、分布式训练以及多种部署方式#xff0c;如GGUF格式转…文章介绍了开源大模型的概念及LLaMA Factory工具的使用。详细讲解了模型微调流程包括数据集准备Alpaca、ShareGPT等多种格式、训练参数配置、模型合并与量化技术。最后介绍了模型评估、分布式训练以及多种部署方式如GGUF格式转换、Ollama部署和Open WebUI接口为开发者提供了从微调到部署的完整解决方案。开源大模型微调和部署什么是开源大模型开源大模型与传统开源代码虽然都带有开源二字但本质上存在很大差异。开源大模型是指公开模型权重和架构的人工智能模型比如LLaMA、Qwen、DeepSeek等。这些模型通常有数十亿甚至上千亿参数能够处理自然语言、图像等多模态任务。开放内容是否通常公开模型权重✅ 公开模型架构✅ 公开推理代码✅ 公开训练代码❌ 很少公开训练数据❌ 几乎不公开训练过程❌ 不公开开源大模型更像是免费使用的黑盒而传统开源软件是完全透明的白盒。开源大模型的开源更多是一种商业策略让模型获得更广泛的使用和生态支持但本质上与传统的开源精神——透明、协作、可重现——有很大差距。下面看看怎么对开源大模型进行微调本文主要介绍LLaMA Factory这个工具LLaMA Factory官方文档https://llamafactory.readthedocs.io/zh-cn/latest/LLaMA Factory项目地址https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.mdLLaMA Factory 是一个简单易用且高效的大型语言模型Large Language Model训练与微调平台。致力于简化大型的定制过程。它集成了多种训练策略和监控工具提供了命令行和 WebUI 等多种交互方式大幅降了模型微调的技术门槛。通过 LLaMA Factory可以在无需编写任何代码的前提下在本地完成上百种预训练模型的微调框架特性包括•模型种类LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。•训练算法增量预训练、多模态指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。•运算精度16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。•优化算法GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA、LoftQ 和 PiSSA。•加速算子FlashAttention-2 和 Unsloth。•推理引擎Transformers 和 vLLM。•实验监控LlamaBoard、TensorBoard、Wandb、MLflow、SwanLab 等等。使用LLaMa Factory目标• 安装• 数据集准备• 基于Lora训练/微调• 模型合并与量化• 模型推理• 模型评估• 分布训练• 模型部署和调用安装• 从源码安装可能需要先安装CUDA略git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.gitcd LLaMA-Factorypip install -e .[torch,metrics] --no-build-isolation• docker安装镜像中已经有了环境了docker run -it --rm --gpusall --ipchost hiyouga/llamafactory:latest数据集准备文档https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.mddataset_info.json 包含了所有经过预处理的 本地数据集 以及 在线数据集。如果您希望使用自定义数据集请务必 在 dataset_info.json 文件中添加对数据集及其内容的定义。支持Alpaca格式和ShareGPT格式的数据集。Alpaca针对不同的任务有不同的格式• 指令监督微调instruction 列对应的内容为人类指令 input 列对应的内容为人类输入 output 列对应的内容为模型回答。下面是一个例子, instruction input是人类最终输入output是模型回答data.json文件如下{ instruction: 计算这些物品的总费用。 ,input: 输入汽车 - $3000衣服 - $100书 - $20。,output: 汽车、衣服和书的总费用为 $3000 $100 $20 $3120。},dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, columns: { prompt: instruction, query: input, response: output, system: system, history: history }}• 预训练大语言模型通过学习未被标记的文本进行预训练从而学习语言的表征。通常预训练数据集从互联网上获得因为互联网上提供了大量的不同领域的文本信息有助于提升模型的泛化能力。data.json文件如下[ {text: document}, {text: document}]dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, columns: { prompt: text }}• 偏好训练偏好数据集用于奖励模型训练、DPO 训练和 ORPO 训练。对于系统指令和人类输入偏好数据集给出了一个更优的回答和一个更差的回答。一些研究 表明通过让模型学习“什么更好”可以使得模型更加迎合人类的需求。甚至可以使得参数相对较少的模型的表现优于参数更多的模型。data.json文件如下[ { instruction: 人类指令必填, input: 人类输入选填, chosen: 优质回答必填, rejected: 劣质回答必填 }]dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, ranking: true, columns: { prompt: instruction, query: input, chosen: chosen, rejected: rejected }}• KTOKTO数据集与偏好数据集类似但不同于给出一个更优的回答和一个更差的回答KTO数据集对每一轮问答只给出一个 true/false 的 label。除了 instruction 以及 input 组成的人类最终输入和模型回答 output KTO 数据集还需要额外添加一个 kto_tag 列true/false来表示人类的反馈。data.json文件如下[ { instruction: 人类指令必填, input: 人类输入选填, output: 模型回答必填, kto_tag: 人类反馈 [true/false]必填 }]dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, columns: { prompt: instruction, query: input, response: output, kto_tag: kto_tag }}• 多模态支持 多模态图像数据集、 视频数据集 以及 音频数据集 的输入。图像data.json文件如下视频videos、音频audios[ { instruction: 人类指令必填, input: 人类输入选填, output: 模型回答必填, images: [ 图像路径必填 ] }]dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, columns: { prompt: instruction, query: input, response: output, images: images }}ShareGPT针对不同任务数据集格式要求如下• 指令监督微调相比 alpaca 格式的数据集 sharegpt 格式支持 更多 的角色种类例如 human、gpt、observation、function 等等。它们构成一个对象列表呈现在 conversations 列中。下面是 sharegpt 格式的一个例子注意其中 human 和 observation 必须出现在奇数位置gpt 和 function 必须出现在偶数位置。data.json:{ conversations: [ { from: human, value: 你好我出生于1990年5月15日。你能告诉我我今天几岁了吗 }, { from: function_call, value: {\name\: \calculate_age\, \arguments\: {\birthdate\: \1990-05-15\}} }, { from: observation, value: {\age\: 31} }, { from: gpt, value: 根据我的计算你今天31岁了。 } ], tools: [{\name\: \calculate_age\, \description\: \根据出生日期计算年龄\, \parameters\: {\type\: \object\, \properties\: {\birthdate\: {\type\: \string\, \description\: \出生日期以YYYY-MM-DD格式表示\}}, \required\: [\birthdate\]}}]}dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, formatting: sharegpt, columns: { messages: conversations, system: system, tools: tools }}• 偏好训练Sharegpt 格式的偏好数据集同样需要在 chosen 列中提供更优的消息并在 rejected 列中提供更差的消息。下面是一个例子data.json:[ { conversations: [ { from: human, value: 人类指令 }, { from: gpt, value: 模型回答 }, { from: human, value: 人类指令 } ], chosen: { from: gpt, value: 优质回答 }, rejected: { from: gpt, value: 劣质回答 } }]dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, formatting: sharegpt, ranking: true, columns: { messages: conversations, chosen: chosen, rejected: rejected }}• OpenAI格式OpenAI 格式仅仅是 sharegpt 格式的一种特殊情况其中第一条消息可能是系统提示词。data.json:[ { messages: [ { role: system, content: 系统提示词选填 }, { role: user, content: 人类指令 }, { role: assistant, content: 模型回答 } ] }]dataset_info.json 中的 数据集描述 应为dataset_name: { file_name: data.json, formatting: sharegpt, columns: { messages: messages }, tags: { role_tag: role, content_tag: content, user_tag: user, assistant_tag: assistant, system_tag: system }}训练/微调通过WebUIllamafactory-cli webui或者 命令行llamafactory-cli train xx.yaml参数名称描述model_name_or_path模型名称或路径stage训练阶段可选: rm(reward modeling), pt(pretrain), sft(Supervised Fine-Tuning), PPO, DPO, KTO, ORPOdo_traintrue用于训练, false用于评估finetuning_type微调方式。可选: freeze, lora, fulllora_target采取LoRA方法的目标模块默认值为all。dataset使用的数据集使用”,”分隔多个数据集template数据集模板请保证数据集模板与模型相对应。output_dir输出路径logging_steps日志输出步数间隔save_steps模型断点保存间隔overwrite_output_dir是否允许覆盖输出目录per_device_train_batch_size每个设备上训练的批次大小gradient_accumulation_steps梯度积累步数max_grad_norm梯度裁剪阈值learning_rate学习率lr_scheduler_type学习率曲线可选linear,cosine,polynomial,constant等。num_train_epochs训练周期数bf16是否使用 bf16 格式warmup_ratio学习率预热比例warmup_steps学习率预热步数push_to_hub是否推送模型到 Huggingface合并与量化合并当我们基于预训练模型训练好 LoRA 适配器后我们不希望在每次推理的时候分别加载预训练模型和 LoRA 适配器因此我们需要将预训练模型和 LoRA 适配器合并导出成一个模型并根据需要选择是否量化。根据是否量化以及量化算法的不同导出的配置文件也有所区别。通过命令llamafactory-cli export merge_config.yaml配置文件示例# 基座模型路径model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct# 训练后的LoRA适配器adapter_name_or_path: saves/llama3-8b/lora/sfttemplate: llama3finetuning_type: lora### 导出配置-位置export_dir: models/llama3_lora_sft### 导出模型的大小export_size: 2export_device: cpuexport_legacy_format: false量化在完成模型合并并获得完整模型后为了优化部署效果人们通常会基于显存占用、使用成本和推理速度等因素选择通过量化技术对模型进行压缩从而实现更高效的部署。量化Quantization通过数据精度压缩有效地减少了显存使用并加速推理。LLaMA-Factory 支持多种量化方法包括:AQLM、AWQ、GPTQ、QLoRA …QLoRA 是一种在 4-bit 量化模型基础上使用 LoRA 方法进行训练的技术。它在极大地保持了模型性能的同时大幅减少了显存占用和推理时间。# 基座模型路径model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct# 训练后的LoRA适配器adapter_name_or_path: saves/llama3-8b/lora/sfttemplate: llama3finetuning_type: lora### 导出配置-位置export_dir: models/llama3_lora_sft### 导出模型的大小export_size: 2export_device: cpuexport_legacy_format: false推理可以使用 llamafactory-cli chat inference_config.yaml 或 llamafactory-cli webchat inference_config.yaml 进行推理与模型对话。对话时配置文件只需指定原始模型 model_name_or_path 和 template 并根据是否是微调模型指定 adapter_name_or_path 和 finetuning_type。如果您希望向模型输入大量数据集并保存推理结果您可以启动 vllm 推理引擎对大量数据集进行快速的批量推理。您也可以通过 部署 api 服务的形式通过 api 调用来进行批量推理。默认情况下模型推理将使用 Huggingface 引擎。 您也可以指定 infer_backend: vllm 以使用 vllm 推理引擎以获得更快的推理速度。完整模型推理### examples/inference/llama3.yamlmodel_name_or_path: meta-llama/Meta-Llama-3-8B-Instructtemplate: llama3infer_backend: huggingface #choices [huggingface, vllm]微调模型推理### examples/inference/llama3_lora_sft.yamlmodel_name_or_path: meta-llama/Meta-Llama-3-8B-Instructadapter_name_or_path: saves/llama3-8b/lora/sfttemplate: llama3finetuning_type: lorainfer_backend: huggingface #choices [huggingface, vllm]多模态模型推理model_name_or_path: llava-hf/llava-1.5-7b-hftemplate: vicunainfer_backend: huggingface #choices [huggingface, vllm]批量推理命令## 通过指定一个数据集批量进行推理python scripts/vllm_infer.py --model_name_or_path path_to_merged_model --dataset alpaca_en_demo评估懒得搬运了直接看文档吧https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/eval.html分布训练懒得搬运了直接看文档吧https://llamafactory.readthedocs.io/zh-cn/latest/advanced/distributed.html部署和调用市面上很多开源工具比较简单的可以使用Ollama Open WebUIhttps://github.com/ollama/ollamahttps://github.com/open-webui/open-webui转化成GGUF上面微调合成大模型格式是Huggingface提出的Safetensors格式GGUF格式是llama.cpp定义发布的一种大模型文件格式GGUF是一种二进制文件格式的规范GGUF格式可以更快的被载入使用消耗更低的资源。但是只能做推理不能训练生态相对封闭胜在部署简单。安装llama.cpp工具git clone https://github.com/ggerganov/llama.cpp.gitpip install -r llama.cpp/requirements.txt执行转换# 如果不量化保留模型的效果python llama.cpp/convert_hf_to_gguf.py /mnt/workspace/.cache/modelscope/models/LLM-Research/Meta-Llama-3-8B-Instruct --outtype f16 --verbose --outfile Meta-Llama-3-8B-Instruct_f16.gguf# 如果需要量化加速并有损效果直接执行下面脚本就可以python llama.cpp/convert_hf_to_gguf.py /mnt/workspace/.cache/modelscope/models/LLM-Research/Meta-Llama-3-8B-Instruct --outtype q8_0 --verbose --outfile Meta-Llama-3-8B-Instruct_q8_0.gguf安装Ollamacurl -fsSL https://ollama.com/install.sh | sh启动Ollamanohup ollama serve Ollama中创建模型并运行创建ModelFileFROM ./Meta-Llama-3-8B-Instruct_q8_0.gguf# set the temperature to 0.7 [higher is more creative, lower is more coherent]PARAMETER temperature 0.7PARAMETER top_p 0.8PARAMETER repeat_penalty 1.05TEMPLATE {{ if .System }}|im_start|system{{ .System }}|im_end|{{ end }}{{ if .Prompt }}|im_start|user{{ .Prompt }}|im_end|{{ end }}|im_start|assistant{{ .Response }}|im_end|# set the system messageSYSTEM You are a helpful assistant.运行命令创建模型ollama create Meta-Llama-3-8B-Instruct_q8_0 --file ./ModelFile运行模型ollama run Meta-Llama-3-8B-Instruct_q8_0使用Open WebUI# 安装pip install open-webui# 启动,访问http://localhost:8080open-webui serve还可以暴露API接口其他启动和使用方式看文档最后我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念通过动态追踪大模型开发、数据标注伦理等前沿技术趋势构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能 突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**