ИИ. ЦПУ против ГПУ — Данные и Выводы

от автора

Начало пути!

Начало пути!

Всем привет! Я создатель статьи которую перевел для русскоязычной аудитории.

Я уже публиковался на Хабре и был встречен с теплотой. Планирую вернуться к статьям выпустить продолжение своей статьи про переезд из Азербайджана в Европу. Мы остановились 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 часов подряд. Но аккуратно — можно легко переоценить необходимость.

До того как получить это:

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

Результаты!

Вот ссылка на GitHub-репозиторий, где можно посмотреть результаты, промпты и тексты (примерно 99% сгенерировано моделью). Видео тоже генерировались моделью — тогда я использовал LTX CogVideoX.

До

До

После “оптимизации” которая по сути, это просто снижение качества. Но даже при этом видео иногда пучались… ну, скажем честно, мусорными 😅

Сейчас я в основном генерирую картинки, а видео планирую доработать позже.

Один из самых заметных бустов по производительности дал даунскейл разрешения видео — это сильно снизило нагрузку.

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=77models:  - 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

Запрос: Японские хорор игры

Запрос: Японские хорор игры

Финальные мыс

лиНа этом пока всё. Спасибо, что дочитали!

Проект всё ещё в процессе развития, и я буду делиться новостями по мере продвижения.

Так же хотелось бы получить, может быть в личку, чего вам не хватило в статье? Я стараюсь сделать статьи максимально емкими, без лишней воды, чтоб люди могли быстро прочесть и прийти к каким-то выводам, поэтому если вам не хватает деталей или что-то не так прошу поделиться мыслями.

ссылка на оригинал статьи https://habr.com/ru/articles/1032026/