Unsloth on DGX Spark
使用 Unsloth 优化微调
基本理念
性能优先:它声称可以加快训练速度 (例如。与标准方法相比,在单 GPU 上速度提高 2%,在多 GPU 设置中速度提高 30%) ,并减少显存占用。
内核级优化:核心计算使用自定义内核 (例如。并手动优化数学运算,以提高吞吐量和效率。
量化和模型格式:支持动态量化 (4 位、16 位) 和 GGUF 格式,可在保持准确性的同时减少占用空间。
广泛的模型支持:适用于许多 LLM (Qwen、DeepSeek 等) 并支持训练、微调和导出为 Ollama、vLLM、GGUF、Hugging Face 等格式。
简化的界面:提供易于使用的 Notebook 和工具,因此用户可以用最少的样板文件微调模型。
您将完成的任务
您将在 NVIDIA Spark 设备上设置 Unsloth,以优化大语言模型的微调,实现高达 2 倍的训练速度提升,并通过高效的 参数高效的微调方法,如 LoRA 和 QLoRA。
开始之前需要了解的内容
开始之前需要了解的内容
使用 pip 和虚拟环境进行 Python 包管理
Hugging Face Transformers 库基础知识 (加载模型、分词器、数据集)
GPU 基础知识 ( CUDA/ GPU 与 CPU、VRAM 限制、设备可用性)
基本了解 LLM 训练概念 (损失函数、检查点)
熟悉提示工程和基础模型交互
可选:LoRA/ QLoRA 参数高效微调知识
预备知识
采用 Blackwell GPU 架构的 NVIDIA Spark 设备
nvidia-smi 显示 GPU 信息摘要
已安装 CUDA 13.0: nvcc --version
可通过互联网下载模型和数据集
辅助文件
GitHub 上的 Python 测试脚本
时间和风险
时长:初始设置和测试运行需要 30 - 60 分钟
风险:
Triton 编译器版本不匹配可能会导致编译错误
CUDA 工具包配置问题可能会阻止核函数编译
较小模型的内存限制需要调整批量大小
回滚:使用以下命令卸载软件包 pip uninstall unsloth torch torchvision。
上次更新日期:2025 年 12 月 15 日
将 pytorch 容器和 python 依赖项升级到最新版本
第 1 步:验证先决条件
确认您的 NVIDIA Spark 设备具有所需的 CUDA 工具包和可用的 GPU 资源。
nvcc --version
输出应显示 CUDA 13.0。
nvidia-smi
输出应显示 GPU 信息的摘要。
第 2 步:获取容器镜像
docker pull nvcr.io/nvidia/pytorch:25.11-py3
第 3 步:启动 Docker
docker run --gpus all --ulimit memlock=-1 -it --ulimit stack=67108864 --entrypoint /usr/bin/bash --rm nvcr.io/nvidia/pytorch:25.11-py3
第 4 步:在 Docker 中安装依赖项
pip install transformers peft hf_transfer "datasets==4.3.0" "trl==0.26.1" pip install --no-deps unsloth unsloth_zoo bitsandbytes
第 5 步:创建 Python 测试脚本
将测试脚本 Curl 单击此处容器中。
curl -O https://raw.githubusercontent.com/NVIDIA/dgx-spark-playbooks/refs/heads/main/nvidia/unsloth/assets/test_unsloth.py
我们将使用此测试脚本通过简单的微调任务来验证安装。
第 6 步:运行验证测试
执行测试脚本以验证 Unsloth 是否正常工作。
python test_unsloth.py
终端窗口中的预期输出:
“Unsloth:将修补您的计算机,使免费微调速度提高 2 倍”
训练进度条显示损失减少超过 60 步
显示完成情况的最终训练指标
第 7 步:后续步骤
通过更新自己的模型和数据集,使用您自己的模型和数据集 test_unsloth.py 文件:
# Replace line 49 with your model choice
model_name = "unsloth/Qwen3-8B-bnb-4bit"
# Load your custom dataset in line 8
dataset = load_dataset("your_dataset_name")
# Adjust training parameter args at line 80
per_device_train_batch_size = 4
max_steps = 1000访问 https://github.com/unslothai/unsloth/wiki 高级使用说明,包括:
注意:
DGX Spark 采用统一内存架构 (UMA),可在 GPU 和 CPU 之间实现动态内存共享。 由于许多应用程序仍在更新以利用 UMA,您可能会遇到内存问题,即使在 DGX Spark 的内存容量。如果发生这种情况,请使用以下命令手动刷新缓冲区缓存:
sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'