Як запускати відкриті GenAI-моделі локально. Генеруємо переказ 8-годинного відео Валерія Маркуса

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Вітаю! Мене звати Юрій, я працюю в індустрії понад 15 років, із них близько 10 — у сфері DS/ML. Окрім того, займаюся бекенд-розробкою. Захоплююся прикладним машинним навчанням і продуктизацією інтелектуальних систем.

Багато з нас уже звикли користуватися онлайн-сервісами AI, такими як ChatGPT, Dall-E, Copilot чи Claude. Проте часом виникає потреба запитати в генеративної моделі те, що некомфортно слати в інтернет. Причини можуть бути різні:

  1. Приватність даних. Ви працюєте з конфіденційними даними клієнта чи роботодавця. Залежно від політики онлайн-сервісу, вашого статусу як клієнта чи умов контракту, компанія-розробник іноді може переглядати ваші запити або використовувати їх для навчання своїх моделей.
  2. Прозорість, відтворюваність, контроль. Ви не знаєте, на яких даних навчалась онлайн-модель, яку архітектуру вона використовує, як налаштовані її відповіді (system prompt), наскільки часто її поведінка оновлюється, що вона знає про вас.
  3. Цензура. Ви хочете задати запит, який не має поганих намірів, але буде заблокований контент-фільтрами розробника. Або ж модель дасть максимально «безпечну» чи політкоректну відповідь, уникаючи прямої відповіді на запитання.
  4. Інвестиції у власне «залізо». Ви сказали дружині/чоловікові/батькам, що вам потрібна новенька відеокарта за $2000+ для AI, і взагалі за AI — майбутнє людства. Проте чомусь поки що на відеокарті запускався лише S.T.A.L.K.E.R. 2. «Залізо» вже придбане, тому не хочеться платити ще й за онлайн-сервіси.

Уникнути цих проблем дають змогу відкриті моделі, які можна розгортати на власному середовищі та використовувати офлайн. У статті я розповім, як із ними працювати. Також покажу, як я застосував відкриті моделі, щоб генерувати стислі перекази довгих відео Валерія Маркуса на YouTube, які я не мав часу подивитися повністю.

Що таке відкрита модель

Відкритими (open-access, open-source тощо) називають моделі, ліцензії яких дозволяють використовувати, змінювати та розповсюджувати модель. Відкритість моделі може мати різні форми.

Відкриті ваги (open-weight). Розробник публікує ваги моделі, тобто матриці коефіцієнтів, вивчені в результаті її тренування. Однак навчальні дані та алгоритм тренування залишаються закритими. Користувач може застосувати цю готову модель для генерації відповідей (inference) або адаптувати ваги моделі, довчивши її на власних даних (fine-tune). Приклади таких моделей: LLaMa, Mistral, Stable Diffusion.

Відкриті дані та код (open-source / fully open). Розробник публікує вивчені ваги моделі, навчальні дані, а також код і параметри процесу навчання. В цьому випадку будь-хто, хто має достатні обчислювальні ресурси, може відтворити цю модель самостійно. Приклади таких моделей: OLMo, LLM360.

Використання відкритої моделі зазвичай зводиться до того, щоб завантажити її ваги з сайту розробника й потім запустити inference-код, який на основі цих ваг і ваших запитів (prompts) генеруватиме відповіді моделі. Цей inference-код може мати вигляд скриптів, хостингових фреймворків або ж застосунків для кінцевого користувача.

Якщо проводити аналогію з програмним забезпеченням, то open-weight модель нагадує скомпільований бінарник, а open-source / fully open модель — вихідний код ПЗ, який дозволяє зібрати цей бінарник самостійно. Також, як і у відкритому ПЗ, ліцензія моделі може мати специфічні умови: наприклад, забороняти комерційне використання.

Як обрати потрібну модель

За здібностями

