LLM微调服务器

Unsloth MCP Server是一个为Unsloth库设计的MCP服务器,能够使大型语言模型的微调速度提升2倍,内存使用减少80%。

  • by OtotaO
  • JavaScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 OtotaO/unsloth-mcp-server

使用说明

卸下MCP服务器

MCP服务器 不懒 -该库使LLM微调速度提高了2倍,内存减少了80%。

什么是Uncloth?

Unloth是一个库,它大大提高了微调大型语言模型的效率:

  • 速度:与标准方法相比,微调速度快2倍
  • 记忆:VRAM使用率降低80%,允许在消费级GPU上对较大型号进行微调
  • 上下文长度:长达13倍的上下文长度(例如,80GB GPU上Llama 3.3的89K令牌)
  • 准确度:模型质量或性能没有损失

Unloth通过用OpenAI的Triton语言编写的自定义CUDA内核、优化的反向传播和动态4位量化来实现这些改进。

特征

  • 优化Llama、Mistral、Phi、Gemma和其他型号的微调
  • 用于高效训练的4位量化
  • 扩展上下文长度支持
  • 用于模型加载、微调和推理的简单API
  • 导出为各种格式(GGUF、拥抱脸等)

安装

当前状态: 从源代码安装(如下)。该包是为npm准备的 (name, bin, server.json 注册表清单已到位),但 尚未 发表 --the npx-下一节中的基于配置仅在 npm发布土地。

  1. 在将运行微调的机器上安装Uncloth: pip install unsloth

  2. 从源构建服务器:

    git clone https://github.com/OtotaO/unsloth-mcp-server.git
    cd unsloth-mcp-server
    npm install
    npm run build
    
  3. 指向您的MCP客户端(克劳德桌面, 克劳德代码, 克莱恩, 光标,…)在建成的入口点:

    {
      "mcpServers": {
        "unsloth": {
          "command": "node",
          "args": ["/path/to/unsloth-mcp-server/build/index.js"],
          "env": { "HUGGINGFACE_TOKEN": "your_token_here" }
        }
      }
    }
    

    HUGGINGFACE_TOKEN 是可选的(仅适用于门控/私人模式)。省略 env 如果你不使用,请屏蔽。

npm发布后(计划中)

一旦发布到npm unsloth-mcp-server,相同的客户端可以通过以下方式在stdio上运行它 npx 没有克隆/构建:

{
  "mcpServers": {
    "unsloth": {
      "command": "npx",
      "args": ["-y", "unsloth-mcp-server"],
      "env": { "HUGGINGFACE_TOKEN": "your_token_here" }
    }
  }
}

对于 克劳德代码: claude mcp add unsloth -- npx -y unsloth-mcp-server

可用工具

check_安装

验证系统上是否正确安装了Uncloth。

参数:无

示例:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "check_installation",
  arguments: {}
});

list_supported_models

获取Uncloth支持的所有型号的列表,包括Llama、Mistral、Phi和Gemma变体。

参数:无

示例:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "list_supported_models",
  arguments: {}
});

load_model

加载带有Unloth优化的预训练模型,以实现更快的推理和微调。

参数:

  • model_name (必填):要加载的模型名称(例如,“unsloth/Llama-3.2-1B”)
  • max_seq_length (可选):模型的最大序列长度(默认值:2048)
  • load_in_4bit (可选):是否以4位量化加载模型(默认值:true)
  • use_gradient_checkpointing (可选):是否使用梯度检查点来节省内存(默认值:true)

示例:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "load_model",
  arguments: {
    model_name: "unsloth/Llama-3.2-1B",
    max_seq_length: 4096,
    load_in_4bit: true
  }
});

finetune_型号

使用LoRA/QLoRA技术使用Unloth优化对模型进行微调。

参数:

  • model_name (必填):要微调的型号名称
  • dataset_name (必填):用于微调的数据集名称
  • output_dir (必填):保存微调模型的目录
  • max_seq_length (可选):训练的最大序列长度(默认值:2048)
  • lora_rank (可选):LoRA微调排名(默认值:16)
  • lora_alpha (可选):用于LoRA微调的Alpha(默认值:16)
  • batch_size (可选):训练批量大小(默认值:2)
  • gradient_accumulation_steps (可选):梯度累积步数(默认值:4)
  • learning_rate (可选):培训学习率(默认值:2e-4)
  • max_steps (可选):最大训练步数(默认值:100)
  • dataset_text_field (可选):数据集中包含文本的字段(默认值:'text')
  • load_in_4bit (可选):是否使用4位量化(默认值:true)

示例:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "finetune_model",
  arguments: {
    model_name: "unsloth/Llama-3.2-1B",
    dataset_name: "tatsu-lab/alpaca",
    output_dir: "./fine-tuned-model",
    max_steps: 100,
    batch_size: 2,
    learning_rate: 2e-4
  }
});

generate_text

使用微调的Uncloth模型生成文本。

参数:

  • model_path (必填):通往微调模型的路径
  • prompt (必填):文本生成提示
  • max_new_tokens (可选):要生成的最大令牌数(默认值:256)
  • temperature (可选):文本生成温度(默认值:0.7)
  • top_p (可选):Top-p用于文本生成(默认值:0.9)

示例:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "generate_text",
  arguments: {
    model_path: "./fine-tuned-model",
    prompt: "Write a short story about a robot learning to paint:",
    max_new_tokens: 512,
    temperature: 0.8
  }
});

导出模型

将微调后的Unloth模型导出为各种格式以进行部署。

参数:

  • model_path (必填):通往微调模型的路径
  • export_format (必填):导出格式(gguf、ollama、vllm、hugginface)
  • output_path (必填):保存导出模型的路径
  • quantization_bits (可选):量化位(用于GGUF导出)(默认值:4)

示例:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "export_model",
  arguments: {
    model_path: "./fine-tuned-model",
    export_format: "gguf",
    output_path: "./exported-model.gguf",
    quantization_bits: 4
  }
});

高级用法

自定义数据集

您可以通过正确格式化自定义数据集并将其托管在Hugging Face上或提供本地路径来使用它们:

const result = await use_mcp_tool({
  server_name: "unsloth",
  tool_name: "finetune_model",
  arguments: {
    model_name: "unsloth/Llama-3.2-1B",
    dataset_name: "json",
    data_files: {"train": "path/to/your/data.json"},
    output_dir: "./fine-tuned-model"
  }
});

内存优化

对于硬件有限的大型型号:

  • 减少批量大小并增加梯度累积步骤
  • 使用4位量化
  • 启用渐变检查点
  • 尽可能缩短序列长度

故障排除

常见问题

  1. CUDA内存不足:减小批量大小,使用4位量化,或尝试较小的模型
  2. 导入错误:确保安装了正确版本的割炬、变压器和无纺布
  3. 未找到型号:检查您是否使用受支持的型号名称或是否有权访问私有型号

版本兼容性

  • Python:3.10、3.11或3.12(不是3.13)
  • CUDA:建议11.8或12.1+
  • PyTorch:2.0+推荐

性能基准

模型 VRAM 解布速度 VRAM缩减 上下文长度
Llama 3.3(70B) 80GB 快2倍 >75% 长13倍
Llama 3.1(8B) 80GB 快2倍 >70% 长12倍
Mistral v0.3(7B) 80GB 快2.2倍 少75% -

需求

  • Python 3.10-3.12
  • 支持CUDA的NVIDIA GPU(推荐)
  • Node.js和npm

许可证

阿帕奇-2.0