(no subject)
May. 4th, 2025 12:10 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Стряхнул пыль со своего старого mining rig-а, в этот раз чтобы позапускать LLM-ки локально. Когда Бутерик перевёл эфир на PoS, майнинг на видео полностью потерял смысл, другие криптовалюты едва могли оправдать затраты на электричество (eth/btc после этого просел капитально), и с тех пор он простаивал. Идея в том, что совсем тяжёлые модели, аналоги всяких ChatGPT или Claude или DeepSeek V3, где сотни миллиардов параметров, запустить локально вряд ли получится. Это конечно, если вы не готовы прикупить какую-нибудь балалайку стоимостью $150-$300k, и потом разместить и запитать её. А это тоже будет непросто: там потребуется подвести примерно 10 киловатт в 6-8U и отвести столько же тепла. И быть готовым к тому, что та балалайка потеряет половину стоимости за 2-3 года, а бОльшую часть времени она всё равно будет простаивать. Это для корпорации с регуляторными требованиями (препятствующими отправке данных в публичные сервисы) может быть осмысленно, там эту машинку дёргать будут много людей постоянно, а её стоимость уменьшит налогооблагаемую прибыль, эффективно удешевив наполовину.
Но с другой стороны, может быть оно и не нужно? Люди добиваются неплохих результатов работая с моделями 30-72B, уверен, мне расскажут и о кейсах с применением моделей с гораздо меньшим числом параметров. Ok, скажем, выглядит интересно. Но как?
Мне было интересно как это сделать на том что было под рукой - видеокартах. Так-то есть и другие способы, например Apple Macs, там скорость памяти (546 GB/s M4 Max, 800 GB/s Studio M3 Ultra) не сильно хуже чем на GPU (~900 GB/s на RTX 3090). К слову, и по электричеству Маки всяко эффективнее. В обычных ПК скорость памяти сильно ниже (20-25 GB/s с одного канала DDR4, и как правило всего 1-2 канала).
Первое что я сделал запустив тот rig, это обновил CUDA и дрова Nvidia. Оно в общем-то тривиально, не хотите читать документацию вендора - туториалов типа этого полно. Увидеть как оно работает можно просто поставив ollama:
# curl -fsSL https://ollama.com/install.sh | sh
И начав задаватьглупые вопросы прямо с командной строки:
$ ollama run deepseek-r1:70b
Ollama сама всё подгрузит и запустит. На паре RTX 3090 оно прямо-таки залетает. Но как? 70 миллиардов 16-битных float-ов займут ~140 гигабайт?
Ну идея там в том, что для "дома и хобби" можно и использовать квантизацию, что-то вроде сжатия с потерями. Ollama - это по сути обёртка над llama.cpp, которая даёт доступ к какому-то своему небольшому подмножеству "избранных" моделей на их сайте. И на олламе по дефолту тот deepseek-r1:70b будет сжат с 4-битной точностью, а получившиеся 35 гигабайт влезают в 2 карты по 24 (ну, конечно, там ещё всякое должно будет влезть). Гораздо больше моделей на HugginFace, плюс и с разными степенями квантизации. Есть и закрытые модели (Mistral Large например, вам его дадут, но с условиями), и дико большие открытые - тот самый DeepSeek V3 671B или недавно вышедший Qwen3-235B-A22B. Есть мультимодальные модели, принимающие на вход или выдающие изображения/звук/видео вместе с текстом.
Ok, PoC осилили, что делать дальше? Дергать LLM-ки прямо из SSH, ну оно такое... Хотите простого решения "всё в одном" - поставьте LM Studio. Тут простой ChatGPT-like интерфейс, оно само найдёт, что можно задействовать на вашем ПК (CUDA для Nvidia, к слову над CUDA будет та же llama.cpp, ROCm, Vulkan для карт ATI/AMD, MLX для Apple Silicon маков). И вот это уже выглядит как что-то полезное - есть истории диалогов с контекстом, можно подгружать свои файлы и задавать вопросы модели про них.
Другой вариант: на свой лаптоп я поставил Anything LLM Desktop, фронтенд, который у меня дёргает Aphrodite Engine, который на хосте выполняет модели (это замена llama.cpp). Anything LLM может обращаться как к локальным моделям на локальных engine-ах (llama.cpp, ollama, vLLM, exllama), так и к эндпойнтам больших платных (ChatGPT, Google AI, Claude, DeepSeek V3 на SambaNova). Локальная Афродита может выполнять сжатую Mistral Large 123B (а это европейский конкурент здешних больших моделей) на всего лишь 4-х 3090-х, и при этом используемый метод сжатия (AWQ) теряет гораздо меньше информации чем обычно.
Но много видеокарт не обязательно, очень многие программисты положительно отзываются о Qwen Coder, который всего 30B, или Google Gemma3 27B. Даже одна ни к чему, есть всякие runpod.io и vast.ai, которые сдадут вам в аренду те multi-GPU rigs по полдоллара-доллар в час (если хочется затестить).
Пара слов о квантизации - очень многие говорят, что в 16 битах выполнять модели бессмысленно, на 8 битах будет также, но быстрее. На 6 битах потери будут минимальные, 5 ещё приемлемо, дальше пробуйте и решайте сами.
По материалам r/LocalLLaMA/ ))
Но с другой стороны, может быть оно и не нужно? Люди добиваются неплохих результатов работая с моделями 30-72B, уверен, мне расскажут и о кейсах с применением моделей с гораздо меньшим числом параметров. Ok, скажем, выглядит интересно. Но как?
Мне было интересно как это сделать на том что было под рукой - видеокартах. Так-то есть и другие способы, например Apple Macs, там скорость памяти (546 GB/s M4 Max, 800 GB/s Studio M3 Ultra) не сильно хуже чем на GPU (~900 GB/s на RTX 3090). К слову, и по электричеству Маки всяко эффективнее. В обычных ПК скорость памяти сильно ниже (20-25 GB/s с одного канала DDR4, и как правило всего 1-2 канала).
Первое что я сделал запустив тот rig, это обновил CUDA и дрова Nvidia. Оно в общем-то тривиально, не хотите читать документацию вендора - туториалов типа этого полно. Увидеть как оно работает можно просто поставив ollama:
# curl -fsSL https://ollama.com/install.sh | sh
И начав задавать
$ ollama run deepseek-r1:70b
Ollama сама всё подгрузит и запустит. На паре RTX 3090 оно прямо-таки залетает. Но как? 70 миллиардов 16-битных float-ов займут ~140 гигабайт?
Ну идея там в том, что для "дома и хобби" можно и использовать квантизацию, что-то вроде сжатия с потерями. Ollama - это по сути обёртка над llama.cpp, которая даёт доступ к какому-то своему небольшому подмножеству "избранных" моделей на их сайте. И на олламе по дефолту тот deepseek-r1:70b будет сжат с 4-битной точностью, а получившиеся 35 гигабайт влезают в 2 карты по 24 (ну, конечно, там ещё всякое должно будет влезть). Гораздо больше моделей на HugginFace, плюс и с разными степенями квантизации. Есть и закрытые модели (Mistral Large например, вам его дадут, но с условиями), и дико большие открытые - тот самый DeepSeek V3 671B или недавно вышедший Qwen3-235B-A22B. Есть мультимодальные модели, принимающие на вход или выдающие изображения/звук/видео вместе с текстом.
Ok, PoC осилили, что делать дальше? Дергать LLM-ки прямо из SSH, ну оно такое... Хотите простого решения "всё в одном" - поставьте LM Studio. Тут простой ChatGPT-like интерфейс, оно само найдёт, что можно задействовать на вашем ПК (CUDA для Nvidia, к слову над CUDA будет та же llama.cpp, ROCm, Vulkan для карт ATI/AMD, MLX для Apple Silicon маков). И вот это уже выглядит как что-то полезное - есть истории диалогов с контекстом, можно подгружать свои файлы и задавать вопросы модели про них.
Другой вариант: на свой лаптоп я поставил Anything LLM Desktop, фронтенд, который у меня дёргает Aphrodite Engine, который на хосте выполняет модели (это замена llama.cpp). Anything LLM может обращаться как к локальным моделям на локальных engine-ах (llama.cpp, ollama, vLLM, exllama), так и к эндпойнтам больших платных (ChatGPT, Google AI, Claude, DeepSeek V3 на SambaNova). Локальная Афродита может выполнять сжатую Mistral Large 123B (а это европейский конкурент здешних больших моделей) на всего лишь 4-х 3090-х, и при этом используемый метод сжатия (AWQ) теряет гораздо меньше информации чем обычно.
Но много видеокарт не обязательно, очень многие программисты положительно отзываются о Qwen Coder, который всего 30B, или Google Gemma3 27B. Даже одна ни к чему, есть всякие runpod.io и vast.ai, которые сдадут вам в аренду те multi-GPU rigs по полдоллара-доллар в час (если хочется затестить).
Пара слов о квантизации - очень многие говорят, что в 16 битах выполнять модели бессмысленно, на 8 битах будет также, но быстрее. На 6 битах потери будут минимальные, 5 ещё приемлемо, дальше пробуйте и решайте сами.
По материалам r/LocalLLaMA/ ))