На сьогодні не існує єдиної моделі, яка справляється з усіма завданнями найякісніше, як і не існує єдиного лідерборду для їхнього порівняння. Є низка бенчмарків, які допоможуть зорієнтуватися, яка відкрита модель підійде вам найкраще. Наприклад, Open LLM Leaderboard від Hugging Face використовує шість ключових бенчмарків:

  • Instruction-Following Evaluation (IFEval): вимірює здатність моделі дотримуватися інструкцій, таких як вимоги до форматування відповіді чи використання конкретних ключових слів.
  • Big Bench Hard (BBH): добірка складних завдань з різних предметних галузей, що містять розуміння природної мови, математичне мислення, здоровий глузд і знання світу.
  • Mathematics Aptitude Test of Heuristics (MATH): математичні завдання шкільного олімпіадного рівня, що містять алгебру, геометрію та основи матаналізу.
  • Graduate-Level Google-Proof Q&A (GPQA): запитання, що потребують експертного (PhD) рівня знань з природничих наук — хімії, біології, фізики.
  • Multistep Soft Reasoning (MuSR): вимірює здатність до опрацювання та аналізу довгих текстів, що містять алгоритмічно згенеровані логічні задачі.
  • Massive Multitask Language Understanding — Professional (MMLU-Pro): добірка експертних запитань із різних галузей, таких як медицина, право, етика, інженерні науки, математика.

Ще є окремий рейтинг моделей EvalPlus, який вимірює здатність LLM генерувати код.

Оцінка якості генеративних моделей досі є академічно складною задачею. Якщо ви маєте власний тестовий набір запитань, що відповідає вашим повсякденним завданням, можете використовувати і його для оцінки моделей-кандидатів.

За розробником / сімейством

Ви можете також обирати модель, відштовхуючись від її розробника та екосистеми. Найпопулярніші сімейства відкритих LLM на сьогодні:

Сімейство

Розробник

LLaMa

Meta

Phi

Microsoft

Gemma

Google

Mistral, Mixtral

Mistral

Command

Cohere

Qwen

Alibaba

DeepSeek

DeepSeek

Варто зауважити, що моделі Qwen та DeepSeek мають високі показники на бенчмарках, проте створені китайськими компаніями. Врахуйте цей ризик, якщо розглядаєте їх для ваших задач.

За технічними характеристиками

Кількість параметрів. Якщо ви бачите «12B» в описі моделі, це означає, що вона містить 12 мільярдів параметрів. Зазвичай що більше параметрів, то якісніші відповіді моделі. Проте й зростають її системні вимоги та зменшується швидкість генерації.

Правило «кількість параметрів = якість» не універсальне. Моделі вдосконалюються, з’являються новіші версії. Їхня параметрична ефективність (parameter efficiency) зростає завдяки використанню якісних синтетичних даних, а також таким технікам як дистиляція чи підрізання (pruning). За оцінками аналітиків, параметрична ефективність моделей за два роки покращилася в ~50 разів. Наприклад, Meta стверджує, що якість моделі LLaMa 3.3 70B співмірна з LLaMa 3.1 405B (x6 за шість місяців).

Шукаєте просте емпіричне правило? З мого досвіду, моделі до 14B переважно добре справлятимуться з простими, поширеними завданнями, проте на складніші запити можуть давати неякісні відповіді. Хороші універсальні LLM починаються від 30B, а моделі на 70B і вище вже можуть позмагатися з закритими моделями від OpenAI чи Anthropic. До речі, кількість параметрів у Claude 3.5 Sonnet та GPT-4o приблизно оцінюють як 175B+ та 200B+ відповідно.

Що таке «неякісна відповідь»? Найпоширеніші вади генеративних моделей під час обробки запитів:

  • Модель неправильно розуміє запит і робить не те, про що її попросили.
  • Дає надто узагальнену відповідь і втрачає важливі нюанси.
  • Забуває контекст і починає генерувати текст «від себе».
  • Плутає факти та генерує дезінформацію.
  • Генерує незв’язний чи неграмотний текст.
  • Галюцинує.

Як наочний приклад галюцинації, ось що LLaMa 3.1 8B каже про мене:

>>> Хто такий Юрій Гуц?

Юрій Гуц (нар. 28 листопада 1970 року в місті Львів) — український співак, композитор та актор театру і кіно. Він є одним із найбільш продюсованих виконавців України початку 2000 років, його пісні були дуже популярними на початку тисячоліття: наприклад "Ми не проїдемо" (1999), "Дзвеніть, дівчата!" (2003) тощо.

Квантизація. Квантизація параметрів застосовується, щоб зменшити вимоги моделі до пам’яті та дискового простору. Під час квантизації кожен параметр, який зазвичай мав би тип float32, кодується k-бітним цілочисельним представленням. Наприклад, Q5 означає, що кожен параметр квантизується 5-бітним цілим числом. Схеми квантизації типу Q4_K_Mтрохи складніші: у них застосовується змішана точність, де для більшості тензорів використовується 4 біти, але деякі шари моделі вибірково кодуються точнішим представленням.

