2026/5/21 15:40:20
网站建设
项目流程
网站做众筹需哪些条件,闵行20路,wordpress 滑块验证码,大连精美网站制作Mac跑不动Unsloth#xff1f;这份apple_silicon_support分支使用指南请收好
随着大语言模型#xff08;LLM#xff09;微调需求的快速增长#xff0c;Unsloth 作为一款专注于提升训练效率、降低显存占用的开源框架#xff0c;受到了广泛关注。其宣称可实现 2倍训练速度提…Mac跑不动Unsloth这份apple_silicon_support分支使用指南请收好随着大语言模型LLM微调需求的快速增长Unsloth作为一款专注于提升训练效率、降低显存占用的开源框架受到了广泛关注。其宣称可实现2倍训练速度提升和70%显存降低的性能优势吸引了大量开发者尝试部署。然而对于 Apple Silicon 芯片M1/M2/M3 系列的 macOS 用户而言官方主分支并不直接支持导致在本地运行时频繁遇到兼容性问题。幸运的是社区贡献者shashikanth-a提交了apple_silicon_support分支为 Mac 用户提供了可行的解决方案。本文将系统梳理该非官方分支的安装与使用全流程帮助你在 Mac 上顺利启用 Unsloth 进行高效 LLM 微调。1. 为什么Mac无法直接运行官方UnslothUnsloth 官方 GitHub 仓库unslothai/unsloth目前明确支持Windows 和 Linux平台其安装脚本和底层依赖并未针对 macOS 做适配。尽管 Apple Silicon 在 AI 推理方面表现出色但由于 Metal 后端与 PyTorch 生态的部分不兼容直接通过pip install unsloth[pytroch-ampere]安装会失败或报错。早在 2023 年社区就提出了对 macOS 支持的需求如 Issue #4但截至当前官方仍未合并相关 PR。直到 2025 年 3 月开发者shashikanth-a提交了 PR #1289 ——apple_silicon_support实现了对 MLX 框架的集成使得 Unsloth 可以在 Apple Silicon 上运行。该 PR 目前仍处于测试阶段尚未合并至主分支因此我们需手动克隆并安装此特定分支。2. 准备工作环境与版本要求在开始安装前请确保你的开发环境满足以下条件2.1 系统与硬件要求操作系统macOS 12.0 或更高版本芯片架构Apple SiliconM1/M2/M3 系列内存建议至少 16GB RAM推荐 32GB 以上以支持较大模型2.2 Python 版本限制Unsloth 当前仅支持Python 3.9 至 3.12不支持 Python 3.13。若你默认安装了 3.13请务必降级。推荐使用conda或miniforge管理虚拟环境尤其适合 Apple Silicon 的优化构建# 创建指定 Python 版本的 conda 环境 conda create -n unsloth_env python3.12 conda activate unsloth_env提示Miniforge 是专为 Apple Silicon 设计的 Conda 发行版能更好地处理 ARM 架构下的包依赖。可通过 https://github.com/conda-forge/miniforge 下载安装。3. 安装 apple_silicon_support 分支由于该分支尚未被官方采纳我们需要从贡献者的 fork 中拉取代码并本地安装。3.1 克隆代码仓库git clone https://github.com/shashikanth-a/unsloth.git -b apple_silicon_support cd unsloth注意必须指定-b apple_silicon_support分支否则默认会拉取不支持 Mac 的 main 分支。如果 git 克隆失败也可直接访问 https://github.com/shashikanth-a/unsloth/tree/apple_silicon_support 下载 ZIP 包并解压。3.2 创建并激活虚拟环境建议在项目根目录下创建独立环境避免污染全局依赖python -m venv unsloth_venv source unsloth_venv/bin/activate或继续使用 conda 环境conda activate unsloth_env3.3 安装依赖Unsloth 支持多种后端选项此处我们选择 Hugging Face 集成版本pip install -e .[huggingface]该命令将根据pyproject.toml文件安装所有必需依赖包括 -transformers-datasets-mlxApple Silicon 核心推理框架 -peft-safetensors-hf-to-gguf用于导出 GGUF 格式安装过程可能耗时较长且会自动编译部分组件请耐心等待。3.4 验证安装是否成功安装完成后执行以下命令验证python -m unsloth若输出类似 Unsloth: Will patch your computer to enable 2x faster free finetuning.的欢迎信息则表示安装成功。此外也可检查 conda 环境列表确认conda env list应能看到unsloth_env或对应环境已存在。4. 使用 unsloth 进行模型微调安装完成后即可开始使用 Unsloth 对 LLM 进行 LoRA 微调。以下是基于 MLX 后端的完整实践流程。4.1 CLI 工具快速上手Unsloth 提供了命令行接口unsloth-cli.py可用于快速启动训练任务python unsloth-cli.py --help输出将展示所有可用参数涵盖模型加载、LoRA 配置、训练超参、日志记录和模型保存等模块。例如 Model Options: --model_name MODEL_NAME 模型名称如 unsloth/Llama-3.2-3B-Instruct --max_seq_length MAX_SEQ_LENGTH 最大序列长度默认 2048 --load_in_4bit 是否启用 4-bit 量化 LoRA Options: --r R LoRA 秩rank常用值 8, 16, 32 --lora_alpha LORA_ALPHA LoRA alpha 参数 --lora_dropout LORA_DROPOUT Dropout 比例 Training Options: --per_device_train_batch_size 单设备批次大小 --learning_rate 学习率默认 2e-4 --max_steps 最大训练步数这些参数也可通过 Python 脚本调用便于集成到项目中。4.2 编程方式实现微调任务以下是一个完整的 Python 示例演示如何使用unsloth.mlx模块在 Mac 上进行 LoRA 微调。核心代码实现from unsloth.mlx import mlx_utils from unsloth.mlx import lora as mlx_lora from unsloth import is_bfloat16_supported from transformers.utils import strtobool from datasets import Dataset import logging import os import argparse # 构造参数对象模拟 CLI 输入 args argparse.Namespace( # 模型配置 model_nameunsloth/Llama-3.2-3B-Instruct, max_seq_length2048, dtypebfloat16 if is_bfloat16_supported() else float16, load_in_4bitTrue, # LoRA 设置 r16, lora_alpha16, lora_dropout0.1, biasnone, use_gradient_checkpointingunsloth, random_state3407, use_rsloraFalse, loftq_configNone, # 训练参数 per_device_train_batch_size2, gradient_accumulation_steps4, warmup_steps5, max_steps100, learning_rate2e-4, optimadamw_8bit, weight_decay0.01, lr_scheduler_typelinear, seed3407, # 日志与输出 output_diroutputs, report_totensorboard, logging_steps1, # 保存设置 adapter_fileadapters.safetensors, save_modelTrue, save_methodmerged_16bit, save_ggufFalse, save_pathmodel, quantizationq8_0 ) logging.getLogger(hf-to-gguf).setLevel(logging.WARNING)数据集准备与格式化print(Loading pretrained model. This may take a while...) model, tokenizer, config mlx_utils.load_pretrained( args.model_name, dtypeargs.dtype, load_in_4bitargs.load_in_4bit ) print(Model loaded) # 定义 Alpaca 风格 prompt 模板 alpaca_prompt Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request. ### Instruction: {} ### Input: {} ### Response: {} EOS_TOKEN tokenizer.eos_token def formatting_prompts_func(examples): instructions examples[instruction] inputs examples[input] outputs examples[output] texts [] for instruction, input, output in zip(instructions, inputs, outputs): text alpaca_prompt.format(instruction, input, output) EOS_TOKEN texts.append(text) return {text: texts} # 构建简易测试数据集 basic_data { instruction: [ Summarize the following text, Translate this to French, Explain this concept ], input: [ The quick brown fox jumps over the lazy dog., Hello world, Machine learning is a subset of artificial intelligence ], output: [ A fox quickly jumps over a dog., Bonjour le monde, Machine learning is an AI approach where systems learn patterns from data ] } dataset Dataset.from_dict(basic_data) dataset dataset.map(formatting_prompts_func, batchedTrue) datasets dataset.train_test_split(test_size0.33) print(fTraining examples: {len(datasets[train])}, Test examples: {len(datasets[test])})启动训练print(Starting training) mlx_lora.train_model(args, model, tokenizer, datasets[train], datasets[test])输出示例Trainable parameters: 0.143% (4.588M/3212.750M) Starting training..., iters: 100 Iter 1: Val loss 2.323, Val took 1.660s Iter 1: Train loss 2.401, Learning Rate 0.000e00, It/sec 0.580, Tokens/sec 117.208, Trained Tokens 202, Peak mem 2.661 GB Iter 2: Train loss 2.134, Learning Rate 0.000e00, It/sec 0.493, Tokens/sec 119.230, Trained Tokens 444, Peak mem 2.810 GB训练过程中Unsloth 会自动利用 MLX 在 Metal GPU 上加速计算并通过 LoRA 显著减少可训练参数量从而降低内存压力。5. 常见问题与优化建议5.1 安装失败常见原因问题解决方案No module named unsloth确保已执行pip install -e .[huggingface]并处于正确虚拟环境中Python 3.13 不支持使用conda install python3.12强制降级mlx not found手动安装pip install mlx ml-extrasgit clone 失败改为下载 ZIP 并解压再进入目录安装5.2 性能优化建议启用 4-bit 量化设置load_in_4bitTrue可大幅降低显存占用。调整 batch sizeApple Silicon 显存有限建议per_device_train_batch_size1~2。使用 bfloat16若设备支持开启bfloat16可提升数值稳定性。关闭不必要的日志如hf-to-gguf日志级别设为WARNING以减少干扰。5.3 模型导出与部署训练完成后可通过以下方式导出模型合并 LoRA 权重使用save_methodmerged_16bit生成完整模型转换为 GGUF设置save_ggufTrue和quantizationq4_k_m便于在 llama.cpp 等本地推理引擎中使用推送至 Hugging Face Hub启用push_modelTrue实现一键发布6. 总结尽管 Unsloth 官方尚未正式支持 macOS但通过社区维护的apple_silicon_support分支Apple Silicon 用户已能顺利在其设备上运行高效的 LLM 微调任务。本文详细介绍了从环境搭建、分支安装到实际训练的完整流程并提供了可运行的代码示例与避坑指南。关键要点总结如下必须使用shashikanth-a/unsloth:apple_silicon_support分支官方主分支不兼容 Mac。Python 版本需锁定为 3.12 或以下避免因版本过高导致依赖冲突。推荐使用 conda/miniforge 管理环境确保 Metal 后端正确加载。训练时优先启用 4-bit 量化与 LoRA以适应 Mac 的内存限制。该分支仍处于测试阶段建议关注 PR #1289 的合并进展未来有望成为官方支持的一部分。随着 MLX 生态的不断完善Apple Silicon 在本地 AI 开发中的地位日益重要。Unsloth 的这一适配无疑为个人开发者和研究者提供了一个轻量、高效的大模型微调入口。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。