Unsloth на Windows для fine-tuning.
❓ Questions and Help
Тема: Что делать, если Unsloth не устанавливается на Windows? (разбор ошибок и итог)
Цель: дообучить (fine-tune) модель Qwen2.5-7B-Instruct на собственных данных с помощью библиотеки Unsloth (которая обещает ускорение обучения в 2-5 раз и снижение потребления VRAM).
Система:
ОС: Windows 11 Pro 64-bit
Процессор: Intel Core i5/i7 (x86_64)
Видеокарта: NVIDIA GeForce RTX 3050 (6 ГБ VRAM)
Драйвер NVIDIA: 591.86 (поддерживает CUDA 11.8)
CUDA Toolkit: 11.8 (установлен в C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8)
Python: 3.12.7
Виртуальное окружение: venv
Компилятор: Visual Studio Build Tools 2022 (MSVC v143) + Windows SDK 10.0.26100.0
Ninja: установлен
Описание проблемы
Попытка установить Unsloth на Windows с CUDA 11.8 привела к серии ошибок, которые в итоге сделали процесс невозможным. Основные проблемы:
Отсутствие prebuilt wheels для xformers 0.0.28 на Windows с CUDA 11.8
Начиная с версии xformers 0.0.28, разработчики удалили prebuilt wheels для Windows с CUDA 11.8 и 12.1. Официально доступны только сборки для Linux. При попытке установить xformers через pip install xformers==0.0.28.post3 --index-url https://download.pytorch.org/whl/cu118 получаем ошибку:
ERROR: Could not find a version that satisfies the requirement xformers==0.0.28.post3 ERROR: No matching distribution found for xformers==0.0.28.post3
Попытка сборки из исходников - ошибка library.h
Мы попытались собрать xformers из исходников с помощью Ninja:
git clone https://github.com/facebookresearch/xformers.git cd xformers set MAX_JOBS=2 set TORCH_CUDA_ARCH_LIST=8.6 set NVCC_FLAGS=-allow-unsupported-compiler python setup.py build --ninja
Сборка завершилась ошибкой:
fatal error C1083: Не удается открыть файл включение: torch/csrc/stable/library.h: No such file or directory
Файл library.h появился в PyTorch начиная с версии 2.6. Актуальная версия xformers из main требует PyTorch >= 2.6, а у нас был PyTorch 2.5.1+cu118.
Автозамена PyTorch на несовместимую версию
При попытке установить Unsloth через официальную команду:
pip install "unsloth[windows] @ git+https://github.com/unslothai/unsloth.git"
установщик самовольно обновлял PyTorch до версии 2.12.1 (или 2.11.0), что приводило к конфликтам:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. torchaudio 2.5.1+cu118 requires torch==2.5.1+cu118, but you have torch 2.12.1 which is incompatible.
Это известная проблема: Unsloth требует точную версию PyTorch (например, 2.10.0), а зависимости, установленные вместе с ним, могут перезаписывать PyTorch на другую версию.
Циклические конфликты версий
После каждой попытки исправления возникали новые конфликты:
datasets требовал fsspec[http]<=2025.9.0, а устанавливалась более новая версия
xformers требовал torch>=2.10, но при установке PyTorch 2.5.1 возникала несовместимость
unsloth требовал transformers>=4.51.3, а у нас была 4.44.2
unsloth требовал datasets>=3.4.1, а у нас была 3.1.0
Замкнутый круг, из которого не удалось выйти.
Предпринятые шаги для решения
Шаг 1: Установка Visual Studio Build Tools 2022 + MSVC v143 - Результат: Успешно Шаг 2: Установка CUDA Toolkit 11.8 - Результат: Успешно Шаг 3: Установка Ninja - Результат: Успешно Шаг 4: Установка PyTorch 2.5.1+cu118 - Результат: Успешно Шаг 5: Попытка установить xformers через pip - Результат: Ошибка: нет wheel для Windows Шаг 6: Сборка xformers из исходников с Ninja - Результат: Ошибка: отсутствует library.h Шаг 7: Обновление PyTorch до 2.6+ для совместимости с xformers - Результат: Конфликт с CUDA 11.8 Шаг 8: Установка Unsloth через unsloth[windows] - Результат: Автозамена PyTorch на 2.12.1 Шаг 9: Фиксация версий через --no-deps - Результат: Пропадают зависимости, Unsloth не работает Шаг 10: Полная очистка и переустановка с фиксированными версиями - Результат: Циклические конфликты
Почему это не сработало (главные причины)
Xformers 0.0.28 не имеет prebuilt wheels для Windows с CUDA 11.8. Это официальное решение разработчиков, и оно не изменится в ближайшее время.
Сборка из исходников на Windows крайне сложна и требует точного соответствия версий PyTorch, CUDA, MSVC и самого xformers. Даже при наличии всех инструментов возникают ошибки из-за отсутствия специфичных файлов (например, library.h).
Unsloth агрессивно управляет версией PyTorch, что приводит к конфликтам с другими пакетами (torchaudio, torchvision).
Экосистема Windows для ML-разработки исторически менее дружелюбна, чем Linux. Большинство библиотек (xformers, flash-attention, triton) тестируются в первую очередь на Linux, а Windows-сборки либо отсутствуют, либо требуют сложной компиляции.
RTX 3050 с 6 ГБ VRAM - хотя и поддерживает CUDA 11.8, но для fine-tuning 7B-модели с Unsloth требуется больше памяти. Даже при успешной установке обучение могло бы не запуститься из-за CUDA out of memory.
Итог: неудача
Unsloth не был установлен. После множества попыток, переустановок, сборок и фиксации версий мы пришли к выводу, что на данной системе (Windows 11 + CUDA 11.8 + Python 3.12) стабильная установка Unsloth невозможна без перехода на Linux или использования WSL2.
Что делать? (рекомендации)
Вариант А: Переход на WSL2 (рекомендуется)
Установите Windows Subsystem for Linux (WSL2) с дистрибутивом Ubuntu 22.04. В WSL2:
Установка PyTorch с CUDA 11.8: pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Установка xformers (для Linux есть prebuilt wheel!): pip install xformers==0.0.28.post3 --index-url https://download.pytorch.org/whl/cu118
Установка Unsloth: pip install unsloth
В WSL2 xformers устанавливается без проблем, и Unsloth работает стабильно.
Вариант Б: Стандартный fine-tuning без Unsloth
Если переход на WSL2 невозможен, используйте стандартный подход с bitsandbytes + peft + transformers. Это медленнее на 30-40%, но стабильно работает на Windows.
pip install torch==2.5.1+cu118 torchvision==0.20.1+cu118 --index-url https://download.pytorch.org/whl/cu118 pip install transformers accelerate peft bitsandbytes datasets trl
Скрипт для fine-tuning:
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer from peft import LoraConfig, get_peft_model from datasets import load_dataset import torch
model = AutoModelForCausalLM.from_pretrained( "Qwen/Qwen2.5-7B-Instruct", load_in_4bit=True, torch_dtype=torch.bfloat16, device_map="auto", )
настройка LoRA и обучение Вариант В: Использование готовых fine-tuned моделей
Если fine-tuning не является обязательным, можно использовать уже дообученные модели с Hugging Face (например, русскоязычные адаптации Qwen2.5-7B).
Вариант Г: Облачные решения
Использовать Google Colab (бесплатный GPU) или RunPod (платный) для fine-tuning, а затем скачать готовую модель и использовать её локально через Ollama.
Заключение
Попытка установить Unsloth на Windows с CUDA 11.8 закончилась неудачей из-за:
отсутствия prebuilt wheels для xformers
сложности сборки из исходников
агрессивного управления версиями PyTorch со стороны Unsloth
общей недружелюбности Windows-экосистемы для ML-разработки
Рекомендация: перейти на WSL2 или использовать стандартный fine-tuning без Unsloth.
Если у вас есть опыт успешной установки Unsloth на Windows с CUDA 11.8 - пожалуйста, поделитесь. Буду благодарен за любые советы.
Почта для связи: [email protected]
Source: facebookresearch/xformers