Зрозуміло, що таке кодування передбачає втрату інформації. Що компактніша квантизація застосовується, то дужче страждає якість моделі.

дякую за допомогу користувачу Reddit /u/staviq

Instruct чи Chat? Іноді назви моделей мають приставку -Instruct або -Chat. Вона означає тип тюнінгу, який застосовано до моделі. Тип Instruct оптимізований для одноразових запитів «інструкція — відповідь», а Chat — до багатокрокової діалогової взаємодії з користувачем. На практиці обрати «неправильний» тип моделі — не катастрофа, проте якщо ви будуєте чат-інтерфейси на основі цієї моделі, доцільніше вибрати тип Chat.

Розмір контекстного вікна. Кожна LLM має обмежене вікно контексту: наприклад, 128k токенів для LLaMa 3.1. Ваш запит + згенерований результат мають поміститися в контекстне вікно моделі. У разі перевищення контексту ви або отримаєте помилку, або inference-фреймворк може тишком-нишком обрізати ваш запит, що не завжди бажано.

Що більше контекстне вікно, то значнішу кількість інформації LLM може втримувати «в голові». Наприклад, це важливо для задач узагальнення довгих текстів, RAG або для програмування за допомогою AI-асистентів, де в контексті потрібно утримувати цілі файли з кодом. До сучасних моделей часто застосовують спеціальний тюнінг, щоб штучно збільшити контекстне вікно.

З-поміж рівних варіантів обирайте ту модель, яка має більший контекст. Проте ставтеся до розміру контексту як до кількості мегапікселів у фотокамері. Іноді числа на кшталт 1M tokens є «маркетинговими», а якість обробки контекстів понад 16—32k стає сумнівною.

Це все надто складно. Є якийсь простий рецепт вибору моделі?

Спробуйте завантажити останні версії моделей кількох різних виробників розміром від 7B до 14B параметрів та квантизацією Q4_K_M. Наприклад, по одній з моделей LLaMa, Phi та Mistral. Якщо якість їхніх відповідей вас не влаштовує, спробуйте варіанти з точнішою квантизацією (Q4 → Q5 → Q6) або збільшуйте кількість параметрів (7B → 14B → 30B → 70B), допоки вистачає можливостей «заліза». Про апаратні вимоги поговоримо далі.

Підготовка до хостингу моделей

Головне, що треба знати про сучасні генеративні моделі, — вони вибагливі до ресурсів і виконують дуже багато обчислень. Втім, не обов’язково мати суперкомп’ютер для їхнього хостингу. Як ми вже розібралися вище, моделі бувають різних розмірів і архітектур. Такі моделі можна запускати як на ігровому ПК, так і на звичайному ноутбуці розробника, а деякі — навіть на смартфоні.

Обирайте модель, враховуючи можливості свого «заліза». Інакше генеративна модель генеруватиме вам лише страждання.

Що стане в пригоді:

Хороший GPU

Ключовий критерій — якомога більший обсяг відеопам’яті (VRAM). Деякі inference-бібліотеки (наприклад, llama.cpp / GGML) дозволяють відвантажувати частину моделі на GPU, а решту виконувати на CPU. Але якщо модель повністю поміститься у VRAM, це забезпечить найкращу швидкість її виконання. Якщо у вас MacBook з Apple Silicon, вбудований GPU вельми добре справляється з хостингом невеликих LLM і text-to-image моделей.

На ПК можете використовувати вашу наявну ігрову відеокарту (наприклад, з сімейства GeForce RTX). А якщо ви не з такої сім’ї, як другі, а з богатої, то можете встановити кілька GPU та використовувати GPU-паралелізм. До речі, зовсім нещодавно NVIDIA анонсувала персональний AI-суперкомп’ютер Project DIGITS вартістю від $3000, здатний запускати моделі на 200B параметрів.

Багато RAM

Оперативна пам’ять використовується для токенізації тексту, підготовки пакетів даних (batches), обміну даними з GPU, кешування, а також для утримання тих ваг моделі, які не помістилися у VRAM. Як і у випадку з GPU, кількість потрібної пам’яті залежить від обраної моделі. Комфортний мінімум пам’яті для популярних моделей — 16–32 GB, а для великих моделей можна задуматися і про 64–128 GB.

