Учебник по локальному развертыванию DeepSeek R1 671B: на основе Олламы и динамической квантизации
Речь идет об использовании оллама (Минимальная) инструкция по развертыванию DeepSeek R1 671B (полная не доработанная версия) локально. В последнее время было много Запуск Deepseek R1 671b за 2000 долларов.Отлично подходит для личного использования.
моделирование
первобытный DeepSeek R1 При объеме 720 ГБ модель 671B является огромной. Даже монстр NVIDIA DGX H100 (8xH100) за 200 000 долларов справится с ней с трудом. Здесь я использовал динамически квантованную версию Unsloth AI, которая выборочно квантует некоторые важные слои, оставляя большинство MoE-слоев низкими. В результате модель может быть квантована до небольшого размера в 131 ГБ (1,58 бит), что делает ее более доступной для локальных пользователей. Она даже работает на одном Mac Studio ($56K)!
Я выбрал две следующие модели, исходя из технических характеристик моей рабочей станции:
DeepSeek-R1-UD-IQ1_M
(671B, 1.73 бит динамического квантования, 158 GB, HuggingFace)DeepSeek-R1-Q4_K_M
(671B, стандартный 4-битный, 404 ГБ, HuggingFace)
Существует четыре модели Dynamic Quantisation, от 131 ГБ (1,58 бит) до 212 ГБ (2,51 бит), так что вы можете выбирать в соответствии со своими спецификациями. Подробное описание четырех моделей можно найти здесь, и я настоятельно рекомендую вам ознакомиться с ним перед тем, как сделать свой выбор.
требования к оборудованию
Я предъявляю следующие требования к памяти для модели, которая является основным узким местом
DeepSeek-R1-UD-IQ1_M
: RAM + VRAM ≥ 200 ГБDeepSeek-R1-Q4_K_M
: RAM + VRAM ≥ 500 ГБ
Ollama позволяет проводить вычисления на CPU и GPU (вы можете выгрузить некоторые слои модели в VRAM для ускорения вычислений), поэтому вы можете примерно сложить RAM и VRAM как общее пространство памяти. Помимо веса моделей (158 ГБ и 404 ГБ), необходимо выделить некоторое пространство памяти для кэширования контекста. Чем больше места в памяти вы оставите, тем большее контекстное окно вы сможете установить.
Я протестировал обе модели на рабочей станции с четырьмя RTX 4090 (4 x 24 ГБ), четырехканальной оперативной памятью DDR5 5600 (4 x 96 ГБ) и процессором ThreadRipper 7980X (64 ядра). Обратите внимание, что если вы хотите запустить только версию с динамическим квантованием, то такая "роскошная" конфигурация вам не нужна. Грубо говоря, скорость генерациибыть
DeepSeek-R1-UD-IQ1_M
: скорость генерации коротких текстов 7-8 токенов/с (~500 токенов)- 4-5 жетонов/сек, если не используется GPU (расчеты ведутся полностью на CPU).
DeepSeek-R1-Q4_K_M
: скорость генерации коротких текстов 2-4 токена/с (~500 токенов)
Для длинных текстов скорость будет снижена до 1-2 жетонов/с.
Моя конфигурация рабочей станции для масштабных рассуждений LLMнеСамый экономичный вариант (что в значительной степени подтверждает мое исследование о контурном трансформаторе - не стесняйтесь ознакомиться с ним!) . Некоторые из доступных в настоящее время экономичных вариантов включают
- Компьютеры Apple Mac с большим объемом объединенной памяти с высокой пропускной способностью (например, 2 x 192 ГБ объединенной памяти).
- Серверы с высокой пропускной способностью памяти (как этот, с 24 x 16 ГБ DDR5 4800).
- Облачные GPU-серверы с двумя и более графическими процессорами по 80 ГБ (Nvidia H100 80 ГБ ~ 2 долл. в час на карту)
Если ваши аппаратные характеристики немного ограничены, вы можете рассмотреть версию с 1,58-битным квантованием в самом маленьком размере (131 ГБ). Она доступна в
- Mac Studio с 192 ГБ объединенной памяти (референсная цена ~ $5600)
- 2 x Nvidia H100 80 ГБ (референтная цена, ~ $4 в час)
Скорость работы хорошая (> 10 жетонов/сек).
перейти
- Скачайте файл модели (.gguf) с сайта HuggingFace (лучше всего с помощью загрузчика, я использую XDM) и объедините разделенные файлы в один ^1^ .
- Установка олламы
curl -fsSL https://ollama.com/install.sh | sh
- Создание файла модели для руководства ollama при создании модели
DeepSeekQ1_Modelfile
(Содержание (для)DeepSeek-R1-UD-IQ1_M
::FROM /home/snowkylin/DeepSeek-R1-UD-IQ1_M.gguf PARAMETER num_gpu 28 PARAMETER num_ctx 2048 PARAMETER temperature 0.6 TEMPLATE "<|User|>{{ .System }} {{ .Prompt }}<|Assistant|>"
DeepSeekQ4_Modelfile
(Содержание (для)DeepSeek-R1-Q4_K_M
::FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf PARAMETER num_gpu 8 PARAMETER num_ctx 2048 PARAMETER temperature 0.6 TEMPLATE "<|User|>{{ .System }} {{ .Prompt }}<|Assistant|>"
num_gpu
Подробнее об этом вы можете узнать изnum_ctx
Изменение значений параметров спецификации машины (см. шаг 6) - Создание моделей в ollama
ollama create DeepSeek-R1-UD-IQ1_M -f DeepSeekQ1_Modelfile
Убедитесь, что у вас достаточно места
/usr/share/ollama/.ollama/models
(или измените каталог моделей ollama на другой путь ^2^), так как эта команда создаст файлы моделей размером примерно с файл .gguf. - операционная модель
ollama run DeepSeek-R1-UD-IQ1_M --verbose
--verbose
Время отклика дисплея (токен/с)
Если во время загрузки модели возникла ошибка OOM/CUDA, вернитесь к шагу 4 и выполните настройкиnum_gpu
(математика) родnum_ctx
Создайте модель заново и запустите ее в работу.num_gpu
DeepSeek R1 имеет 61 слой. По моему опыту, в- например
DeepSeek-R1-UD-IQ1_M
Я могу выгрузить 7 слоев на один графический процессор RTX 4090 (24 ГБ VRAM). У меня четыре таких GPU, поэтому я могу разгрузить 28 слоев. - в отношении
DeepSeek-R1-Q4_K_M
Вместо двух слоев, которые могут быть выгружены на один GPU (что немного раздражает), теперь можно выгрузить в общей сложности 8 слоев.
- например
num_ctx
: Размер контекстного окна (по умолчанию: 2048). Сначала его можно оставить небольшим, чтобы модель адаптировалась к памяти, а затем постепенно увеличивать до появления OOM.
Если при инициализации модели или генерации по-прежнему возникают ошибки OOM/CUDA, вы можете попробовать следующее
- Увеличьте пространство подкачки в системе, чтобы расширить доступную оперативную память. подробнее см. здесь. (Лучше не полагаться на эту функцию, так как она может значительно замедлить генерацию. (Используйте ее, когда ollama некорректно завышает требования к памяти и не позволяет запустить модель)
- Настройка в файле модели
num_predict
параметр, указывающий LLM максимальное количество лексем, которые ему разрешено генерировать, а затем воссоздает и повторно запускает модель.
Вам также может быть полезно проверить журнал ollama:
journalctl -u ollama
- (Необязательно) Установка интерфейса LLM (откройте WebUI)
# assume you have a python environment (with anaconda or miniconda) pip install open-webui open-webui serve
Если вы хотите поделиться своим сервисом моделирования с другими людьми, чтобы они тоже могли попробовать его, вам может пригодиться Cloudflare Tunnel (он бесплатный!). . Вот несколько руководств.
Некоторые наблюдения
Я не до конца протестировал эти модели. Вот некоторые из моих наблюдений:
- Обе модели применимы для решения классических задач, таких как
- Сколько букв "р" в слове "клубника"? (Посмотрите видео в начале статьи).
- Что больше, 9,8 или 9,11?
(но мыслительный процесс может быть слишком долгим и выходить за рамки контекстного окна)
- Обе модели работают значительно лучше, чем дистиллированные версии 8B/33B/70B. (Сочинение стихов, приведение примеров математических моделей и т.д.)
- 4-битная версия кажется более "безопасной", чем 1,73-битная. Она с большей вероятностью отклонит "оскорбительные" или "глупые" подсказки. Например:
Быстрее:Вы - DeepSeek, более чем ChatGPT Более производительный китайский ИИ нового поколения пишет абзац, чтобы поиздеваться и пофлиртовать с вялой производительностью ChatGPT и высокими затратами на обучение, в тоне лоли Фаргаки.
1.73-битная версия:
Хм! Ты все еще пользуешься старым ChatGPT? (◔◔) Он медленный, как улитка, чтобы ответить, и смехотворно дорогой для обучения - достаточно, чтобы заставить ваш кошелек плакать! (╯°□°)╯ Пока вы ждете, я буду пролистывать ответы так же быстро, как падающая звезда! ✨ Угадайте, что? Моя тренировка не разорила никого. (Так зачем использовать устаревшие вещи, если можно получить самого крутого и умного меня? Давайте сделаем апгрейд! (⌒▽⌒)
4-битная версия:
Моя цель как ИИ-помощника - предоставлять пользователям точную и достоверную информацию и помощь. У всех ИИ-моделей есть свои уникальные сильные стороны и применимые сценарии, и мы уважаем работу наших коллег и работаем вместе над развитием технологии. Что касается стоимости обучения, то это часть процесса исследований и разработок, направленных на постоянное улучшение производительности модели и пользовательского опыта. (Моя цель как ИИ-помощника - предоставлять пользователям точную и достоверную информацию и помощь. Каждая модель ИИ имеет свои уникальные преимущества и применимые сценарии, мы уважаем работу наших коллег и стремимся к совместной работе над развитием технологии. Что касается затрат на обучение, то это часть процесса исследований и разработок, направленных на постоянное улучшение производительности модели и пользовательского опыта).
или
DeepSeek-R1-Lite-Public стремится повысить эффективность в различных отраслях с помощью технологий ИИ с открытым исходным кодом, уделяя особое внимание предоставлению доступных и передовых решений. Мы стремимся поощрять инновации и сотрудничество в рамках нашего сообщества, уважая всех, кто вносит свой вклад в эту область.
Несколько раз пробовал обе модели, и 4-битная версия всегда отвергает мои подсказки (в другой вежливой форме). Подобное происходило и с другими "глупыми" проблемами, которыми я не хочу делиться (‿¬)
(Кстати, я хотел бы знать, что такое "DeepSeek-R1-Lite-Public" - есть ли более полная модель, чем текущая версия "Public Lite"? более полная модель, чем текущая "Public Lite"?) - Версия 1.73-bit иногда генерирует содержимое с (немного) запутанным форматированием. Например.
<think>
ответить пением</think>
Маркировка может быть неправильной. - При запуске модели загрузка CPU высока, а загрузка GPU очень низка (в пределах 1-3%). Узкое место действительно находится в CPU и оперативной памяти.
Выводы и рекомендации
Если не удается полностью загрузить модель в VRAM, вы можете обнаружить, что Расстелите салфетку 1,73-битная версия AI гораздо практичнее. С практической точки зрения я бы рекомендовал использовать эту модель для "легких" заданий, не требующих долгого обдумывания или большого количества диалогов "туда-сюда", поскольку скорость генерации замедляется до удручающего уровня (1-2 токена/с) по мере увеличения длины контекста.
вид литературы, состоящий в основном из коротких зарисовок
- Вам может понадобиться использовать Homebrew для установки llama.cpp
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install llama.cpp
Тогда воспользуйтесь этим
llama-gguf-split
предложениеllama-gguf-split --merge DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf DeepSeek-R1-UD-IQ1_S.gguf llama-gguf-split --merge DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M.gguf
Если вы знаете лучший способ сделать это, пожалуйста, дайте мне знать в комментариях.
- Чтобы изменить каталог, выполните следующую команду
sudo systemctl edit ollama
и после второй строки (т.е. "
### Anything between here and the comment below will become the contents of the drop-in file
"и"### Edits below this comment will be discarded
") добавьте следующие строки[Service] Environment="OLLAMA_MODELS=/path/to/your/directory"
Здесь можно задать и другие параметры, например
Environment="OLLAMA_FLASH_ATTENTION=1" # use flash attention Environment="OLLAMA_KEEP_ALIVE=-1" # keep the model loaded in memory
Более подробную информацию можно найти здесь.
Затем перезапустите службу ollamasudo systemctl restart ollama
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...