ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

LocalAI 微调实战指南:基于 TRL 后端的 LLM 微调 API、GRPO 奖励函数与 GGUF 导出全流程

LocalAI 微调实战指南:基于 TRL 后端的 LLM 微调 API、GRPO 奖励函数与 GGUF 导出全流程 LocalAI 微调实战指南基于 TRL 后端的 LLM 微调 API、GRPO 奖励函数与 GGUF 导出全流程【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAILocalAI 允许你通过 REST API 或 Web UI 直接对 LLM 进行微调底层由实现通用 gRPC 接口的可插拔训练后端驱动当前为基于 HuggingFace TRL 的 Python 后端支持 SFT、DPO、GRPO 等多种训练方法并可将训练产物一键导出为 LoRA 适配器、合并模型或 GGUF 格式直接注册回 LocalAI 投入推理。读完本篇你可以完整掌握微调任务的创建、SSE 进度监控、检查点管理、模型导出与数据集规范并能对照源码理解每一处默认值与安全边界背后的实现。支持的后端与可用性后端领域GPU 要求训练方法适配器类型trlLLM 微调无CPU 或 GPU 均可SFT、DPO、GRPO、RLOO、Reward、KTO、ORPOLoRA、Full微调功能在 LocalAI 中始终启用当开启鉴权时它是一项按用户开放的特性默认关闭OFF管理员可通过用户管理 API 为指定用户开启。这一点在源码中可以确认feature 注册表 将全部/api/fine-tuning/*端点绑定到FeatureFineTuning且特性默认值为false。注意该功能处于实验性阶段未来版本中接口与行为可能变化。从 TRL 后端实现 看设备与精度策略是自动的检测到 CUDA 时使用bfloat16与device_mapauto否则回退到 CPU 与float32load_in_4bit仅在有 GPU 时通过BitsAndBytesConfig生效。快速开始以下流程假设 LocalAI 已在本地8080端口运行默认端口。1. 启动微调任务curl -X POST http://localhost:8080/api/fine-tuning/jobs \ -H Content-Type: application/json \ -d { model: TinyLlama/TinyLlama-1.1B-Chat-v1.0, backend: trl, training_method: sft, training_type: lora, dataset_source: yahma/alpaca-cleaned, num_epochs: 1, batch_size: 2, learning_rate: 0.0002, adapter_rank: 16, adapter_alpha: 16, extra_options: { max_seq_length: 512 } }请求成功后返回id、status初始为queued与message。从 Go 侧任务服务 看每个任务会被分配独立的模型加载 IDbackend-finetune-jobID因此多个任务可并发运行输出目录固定写入DataPath/fine-tune/jobID/不可由用户配置。2. 监控进度SSE 流curl -N http://localhost:8080/api/fine-tuning/jobs/{job_id}/progressSSE 事件的字段定义在 进度事件结构 中current_step/total_steps、current_epoch/total_epochs、loss、learning_rate、grad_norm、eval_loss、eta_seconds、progress_percent、status、message、checkpoint_path、sample_path以及extra_metrics。这些数值由 TRL 后端内的 HuggingFaceTrainerCallbackon_log/on_evaluate/on_save等钩子计算后经 gRPC 流式回传Python 回调实现 还会在评估阶段按每 10 个预测批次节流发送一次更新避免 UI 冻结。3. 列出检查点curl http://localhost:8080/api/fine-tuning/jobs/{job_id}/checkpoints后端扫描输出目录下所有checkpoint-*目录并读取其中的trainer_state.json提取 step、epoch、loss 等元数据实现见 ListCheckpoints。4. 导出模型curl -X POST http://localhost:8080/api/fine-tuning/jobs/{job_id}/export \ -H Content-Type: application/json \ -d { export_format: gguf, quantization_method: q4_k_m, output_path: /models/my-finetuned-model }导出是异步的接口立即返回目标模型名任务进入exporting状态完成后模型会自动生成 YAML 配置并注册进 models 目录随即可直接用于推理注册流程见 ExportModel。若未指定模型名系统按base模型名-ft-jobID前8位自动命名重名会直接报错。API 参考端点一览方法路径说明POST/api/fine-tuning/jobs启动微调任务GET/api/fine-tuning/jobs列出所有任务GET/api/fine-tuning/jobs/:id获取任务详情DELETE/api/fine-tuning/jobs/:id停止/移除运行中的任务GET/api/fine-tuning/jobs/:id/progressSSE 进度流GET/api/fine-tuning/jobs/:id/checkpoints列出检查点POST/api/fine-tuning/jobs/:id/export导出模型POST/api/fine-tuning/datasets上传数据集文件对照 路由注册源码 可以看到实际注册的端点比上表更细停止操作走独立的POST /jobs/:id/stop底层通过ShutdownModel直接终止后端进程实现停止DELETE /jobs/:id则用于删除任务及其数据运行中的任务拒绝删除需先停止另有GET /backends查询可用微调后端、GET /jobs/:id/download下载已导出模型。所有端点统一挂载鉴权中间件即前文所述的按用户开关。任务请求字段下表完整继承官方文档字段并在“默认值/说明”列补充了 后端实际默认值 的核对结果字段类型说明modelstringHuggingFace 模型 ID 或本地路径必填backendstring后端名默认trltraining_methodstringsft、dpo、grpo、rloo、reward、kto、orpotraining_typestringlora或fulldataset_sourcestringHuggingFace 数据集 ID 或本地文件路径必填adapter_rankintLoRA rank默认 16adapter_alphaintLoRA alpha默认 16num_epochsint训练轮数默认 3batch_sizeint单设备 batch size默认 2learning_ratefloat学习率默认 2e-4gradient_accumulation_stepsint梯度累积步数默认 4warmup_stepsint预热步数默认 5optimizerstringadamw_torch、adamw_8bit、sgd、adafactor、prodigyextra_optionsmap后端专属选项见下文请求结构定义见 FineTuneJobRequest。从源码结构看除上表外请求体还支持以下字段文档表格未列出但接口已实现字段类型说明adapter_dropoutfloatLoRA dropout默认 0未设置时 LoRA 目标模块为all-lineartarget_modules[]stringLoRA 目标模块列表max_stepsint最大训练步数默认 -1即按 epoch 训练save_stepsint检查点保存间隔默认 500weight_decayfloat权重衰减默认 0.01gradient_checkpointingbool显存换时间的梯度检查点GPU 模式seedint随机种子默认 3407mixed_precisionstring混合精度模式dataset_splitstring数据集 split默认trainresume_from_checkpointstring从指定检查点续训后端专属选项extra_optionsTRL 通用选项Key说明默认max_seq_length最大序列长度SFT512packing启用序列打包falsetrust_remote_code信任模型中的远程代码falseload_in_4bit4-bit 量化加载仅 GPUfalse训练流程源码 还暴露了若干评估与保存相关的扩展键按需通过extra_options传入hf_token访问 HuggingFace 门禁gated仓库的 token也可用后端进程的HF_TOKEN环境变量提供门禁仓库认证失败时后端会给出明确错误提示eval_strategy/eval_steps/eval_split/eval_dataset_source/eval_split_ratio评估策略与验证集来源未显式指定时默认从训练集按0.1比例自动切分save_strategysteps/epoch/no与save_total_limit检查点保存节奏与保留数量0 表示不限use_cpu、bf16、fp16、gradient_checkpointing可显式覆盖 CPU/GPU 自动选择的训练参数。DPO 专属training_methoddpoKey说明默认betaKL 惩罚系数0.1loss_type损失类型sigmoid、hinge、iposigmoidmax_length最大序列长度512GRPO 专属training_methodgrpoKey说明默认num_generations每个 prompt 的生成数量4max_completion_length补全最大 token 数256GRPO 奖励函数GRPO 训练必须提供奖励函数来评估模型补全质量可通过类型化数组字段reward_functions或extra_options[reward_funcs]JSON 字符串两种方式指定Go 侧会把reward_functions序列化后统一注入extra_options[reward_funcs]传给后端见 StartJob。内置奖励函数以下六个内置函数定义在 reward_functions.py签名均为 TRL 风格的(completions, **kwargs) - list[float]名称说明参数format_reward检查 ...【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表