Дисковий простір

Хороша модель може важити, як AAA-гра. Розмір ваг залежить від кількості параметрів моделі та ступеня їхньої квантизації. Наприклад, LLaMa 3.1 8B Instruct займає 4.9 GB, Phi-4 14B — 9.1 GB, а LLaMa 3.3 70B Instruct — 42 GB (усі моделі вказані з квантизацією Q4_K_M та у форматі GGUF). Модель генерації зображень Stable Diffusion 3.5 Large має 8.1B параметрів і займає 26 GB на диску.

Можна також розгорнути відкриту модель на Google Colab чи Kaggle Notebooks, використовуючи їхні GPU-середовища в рамках безплатних лімітів.

Для оцінки, чи вистачить вам відеопам’яті на ту чи іншу модель, можете скористатися приблизною формулою нижче або ж більш точними калькуляторами (UI, скрипт).

На MacBook Pro M1 32GB мені комфортно користуватися моделями до 32B параметрів, якщо запити не дуже об’ємні. Менші моделі на ~10B параметрів «літають» на ноутбуці зі швидкістю ChatGPT. Також із ними справиться навіть нотбук без GPU. Великі моделі та важкі запити я запускаю на ПК з RTX 4090 (24 GB VRAM) і 96 GB RAM.

Операційна система. Загалом не відіграє ролі. Я користуюся відкритими моделями на Windows, Linux i macOS. Inference-інструменти є для кожної популярної ОС. Головне, щоб вони підтримували апаратне прискорення обчислень (CUDA, Metal, AVX тощо). Про кілька популярних інструментів поговоримо далі.

Генеруємо контент

Ollama

Якщо ви любите термінал і код, то один із найпростіших способів працювати з відкритими LLM — це встановити Ollama. Ви відразу отримуєте локальний inference-сервер, який уміє завантажувати моделі з власного репозиторію та виконувати запити на цих моделях (зокрема в режимі стримінгу). Ollama базується на бібліотеці llama.cpp, яку я вже згадував раніше.

Запускаємо сервер Ollama:

$ ollama serve

Завантажуємо ваги моделі Google Gemma 2 9B Instruct Q4_0:

$ ollama pull gemma2:9b

Надсилаємо запит через інтерактивний CLI:

$ ollama run gemma2:9b
>>> Розкажи про сайт DOU.ua
DOU.ua - це **українська професійна спільнота для IT-фахівців**.

**Основні функції та особливості:**

* **Форум:**
    * Активна дискусія на різноманітні теми, пов'язані з IT-сферою: технології, освіта, кар'єра, життя.
    * Доступ до знання та досвіду досвідчених фахівців.
    * Можливість отримати відповіді на свої питання та поділитися власними роздумами.

* **Вакансії:**
    * Великий вибір актуальних вакансій від українських компаній та IT-агентств.
    * Підбір вакансій за напрямом, місцезнаходженням та рівнем зарплати.

* **Профіль користувача:**
    * Можливість створити професійний профіль з досвідом роботи, навичками та покликаннями.
    * Зростання популярності та візуалізація власного іміджу в IT-спільноті.

* **Статті та інтерв'ю:**
    * Публікації фахівців, аналітичні матеріали, огляди галузі, інсайдерські розповіді про компанії.

* **Вебінари та події:**
    * Онлайн-семінари та конференції з актуальними темами IT-сфери.

* **Клуби та спільноти:**
    * Приєднання до тематичних клубів за інтересами, галуззю або технологією.

DOU.ua є **корисним ресурсом для всіх, хто працює в IT-галузі**. Він допомагає знаходити роботу, навчатися новим технологіям, спілкуватися з колегами та будувати свою кар'єру.

Або через API:

$ REQUEST_BODY='{
    "model": "gemma2:9b",
    "prompt": "Розкажи про сайт DOU.ua",
    "stream": false,
    "options": {"temperature": 0.5, "num_ctx": 512}}
}'
$ curl -X POST http://localhost:11434/api/generate -d "$REQUEST_BODY"

Якщо ви користуєтеся LangChain, то можете викликати моделі з Ollama у вашому Python-коді:

$ pip install langchain-ollama
from langchain_ollama import OllamaLLM

