
Всем привет! Я создатель статьи которую перевел для русскоязычной аудитории.
Я уже публиковался на Хабре и был встречен с теплотой. Планирую вернуться к статьям выпустить продолжение своей статьи про переезд из Азербайджана в Европу. Мы остановились 5 лет назад когда я переезжал в Нидерланды, и я уже 5 лет тут, так что будет что обсудить.
Хочу поделиться своими изысканиями с вами, чтоб получить обратную связь и возможно интересные идеи по поводу следующих статей.
Сам проект в итоге должен выступить как база для моих идей связанных с ИИ. Посмотрим в чего это в итоге выльется.
Введение
Для начала — просто гляньте на те фото и видео, которые я сгенерировал, вообще не прикасаясь к мышке или планшету. Конечно, до и после было проделано немало работы, но сам процесс создания цифрового арта не требовал ручного рисования. Так что скажем спасибо моим CPU и GPU — они реально тащили 💪
По ходу этого пути возникли интересные вопросы: когда вообще есть смысл использовать СPU, и как модели разного размера ведут себя при параллельных нагрузках? В целом, результаты получились довольно любопытными.
Бэкграунд и сетап
Ключевым решением для меня стало развернуть домашний сервер. Но идти по стандартному пути и становиться очередным клиентом Synology — не моя история, поэтому примерно год назад я достал старенький HP Gen7 сервер.
Немного контекста: с серверным железом из дата‑центров я начал работать лет 10–12 назад (ещё во времена Gen9–Gen10 от HP). Так что это был такой приятный ностальгический флешбек.
Параллельно мы с другом сделали Instagram‑аккаунт:
https://www.instagram.com/shorty_yvip/reels/
И я заодно попробовал автоматизировать постинг.
После нескольких proof‑of‑concept пайплайнов для генерации контента я сейчас двигаюсь к тому, чтобы сделать систему более зрелой и стабильной.

CPU vs GPU vs …
Основная цель была — сравнить и понять, как всё это можно использовать на практике.
CPU всё ещё очень полезен. Он отлично справляется с небольшими задачами и тестовыми сценариями. Для разработки я часто использовал маленькие модели, чтобы быстро прогонять пайплайны.
GPU — дорогие, но намного быстрее. Если смотреть с точки зрения стоимости, то на длинных задачах они начинают себя оправдывать. В моём случае GPU был быстрее CPU примерно в 3–7 раз.
TPU — тоже хочу попробовать. Есть относительно доступные варианты, так что это в планах.
Примечание: мой CPU довольно старый, и это, конечно, влияет на сравнение.

Маленькие или большие модели?
Классический ответ — зависит от ситуации🙂
Как уже говорил: качество = стоимость. Но фишка в том, что не везде нужно максимальное качество.
Ещё совет — поиграйтесь с параметрами: top_k, temperature и так далее. Даже на маленьких моделях можно получить вполне достойный результат.
В конце статьи покажу, какие параметры использую сейчас.
Долгие задачи и лимиты выполнения
timeout-minutes: 2880
Можно использовать этот параметр, если нужно, чтобы пайплайн работал больше 6 часов подряд. Но аккуратно — можно легко переоценить необходимость.
До того как получить это:

Я столкнулся с этим:

Результаты!

После «оптимизации» которая по сути, это просто снижение качества. Но даже при этом видео иногда получались… ну, скажем честно, мусорными 😅
Сейчас я в основном генерирую картинки, а видео планирую доработать позже.
Один из самых заметных бустов по производительности дал даунскейл разрешения видео — это сильно снизило нагрузку.
FPS тоже играет большую роль:
ниже FPS → меньше деталей
меняется длительность видео (так как кадров генерируется меньше)
В итоге, после оптимизаций я смог генерировать видео даже на CPU:
5 секунд видео = ~32 минуты на CPU примерно 1 итерация в минуту

Под катом конфиги на которых я в итоге остановился, честно говоря, с ними еще нужно поиграть, чтоб сформулировать эффект и качество. В целом ощущение, что можно контролировать. Так среди прочего я смог добится от мелкой модели выдавать вполне себе внятный текст.
Скрытый текст
#LLM CONFIGURATION PARAMETERS #Maximum number of tokens (words/parts of words) to generate. #Example: 512 is roughly 400 words of text. --max_new_tokens", type=int, default=512 #Controls randomness. 0.1 = factual/robotic, 1.0+ = creative/random. #Example: Use 0.2 for code or math, 0.8 for creative writing. --temperature", type=float, default=0.7 #Nucleus sampling: considers top tokens with cumulative probability P. #Example: 0.95 filters out the 5% least likely "weird" word choices.[cite: 2] --top_p", type=float, default=0.95 #Limits the next word choice to the K most likely candidates. #Example: 50 ensures the model doesn't pick a highly improbable word.[cite: 2] --top_k", type=int, default=50 #Penalty for repeating the same words/phrases. > 1.0 discourages repetition. #Example: 1.2 helps prevent the model from getting stuck in a loop.[cite: 2] --repetition_penalty", type=float, default=1.2 #Frames Per Second: Determines the smoothness of the motion. #Example: 16 FPS gives a cinematic look; 24-30 FPS is standard fluid video.[cite: 2] --fps", type=int, default=16 #Sampling steps: Number of iterations to refine the video from noise. #Example: 100 steps provide high detail but take longer to generate.[cite: 2] --steps", type=int, default=100 #Classifier-Free Guidance (CFG): How strictly the model follows the prompt. #Example: 3.0 allows for AI artistic freedom; 10.0+ forces strict adherence.[cite: 2] --guidance_scale", type=float, default=3.0 #The hard limit for prompt length processed by the text encoder. #Example: used by fchunking function --max_prompt_tokens", type=int, default=77 models: - name: Gemma-4-31B-IT-NVFP4 path: /opt/ai_model/Gemma-4-31B-IT-NVFP4 repo: nvidia/Gemmatele-4-31B-IT-NVFP4 active: false role: "You are a professional information provider specialized in technical troubleshooting and clear explanations." - name: gemma-4-e4b-it path: /opt/ai_model/gemma-4-e4b-it repo: google/gemma-4-E4B-IT active: true role: "You are a helpful journalist with insights." - name: TinyLlama-1.1B-Chat-v1.0 path: /opt/ai_model/TinyLlama-1.1B-Chat-v1.0 repo: TinyLlama/TinyLlama-1.1B-Chat-v1.0 active: false role: "You are a helpful journalist with insights."
Текущие проблемы
Проблем выше крыши! Так как проект благодаря которому я получил все эти данные, по сути на очень раннем этапе развития, даже при условии, что я имею опыт с такого рода делами. Сконцентрировался на получении результатов. В итоге думаю придется сильно переделывать.
Галлюцинации моделей
Сложности с зависимостями
Медленная загрузка моделей
Ограниченная производительность локально
Полезный ресурс
Вот дока, которая мне реально помогла разобраться с LLM:
https://docs.vllm.ai/projects/recipes/en/latest/index.html

Финальные мысли
На этом пока всё. Спасибо, что дочитали!
Проект всё ещё в процессе развития, и я буду делиться новостями по мере продвижения.
Так же хотелось бы получить, может быть в личку, чего вам не хватило в статье? Я стараюсь сделать статьи максимально емкими, без лишней воды, чтоб люди могли быстро прочесть и прийти к каким‑то выводам, поэтому если вам не хватает деталей или что‑то не так прошу поделиться мыслями.
