Как запустить Xiaomi MiMo-V2-Flash локально: Полное руководство по установке
Как запустить Xiaomi MiMo-V2-Flash локально: Полное руководство по установке
Модель MiMo-V2-Flash от Xiaomi представляет собой прорыв в эффективном проектировании ИИ-моделей, имея в общей сложности 309 миллиардов параметров, из которых в процессе вывода активно используется всего 15 миллиардов. Архитектура Mixture-of-Experts обеспечивает исключительную производительность при при этом разумных требованиях к оборудованию для локального развертывания. В этом подробном руководстве мы расскажем о нескольких способах запуска MiMo-V2-Flash локально на вашем компьютере.
Почему стоит запускать MiMo-V2-Flash локально?
Запуск MiMo-V2-Flash локально имеет множество преимуществ:
- Конфиденциальность данных: ваши чувствительные данные никогда не покидают вашу машину
- Экономия средств: отсутствие платы за API за каждый токен и подписок
- Низкая задержка: прямой доступ к оборудованию обеспечивает более быструю работу модели
- Настройка: полный контроль над параметрами модели и возможностью дообучения
- Работа офлайн: не требуется подключение к интернету после установки
- Производительность: использование локального GPU для максимальной скорости
Требования к оборудованию
Минимальные системные требования
| Компонент | Требование | Рекомендуемое |
|---|---|---|
| GPU | NVIDIA RTX 3080 (12 ГБ VRAM) | RTX 4090 (24 ГБ VRAM) или A6000 |
| ОЗУ | 32 ГБ | 64 ГБ или больше |
| Хранилище | 100 ГБ свободного места | 200 ГБ+ NVMe SSD |
| CPU | Intel i7-10700K / AMD Ryzen 7 3700X | Intel i9-12900K / AMD Ryzen 9 5900X |
| CUDA | 11.8+ | 12.4+ |
Особенности размера модели
- Общий размер модели: ~180 ГБ (квантованные форматы)
- Пиковое использование видеопамяти: 15-20 ГБ VRAM (активные параметры)
- Длина контекста: 256K токенов (требует значительного объёма ОЗУ)
Программные требования
Перед установкой убедитесь, что у вас установлено:
- Python 3.10+
- CUDA Toolkit 11.8+ или 12.4+
- Драйверы NVIDIA (последняя версия)
- Git для клонирования репозитория
Проверка установки CUDA
nvidia-smi
nvcc --versionМетод 1: Установка через SGLang (рекомендуется)
SGLang — рекомендуемый фреймворк для MiMo-V2-Flash, обеспечивающий оптимизированную производительность для моделей MoE.
Шаг 1: Установка SGLang
# Создание виртуального окружения
python -m venv mimo-env
source mimo-env/bin/activate # Для Windows: mimo-env\Scripts\activate
# Установка PyTorch с поддержкой CUDA
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# Установка SGLang
pip install sglangШаг 2: Скачивание модели
# Вход в Hugging Face
huggingface-cli login
# Загрузка MiMo-V2-Flash
huggingface-cli download XiaomiMiMo/MiMo-V2-Flash --local-dir ./models/MiMo-V2-FlashШаг 3: Запуск сервера SGLang
python -m sglang.launch_server \
--model-path ./models/MiMo-V2-Flash \
--host 0.0.0.0 \
--port 30000 \
--trust-remote-code \
--dtype float16 \
--max-model-len 262144 \
--gpu-memory-utilization 0.9Шаг 4: Тестирование установки
import requests
import json
url = "http://localhost:30000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
data = {
"model": "MiMo-V2-Flash",
"messages": [
{"role": "user", "content": "Write a Python function to calculate fibonacci numbers"}
],
"temperature": 0.7,
"max_tokens": 500
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())Метод 2: Установка через Hugging Face Transformers
Шаг 1: Установка зависимостей
pip install transformers==4.51.0
pip install accelerate
pip install bitsandbytes
pip install torch --index-url https://download.pytorch.org/whl/cu124Шаг 2: Скрипт базового использования
Создайте run_mimo.py:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# ID модели
model_id = "XiaomiMiMo/MiMo-V2-Flash"
# Загрузка токенизатора и модели
print("Loading tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(
model_id,
trust_remote_code=True
)
print("Loading model...")
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True,
load_in_8bit=True, # Включить 8-битную квантовку
max_memory={0: "15GB"} # Ограничение использования видеопамяти
)
# Генерация текста
prompt = "Explain the concept of machine learning"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
print("Generating response...")
outputs = model.generate(
**inputs,
max_new_tokens=200,
temperature=0.7,
do_sample=True
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"\n{response}")Шаг 3: Запуск скрипта
python run_mimo.pyМетод 3: Использование Ollama (экспериментально)
Шаг 1: Установка Ollama
# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows: загрузите с ollama.comШаг 2: Создание файла Modelfile
Создайте Modelfile для MiMo-V2-Flash:
FROM ./models/MiMo-V2-Flash
# Установка параметров
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 50
PARAMETER num_ctx 262144Шаг 3: Сборка и запуск
# Создание модели
ollama create mimo-v2-flash -f Modelfile
# Запуск модели
ollama run mimo-v2-flashМетод 4: Развёртывание через Docker
Шаг 1: Создание Dockerfile
Создайте Dockerfile:
FROM nvidia/cuda:12.4-devel-ubuntu20.04
# Установка Python и зависимостей
RUN apt-get update && apt-get install -y \
python3.10 \
python3-pip \
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
RUN pip3 install sglang transformers accelerate
# Копирование модели и приложения
COPY models/MiMo-V2-Flash /app/models/MiMo-V2-Flash
COPY app.py /app/
# Открытие порта
EXPOSE 30000
# Запуск сервера
CMD ["python3", "-m", "sglang.launch_server", "--model-path", "/app/models/MiMo-V2-Flash", "--host", "0.0.0.0", "--port", "30000"]Шаг 2: Сборка и запуск контейнера
# Сборка образа
docker build -t mimo-v2-flash .
# Запуск контейнера
docker run --gpus all -p 30000:30000 -v $(pwd)/models:/app/models mimo-v2-flashПродвинутая настройка
Включение Flash Attention
Для лучшей производительности установите Flash Attention:
pip install flash-attn --no-build-isolationЗатем добавьте в конфигурацию модели:
from sglang import set_default_backend, RuntimeBackend
set_default_backend(RuntimeBackend.CUDA)Оптимизация памяти
Если возникают ошибки нехватки памяти:
# Использование квантовки
model = AutoModelForCausalLM.from_pretrained(
model_id,
load_in_4bit=True, # Квантовка в 4 бита
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
)Настройка для нескольких GPU
Для систем с несколькими GPU:
# Распределение модели по GPU
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
max_memory={0: "10GB", 1: "10GB", 2: "10GB", 3: "10GB"}
)Оптимизация производительности
1. Настройка использования памяти GPU
python -m sglang.launch_server \
--gpu-memory-utilization 0.95 # Использовать 95% памяти GPU2. Оптимизация длины контекста
# Уменьшите длину контекста для увеличения скорости
--max-model-len 32768 # 32K вместо 256K3. Включение тензорного параллелизма
# Использование нескольких GPU для вывода
--tensor-parallel-size 4Решение распространённых проблем
Проблема 1: Out of Memory (OOM)
Решение:
# Включить checkpointing градиентов
model.gradient_checkpointing_enable()
# Или уменьшить размер батча
batch_size = 1 # Вместо больших значенийПроблема 2: Ошибка CUDA Out of Memory
Решение:
- Уменьшить
--gpu-memory-utilizationдо 0.8 - Включить квантование (8-битное или 4-битное)
- Закрыть другие ресурсоёмкие приложения на GPU
Проблема 3: Ошибки загрузки модели
Решение:
# Очистить кэш и скачать заново
huggingface-cli download XiaomiMiMo/MiMo-V2-Flash --local-dir ./models/MiMo-V2-Flash --resume-downloadПроблема 4: Медленный вывод
Решения:
- Включить Flash Attention:
pip install flash-attn - Использовать тензорный параллелизм с несколькими GPU
- Уменьшить длину контекста
- Увеличить использование памяти GPU
Проблема 5: Ошибки импорта
Решение:
# Переустановить зависимости
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip uninstall sglang
pip install sglangТестирование установки
Подробный тестовый скрипт
Создайте test_mimo.py:
import requests
import json
def test_mimo():
url = "http://localhost:30000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
# Тест 1: Простейшая генерация текста
data1 = {
"model": "MiMo-V2-Flash",
"messages": [{"role": "user", "content": "Write a hello world program in Python"}],
"max_tokens": 100
}
# Тест 2: Генерация кода
data2 = {
"model": "MiMo-V2-Flash",
"messages": [{"role": "user", "content": "Create a REST API with FastAPI"}],
"max_tokens": 200
}
# Тест 3: Математические рассуждения
data3 = {
"model": "MiMo-V2-Flash",
"messages": [{"role": "user", "content": "Solve: What is the derivative of x^2 + 3x + 5?"}],
"max_tokens": 100
}
for i, data in enumerate([data1, data2, data3], 1):
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print(f"Тест {i} пройден!")
print(response.json()["choices"][0]["message"]["content"])
else:
print(f"Тест {i} не пройден: {response.status_code}")
if __name__ == "__main__":
test_mimo()Запустите тест:
python test_mimo.pyЛучшие практики
- Мониторинг загрузки GPU: используйте
nvidia-smiдля отслеживания памяти и температуры GPU - Регулировка размера батча: начинайте с размера 1 и постепенно увеличивайте
- Использование виртуальных окружений: изолируйте зависимости с помощью venv или conda
- Регулярные обновления: поддерживайте драйверы и CUDA Toolkit в актуальном состоянии
- Резервное копирование модели: храните резервную копию загруженных файлов модели
Тестирование производительности
Запуск простого бенчмарка
import time
import torch
def benchmark_model(model, tokenizer, prompt):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
start_time = time.time()
outputs = model.generate(**inputs, max_new_tokens=200)
end_time = time.time()
tokens_generated = len(outputs[0])
tokens_per_second = tokens_generated / (end_time - start_time)
return tokens_per_second
# Тестовый запрос
prompt = "Write a detailed explanation of quantum computing"
tps = benchmark_model(model, tokenizer, prompt)
print(f"Tokens per second: {tps:.2f}")Заключение
Запуск Xiaomi MiMo-V2-Flash локально — это мощный способ использовать передовые возможности ИИ при обеспечении приватности и контроля. Независимо от того, выберете ли вы SGLang для максимальной производительности или Hugging Face Transformers для удобства, это руководство содержит всю необходимую информацию для начала работы.
Основные выводы:
- Рекомендуется SGLang для оптимальной производительности
- Обеспечьте достаточный объём видеопамяти (от 15 ГБ VRAM)
- Используйте квантование, если память ограничена
- Экспериментируйте с длиной контекста для баланса производительности и скорости
- Следите за загрузкой GPU для предотвращения перегрева
Если вам требуется масштабирование сверх локального оборудования или столкнётесь с ограничениями железа, рассмотрите облачных провайдеров с GPU. Начните с рекомендованного метода через SGLang и экспериментируйте с другими фреймворками в зависимости от ваших нужд и конфигурации оборудования.