llm = OllamaLLM(model="gemma2:9b")
response = llm.invoke("Як пропатчити KDE2 під FreeBSD?")
print(response)

Перемикаємося на модель з більшою кількістю параметрів (27B) і задаємо складніший запит:

$ ollama run gemma2:27b
>>> Уяви, що ти — Тарас Шевченко. Напиши невеликий вірш про українську IT-індустрію.

Ой, мово рідна, в світі знов співаєш,
Не лиш в піснях, а й в коді оживаєш.

Юні душі, як кобзарі майбутнього,
З клавіш створюють світ новітній, без сну й нудьги.

Програми пнуться, мов сонця промені,
До зірок знань, до неба безмежного.

І хай вороги гукають, що не сила в нас,
Та IT-Україна, як дуб міцний, стоїть весь час!

Під час роботи з Ollama корисно переглядати логи сервера. Наприклад, щоб переконатися, чи помістилася модель у VRAM повністю. У мене з gemma2:27b все виглядає чудово:

time=2025-01-13T20:31:31.336+02:00 level=INFO source=sched.go:714 msg="new model will fit in available VRAM in single GPU, loading" model=D:\Documents\Ollama\models\blobs\sha256-d7e4b00a7d7a8d03d4eed9b0f3f61a427e9f0fc5dea6aeb414e41dee23dc8ecc gpu=GPU-f5d299ea-cff4-60ee-d8b2-ffc981b1f02a parallel=4 available=22374043648 required="18.8 GiB"
time=2025-01-13T20:31:31.354+02:00 level=INFO source=memory.go:356 msg="offload to cuda" layers.requested=-1 layers.model=47 layers.offload=47 layers.split="" memory.available="[20.8 GiB]" memory.gpu_overhead="0 B" memory.required.full="18.8 GiB" memory.required.partial="18.8 GiB" memory.required.kv="2.9 GiB" memory.required.allocations="[18.8 GiB]" memory.weights.total="16.5 GiB" memory.weights.repeating="15.6 GiB" memory.weights.nonrepeating="922.9 MiB" memory.graph.full="562.0 MiB" memory.graph.partial="1.4 GiB"

А з llama3.3:70b — уже ні. Тільки 38 шарів із 81 вмістилися на GPU, тому модель працюватиме відчутно повільніше, оскільки виконуватиме решту обчислень на CPU:

time=2025-01-13T21:37:11.887+02:00 level=INFO source=memory.go:356 msg="offload to cuda" layers.requested=-1 layers.model=81 layers.offload=38 layers.split="" memory.available="[20.6 GiB]" memory.gpu_overhead="0 B" memory.required.full="42.9 GiB" memory.required.partial="20.5 GiB" memory.required.kv="640.0 MiB" memory.required.allocations="[20.5 GiB]" memory.weights.total="38.9 GiB" memory.weights.repeating="38.1 GiB" memory.weights.nonrepeating="822.0 MiB" memory.graph.full="324.0 MiB" memory.graph.partial="1.1 GiB"

Також остерігайтеся повідомлень «truncating input prompt». Зазвичай це означає, що ви надіслали великий запит і він перевищив розмір контекстного вікна за замовчуванням, який використовує Ollama (2048 токенів). У цьому випадку можете збільшити вікно, вказавши в запиті параметр num_ctx. Однак врахуйте, що збільшення розміру вікна також призведе до більшого використання пам’яті.

llama_new_context_with_model: n_ctx_per_seq (2048) < n_ctx_train (8192) -- the full capacity of the model will not be utilized
...
time=2025-01-13T21:32:29.500+02:00 level=WARN source=runner.go:129 msg="truncating input prompt" limit=2048 prompt=17814 keep=5 new=2048

LM Studio

Якщо вам більше до вподоби графічний інтерфейс і ви шукаєте офлайн-аналог ChatGPT, можете користуватися кросплатформним застосунком LM Studio. Він також дає можливість легко знаходити й завантажувати моделі, створювати окремі чати та налаштовувати параметри запитів:

У роботі з відкритими GenAI-застосунками є одна незручність: кожен із них має власне сховище моделей, і не хочеться завантажувати одну й ту саму модель на диск кілька разів. Проте моделі з Ollama можна «імпортувати» в LM Studio, створивши символічні посилання. Я для цього написав невеличкий скрипт на Python.

LM Studio також має простенький вбудований RAG, за допомогою якого можна «спілкуватися» з власними документами. Наприклад, я завантажив аналітичний звіт, присвячений ШІ, який я вже згадував вище в розділі про параметри моделей:

Окрім LM Studio, можете розглянути подібні застосунки — Jan.ai або LibreChat.

Amuse (Windows) і DiffusionBee (macOS)

Amuse і DiffusionBee дозволяють працювати з відкритими моделями генерації зображень і виконувати такі завдання:

  • Text to image: генерація зображення за текстовим описом.
  • Image to image: перетворення одного зображення на інше на основі запиту.
  • Image upscaling: збільшення роздільної здатності зображення.
  • Image inpainting: заміна частини зображення зі збереженням загальної структури та контексту.

Приклад: просимо Amuse намалювати типового користувача DOU за допомогою відкритої моделі Stable Diffusion 3.5 Large Turbo:

Аналогічний запит у DiffusionBee з моделлю Stable Diffusion XL Base 1.0:

Під час генерації зображень іноді корисно задавати параметр Negative Prompt. Він дозволяє вказати, що модель не повинна робити, і прибрати небажані елементи. Інший корисний параметр — Seed: фіксуючи його, ви можете «закріпити» базове зображення та експериментувати надалі з його варіаціями.

Крім цих застосунків, можете також звернути увагу на ComfyUI та Stable Diffusion Web UI.

Практичний кейс: стислий переказ довгого YouTube-відео

Місяць тому військовий Валерій Маркус, який раніше служив головним сержантом 47-ї бригади, записав серію відео про проблеми бригади та контрнаступу 2023 року. Сумарна їхня тривалість — 8 годин, тому, попри все бажання, я не міг знайти часу подивитися все повністю. Натомість я вирішив застосувати AI для генерації стислого переказу цих відео, використовуючи лише відкриті безплатні рішення та власне «залізо»:

За допомогою OpenAI Whisper Large та LLaMa 3.3 70B мені вдалося стиснути всі сім роликів до кількох сторінок executive summary. При цьому обробка години відео займала приблизно 20 хвилин на ПК: 10 хвилин на speech-to-text і 10 хвилин на запит до LLM, яка не повністю влазила на мою RTX 4090. Відео, які мене зацікавили на основі стислих описів, я потім переглянув детальніше.

Фрагмент переказу:

Частина 1: Мрія
Інтерв’ю з Валерієм Маркусом, головним сержантом 47-ї окремої механізованої бригади ЗСУ, розкриває деталі внутрішніх конфліктів та проблем всередині бригади. Маркус розповідає про створення бригади, концепцію її розвитку та роль Івана Михайловича Шаламаги, командира батальйону. Він підкреслює важливість команди, яка працювала над стратегічним розвитком військової частини, але також вказує на недоліки Шаламаги як лідера.

Маркус описує процес формування бригади, початкові успіхи та подальші проблеми, які виникли через нездатність Шаламаги ефективно керувати та приймати рішення. Він також зазначає про свою роль у просуванні позитивного образу Шаламаги та спробах зробити його більш ефективним лідером.

Інтерв’ю також торкається теми корупції, некомпетентності та впливу зовнішніх факторів на роботу бригади. Маркус підкреслює важливість командної роботи та необхідність зміни системи управління в ЗСУ для уникнення подібних проблем в майбутньому.

Основні тези/озвучені проблеми:

  1. Некомпетентність Івана Михайловича Шаламаги: Маркус вважає, що Шаламага не має необхідних лідерських якостей та здібностей для ефективного керування бригадою.
  2. Внутрішні конфлікти: Маркус описує конфлікти всередині бригади, зокрема між ним та Шаламагою, які негативно впливають на роботу бригади.
  3. Корупція та некомпетентність: Маркус зазначає про корупцію та некомпетентність в ЗСУ, які перешкоджують ефективній роботі бригади.
  4. Недоліки системи управління: Маркус підкреслює необхідність зміни системи управління в ЗСУ для уникнення подібних проблем в майбутньому.
  5. Важливість командної роботи: Маркус вважає, що командна робота є ключовим фактором успіху бригади та necesario для досягнення спільних цілей.
  6. Проблеми з рекрутингом та підготовкою: Маркус описує проблеми з рекрутингом та подготовкою бійців, які негативно впливають на роботу бригади.
  7. Вплив зовнішніх факторів: Маркус зазначає про вплив зовнішніх факторів, таких як політичні інтереси та корупція, на роботу бригади.

Повний переказ відео Маркуса, опис інструментів і код можна подивитися на GitHub.

Теми за межами цієї статті

Оскільки фокус цієї статті — як почати використовувати відкриті генеративні моделі для власних повсякденних потреб, я не розкривав глибоко такі дотичні теми:

  • Тонке налаштування моделей (fine-tuning). Ця техніка може бути ефективною, якщо вам потрібно адаптувати відкриту модель до вузькоспеціалізованої галузі чи специфічної форми запитів / відповідей. Наприклад, MedAlpaca — це модель, похідна від LLaMa, навчена на медичних текстах. З інструментів для тонкого налаштування можу рекомендувати Unsloth.

Якщо ви активно користуєтеся відкритими моделями, поділіться своїми кейсами в коментарях!

P.S. Дякую Олександру Руппельту та Олександру Косовану за рецензію статті.

P.P.S. Жодне слово в цій статті, крім зразків роботи моделей, не було написане AI :)

👍ПодобаєтьсяСподобалось39
До обраногоВ обраному20
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

В мене знайомий цікаваиться. У ньго тільки MacBook Pro, якийсь з останніх. Чи можна прикупити йому щось типу NVIDIA 4090 + Power Supply + Якийсь рейзер і запускати LLM таким чином на макі. Буде цей сет працювати?

Народ мак міні пачками купує і стекає їх тандерболтом, а ти навпаки 4090 розглядаєш уже будучи на маку )

www.youtube.com/watch?v=0EInsMyH87Q

Зараз такі часи що треба гнатися за VRAM а не за TPU. Велика кількість оперативки і средненький TPU, набагато краще ніж топовий TPU і лише 24гб оперативки. А М4 pro має TPU більш ніж середній, на рівні мобільних 4090.

Але це якщо серйозно хочеш цим займатися, і крутити різні моделі (llm, генерування картинок). А так простіше і дешевше буде за API заплатити.

Хлопцы, для программирования какая лучше подойдет из тех которые указали выше?

Із відкритих, deepseek-coder, codestral, із закритих — o3-mini-high

Дякую за статтю. Досить корисно було і про параметри, і про те, як підняти то все локально.

Дуже цікава стаття... коли виросту, може щось таке зроблю собі в ноутбуці 🤔

Підсумок цієї вебсторінки:
dou.ua/forums/topic/52077

Використання відкритих GenAI-моделей локально.
Юрій Гуц, провідний інженер машинного навчання, розглядає переваги використання відкритих GenAI-моделей, які дозволяють працювати з даними офлайн, уникати проблем з приватністю, контролем та доступністю. Описується, як відкриті моделі (open-access, open-source) дозволяють користувачам розгортати та адаптувати моделі під свої потреби.

Автор детально розглядає, як вибрати модель, враховуючи її здатності, розробника, кількість параметрів та технічні характеристики. Він також порівнює різні інструменти для роботи з моделями, такі як Ollama та LM Studio, та наводить практичний приклад використання AI для генерування стислих переказів з відео.

Загалом, стаття є покроковим посібником для тих, хто хоче почати працювати з локальними AI-моделями.

Крута стаття, дякую!
Дуже цікаво було б дізнатись ще про продакшн хостинг моделей (переваги та недоліки існуючих інструментів, можливі челенджі і т.п.).
Пишіть ще 👍

Дякую, гарна стаття! Сам накидав чернетку на цю тему)
Варто додати, що якщо необхідно використовувати tools, то треба дивитися чи модель підтримує tool use. Тому це також вагомо при виборі моделі. Для ollama моделі з tools можна побачити тут:
ollama.com/search?c=tools

Що толку якщо всі вони неюзабельні в реальних задачах. Тільки в базові задачі з простим запитом і 1-2 простими тулами можуть. А щось більше, запит з контекстом в 1000+ токенів і з 5-ма тулами (що також віджирає немало контексту), і все, всі відкриті моделі менше 100b параметрів фейляться.

Да взагалі з контекстом у них дуже погано, і всі задачі які зав’язані на контекст, це фейл для них. Навіть якась GPT- 4o mini справляється набагато краще.

Qwen-2.5-coder 7b норм працює з Cline. Якщо треба норм в токени, то треба вибирати моделі з більшим вікном, яких зараз з’являється більше. При бажанні он є Qwen 1M, якщо є 120 GB vRAM)
Моделі на 32b такою показують гарний результат. В зараз тенденція на зменшення кількості параметрів зберігаючи або навіть підвищуючи якість. Он mistral 3 small тому приклад
Ну і від задачі залежить. Та сама o3-mini-high не може написати базовий скрипт з Langchain, бо вони робили рефактор і сильно поміняли архітектуру, а в неї багато старого коду

Так я ж про роботу з тулзами а не код писати. Код то всі вміють писати більш-менш. Як і відповідати на питання і вирішувати якісь задачки (якщо промпт не великий)

А вот проаналізувати кілька сторінок тексту і на основі прочитаного вибрати одну чи кілька тулзовин які викликати — тут їх полномочія все.

Так, згоден, з тулзами важко. Але мікс підходу теж підходить: в тому самому cline можна заюзати одну модель щоб все спланувати як написати код і які тулзи заюзати, а іншу модель щоб все це зробити.
Але навіть сline пише що з tools call туго і юзайте claude який норм це робить)

Дякую за статтю. Вона цікава.

Ділюсь комерційними прикладами продуктів з АІ моделями над якими працював:

DriveIn стійка — АІ асистент для замовлення в ресторанах:
youtu.be/...​yoUunr5o6Y?feature=shared

Автономний магазин без касирів і черг:
youtu.be/...​Pr5I0?si=PuaDxM9fsIxqIRgQ

youtu.be/...​ZeiA8?si=7NDKsE6dvHrvrpuG

youtube.com/...​ZZdY0?si=ld6c5VRsuP1_9a6V

Автономний холодильник (вендінговий апарат з АІ):
youtube.com/...​vAGhw?si=2O4HuJPepaeeiJuN

Стаття чудова.
Розкажу трішки про свій досвід.
У мене ПК з 4080, тому запустити якусь локальну llm було цікаво в якості бенчмарку.
Через ollama вийшло дуже просто це зробити.
Обрав собі моделі від фейсбуку, бо вони відносно універсальні для погратися.
Але я не знайшов для себе жодного використання цього.
Бо для роботи копайлот і O1 краще.
У мене нема якоїсь колекції даних які я хочу обробити але не хочу грузити в клауд.
Тримати ПК ввімкнутим завжди щоб наприклад використовувати його замість копайлоту економічно не вигідно, бо копайлот і GPT+ підписку мені сплачує компанія. А ПК електроенергію мою їсть.
Тому так і залишилося іграшкою накшталт «вау, дивись що можу».

Класна стаття,

Свиснув картку, поганяв на НР vllm з кількома моделями поки йшов до Припʼяті, зробив свій чатжпт на gradio з голосовим синтезатором, жере електрику як дурне, але був фан. Задовольнився і поки що закинув, якось інше

На жаль осягнув і глибину ширини

Моделі займають ну просто дофіга на диску, якщо хочеться пробувати то треба ну хоч терабайт вільного і швидкого місця, в мене те що скачав з HF зайняло десь 700гб але я особо не перебирав, що качав, ставив на ніч, але й видаляти й знов викачувати — не варіант. Комп тре моцний, все правда. Деякі пакети навіть не хотіли компілюватись на менше 64г, здається flash-attn

користуватись теж не те саме що тренувати, можна забути про власне тренування чогось типу LLM

По друге няшні кейси вимагають кількох моделей в памʼяті. Наприклад розпізнати голос, пропустити через llm, синтезувати голос — три моделі. Тому в мене тільки на синтез і вистачило ))

Ну і не скейлиться воно крім як для себе погратись. Який сенс незрозуміло, тупик. І фан пройшов. Ну зробив і що далі... ні потрейнити особо, ні заскейлити. Просто читати кучеряві слова й абревіатури?

Поки що інтерес підупав, може ще зʼявиться

Може як на рахунку півсотні венчурних лямів завалялось то має сенс, а так фіг йо зна кому впаде за власний кошт освоювати все це. Аби просто було теж незрозуміло нащо

Якщо digits буде справді доступний, може повернусь до того, буде бімба, сподіваюсь буде дешевше за h100 :) але думаю чи відлистаю хуангу 3к за коробочку для Ші — та нє, це задоволення для естетов або для тих кому купили на роботі

Підписатись на коментарі