LINUX.ORG.RU
ФорумTalks

Хочу поделиться результатами тестов LLM

 huggingface, llama.cpp,


1

2

Всем доброго времени суток. Хочу поделиться результатами тестирования .gguf моделей. Я предполагал использовать их в связке с IDE, в виде эндпоинта, для генерации кода, может быть для работы с документами (нормативными, спецификациями), агентной работы (систематизация чего-либо). Сам пока не знаю но интересно разобраться как это работает. Хотя понятно что есть хорошие, даже бесплатные решения на стороннем железе, гораздо эффективнее. За последний год вижу что модели стали компактнее и эффективнее. У меня две видеокарты, 3060 и 1650, с 12 и 4 гб оперативы. Буду рад если кому то будет интересно. Я увидел что некоторые модели могут генерировать вменяемый код, хотя сам не имею большого опыта и компетенции в разработке софта. Проверял я в aistudio, благо там немерянные лимиты.

Намутил такой тестер моделей .gguf с hugginface:

https://github.com/dasfile/automate_llm_tests

Мои задачи для тестирования выглядят так:


Test 1: PowerShell (Administration: Resource Monitoring)
Write a script that scans system processes (Get-Process), finds those consuming >500MB RAM, and outputs in a table: Process Name, PID, RAM (MB), CPU (%). Sort by RAM descending. If no processes found, output "No high-consumption processes". The script should be resilient to lack of permissions and handle the CPU percentage calculation (or estimation) logically.

Test 2: Arduino C++ (Embedded: Multitasking with millis)
Write a sketch for Arduino that performs two independent tasks without using delay():
1. Blink an LED on Pin 13: ON for 1000ms, OFF for 1000ms.
2. Read an analog sensor on Pin A0 every 500ms, map the value (0-1023) to 0-100%, and print to Serial: "Sensor: XX%".
Handle edge cases (e.g., ensure Serial is ready). Use strictly standard Arduino API (no external sensor libraries needed for this logic).

Test 3: JavaScript (Node.js: Files + Async Handling)
Write a Node.js (fs/promises) script that asynchronously reads a JSON file 'config.json' (array of tasks: {id, status, priority}), filters high-priority items (priority > 7), and outputs the top-3 by ID in the format: "Task ID: X - Status: Y". Handle cases: file not found (create default), invalid JSON (log error).

Test 4: Python (API + IDE-Integration: Requests & Reports)
Write a Python script using the requests library (standard industry practice). Load data from 'https://api.github.com/users/octocat'. If the network fails (or 404), fall back to a local 'user.json'. Extract the user's bio and public_repos count. Generate a Markdown snippet suitable for an IDE tooltip: "Bio: [text]...". Handle connection timeouts and JSON errors gracefully.

Test 5: AutoLISP (CAD: Visual LISP Object Iteration)
Write a function count-specific-blocks using Visual LISP (vl-*, vla-*) functions. The function should take a block name as an argument (string), iterate through the current drawing's Model Space, and count how many times that specific block is inserted. Output the result to the command line. Handle cases where the block name does not exist in the drawing.

Test 6: ANSI C (Low-level: Buffers + Strings)
Write a buffer_to_hex function (ANSI C) that converts a byte buffer (char* buf, size_t len) into a hexadecimal string and prints it to stdout. Handle empty buffer cases and ensure memory safety logic.```

Результаты такие:

Рекомендуемый набор (Keep List)

Вот что стоит оставить, разделив по вашему железу.
1. Для GTX 1650 (4 GB VRAM) + CPU

Эти модели влезут в память целиком (или почти целиком), обеспечивая максимальную скорость и отзывчивость системы.

    Phi-4-mini-instruct-Q6_K (или Q5_K_M)

        Роль: Основная "рабочая лошадка".

        Почему: Феноменальная скорость (~68 t/s), отличный C++ и JS. Влезает в 4 ГБ VRAM почти полностью (оставив ~500 МБ системе).

    Qwen3-8B-Instruct-Q4_K_M

        Роль: "Умный" помощник.

        Почему: Она не влезет полностью в 4 ГБ (нужно около 5.5 ГБ), но если выгрузить часть слоев на CPU, она будет работать приемлемо. Она намного умнее Phi-4 в сложных задачах (Lisp, PowerShell).

2. Для RTX 3060 (12 GB VRAM)

Здесь можно разгуляться. Эти модели дадут качество уровня GPT-3.5/GPT-4.

    GPT-OSS-20B-Q4_K_M (Открытие тестов!)

        Роль: Главный архитектор.

        Почему: Удивительно, но она работает быстрее (47 t/s), чем Qwen 14B (30 t/s), при этом пишет код более высокого, "инженерного" уровня. Занимает около 11-12 ГБ VRAM (впритык, но работает быстро).

    Qwen3-14B-Instruct-Q4_K_M

        Роль: Надежный бэкенд.

        Почему: Самая сбалансированная и предсказуемая модель. Если GPT-OSS начнет фантазировать, Qwen3 вернет на землю. Влезает в 12 ГБ с запасом.

    Qwen3-8B-Instruct-Q6_K (или Q8_0)

        Роль: Скоростной кодер.

        Почему: Если нужна скорость выше 40 t/s, но Phi-4 кажется глуповатой. На 3060 можно позволить себе максимальное квантование Q8.

Итоговая конфигурация

Удалить: Qwen2.5 (все), Trinity, GLM, Gemma, Granite, GigaChat (рискованная).
Оставить на диске:

    Phi-4-mini (Q6) — для запуска на чем угодно.

    Qwen3-8B-Instruct (Q5/Q6) — золотая середина.

    GPT-OSS-20B (Q4) — для сложных задач на RTX 3060.

    Qwen3-14B (Q4) — как резервный "умный" вариант.

====================
В принципе я уже активно их использую как переводчики, под рукой, что то быстро спросить. Часто они генерируют ответ быстрее. Я по привычке, в своём хозяйстве, стараюсь использовать локальные инструменты, на своём железе. Может это и неправильно.
★★★

Я по привычке, в своём хозяйстве, стараюсь использовать локальные инструменты, на своём железе. Может это и неправильно.

Ну чо, это не самый легкий путь, но круто.

goingUp ★★★★★
()

Я по привычке, в своём хозяйстве, стараюсь использовать локальные инструменты, на своём железе.

Чувак, дай пожму твою руку.

tiinn ★★★★★
()

Проверял я в aistudio, благо там немерянные лимиты.

Вот этот момент я не понял. Если модели локальные, то какие могут быть лимиты?

knovich ★★
()

Каждая модель может только на одной из двух видеокарт размещаться? Не пробовал сравнить те же тесты с онлайн агентами? Насколько будут отличаться результаты.

DenProg
()

А у нас прикрутили автоПР через АИ. Из последнего:

  • «Кроссплатформенная логика расходится по деталям поведения и проверок».
  • «В комментарии к mln_pusher_send указано Признак ошибки, true в случае успеха, что не соответствует реальному контракту (true при успехе, false при ошибке).»
PPP328 ★★★★★
()

Write a sketch for Arduino

А прикиньте, что вот чувак выбрал самую распоследнюю LLM, задаёт вопрос, расписывает всё по полочкам, целый день тратит на формулировку вопроса. И вот, вводит в чатик, а LLM ему отвечает: сам пиши, бездельник!

seiken ★★★★★
()
Ответ на: комментарий от seiken

Такое часто бывает с онлайн моделями. Чат гопота сперва прекрасно работал инженером промптов для генерации изображений. А потом скатился. Грю, «сделай промпт как девочка рисует персик», а он: «изображение, на котором девочка рисует персик». Спасибо, КО.

А Гемини, да, тот вообще издевался. Сую .m4a, грю, вычлени звуковую дорожку и переведи на русский. Делает. Сую следующий .m4a, опять говорю, вычлени звуковую дорожку и переведи на русский. «Ой, я это делать не умею, воспользуйтесь онлайн-сервисами»

tiinn ★★★★★
()
Ответ на: комментарий от DenProg

Каждая модель может только на одной из двух видеокарт размещаться?

Зависит от того, как настроена пускалка инференса. В теории, llama.cpp умеет дробить модели на разные видяхи, но могут быть нюансы.

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

Немного бессмысленно, т.к. никто не знает, что запущено в облаке. Может оно гуглит и дообучается в реальном времени?

DarkAmateur ★★★★
()

Тоже добавлю.

Понятно, что вопрос ресурсов, но вот понравился qwen3-next 80b 3a с хорошей выгрузкой в RAM, даже лучше чем GPT-OSS-120B. Только и там и там 64GB прям впритык, а с нынешними ценам 128гб можно забить до 2027 года

One ★★★★★
()
Ответ на: комментарий от knovich

knovich

Вот этот момент я не понял. Если модели локальные, то какие могут быть лимиты?

aistudio проверяла пачки решений, анализировала, ранжировала, отсеивала совсем не годных, подсвечивала зерно разума

baaba ★★★
() автор топика

пробовал ставить ollama на винду. - не нужная фитча. проще работать через браузер. это если конфиденциальность какойто фирме нужна тогда стоит подумать.

jura12 ★★
()
Ответ на: комментарий от One

Понятно, что вопрос ресурсов, но вот понравился qwen3-next 80b 3a с хорошей выгрузкой в RAM, даже лучше чем GPT-OSS-120B. Только и там и там 64GB прям впритык, а с нынешними ценам 128гб можно забить до 2027 года

Я буду ждать пока Qwen выкатит что то новенькое под мою 3060 а Бартовский оквантует с индексами внимания и по феншую. А так, смотрю какие есть эндпоинты. Кстати, смотрел вчера ролик, вот эти ребята дают халявные эндпоинты, правда до 32Б:

https://immers.cloud/ai/model/

А вот ролик, там интересный тайминг, можно поклацать:

https://www.youtube.com/watch?v=AWIp6gR2vwI

А так - надо самому учиться и расти.

baaba ★★★
() автор топика
Ответ на: комментарий от DarkAmateur

Может оно гуглит и дообучается в реальном времени?

Это пока в мечтах. Ты «общаешься» с zip-файлом, имеющим некий срез интернета на момент создания.

DenProg
()

Методология странная:

What it does:

- Starts llama-server for each model
- Sends prompt.txt contents to the model using the Chat API
- Saves one .txt file per iteration with the model response and a STATISTICS section

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

Шляпа какая-то, двое из ларца, одинаковых с лица.

Gary ★★★★★
()
Ответ на: комментарий от Gary

Шляпа какая-то, двое из ларца, одинаковых с лица. Gary

Промпт содержит задачи, это текстовый файл. Файл с промптом скармливается модели, один или несколько раз. Это, как правило разные модели и в разной квантовке, возможно из разных репозитариев (Бартовский использует матрицу внимания). Далее, результат записывается в выходной файл, там, как правило, решение задачи а в конце - статистика.

Другая модель сравнивает как прошло тестирование. Одинаково отвечала модель или варьировала ответы. Рабочий ли код. Эта часть делается вручную. То есть я скармливаю большой модели ответы малых. Она проверяет карточки с заданиями. Это адский труд. По результатам я понимаю, какую модель можно поставить в виде эндпоинта, для IDE.

Собственно вот. Раньше я вручную прогонял. Сейчас пишу список моделей и количество итераций. Результаты посылаю пачкой в aistudio.

PS то есть скрипт автоматически скармливает тесты. Вручную это долго и нудно.

По результатам примерно понятно какая модель лучше и в каком качестве и чего примерно от неё ждать. Но практика покажет.

baaba ★★★
() автор топика
Последнее исправление: baaba (всего исправлений: 1)
Ответ на: комментарий от DenProg

Ты «общаешься» с zip-файлом, имеющим некий срез интернета на момент создания.

Ну, окей. Агенты делают запрос за актуальными данными, LLM их пережёвывает с учётом своего «опыта». Опять же, мы гадаем.

DarkAmateur ★★★★
()

Qwen, давай ты поработаешь промпт-инженером: обогати лексически, добавь деталей и сгенерируй промпт для генерации из ображения, где Брут и сенаторы убивают Цезаря.

Драматическая сцена в римском форуме, в центре которого стоит величественный Цезарь, одетый в роскошную белую тогу с золотыми узорами, с титула «Император Рима» на груди. Вокруг него собралась толпа римских граждан, присутствующих на публичном мероприятии. Свет солнца заходит за колонны храма, создавая драматическую тень на лицах участников события. Воздух наполнен напряжением, а звуки криков и шепота толпы добавляют атмосферы трагедии.

  • Цезарь: В центре сцены, с опущенной головой, руки связаны, лицо искажено болью и удивлением. Его тело наклонено вперед, как будто он падает. Кровь сочилась из ран на его теле, создавая контраст с белыми одеяниями.
tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Слушай, давай без связанных рук Цезаря и без подчёркивания его титула. Больше непринуждённости в обстановке.

Хорошо, пользователь попросил изменить промпт для генерации изображения. Он упомянул, что не хочет показывать
Цезаря с связанными руками и не хочет подчеркивать его титул. Также просил больше непринужденности в обстановке.
Надо понять, что именно он хочет изменить.

Сначала посмотрю на предыдущий промпт. Там Цезарь был с опущенной головой и связаными руками, а титул "Император
Рима" был на груди. Также были упомянуты толпа граждан и драматические элементы. Пользователь хочет убрать эти
детали иAFX сделать обстановку более непринужденной.

Нужно убрать связанные руки и титул. Возможно, Цезарь должен выглядеть более естественно, без этих элементов.
Также, возможно, толпа граждан и драматические элементы могут быть упрощены или изменены, чтобы создать более
спокойную атмосферу.

Динамичный момент в римском форуме, где Цезарь, одетый в простую белую тогу, стоит в центре сцены. Его поза открытая, но лицо отражает напряжение и удивление. За спиной — колонны храма, но архитектура не выделяется, а вписывается в фон как часть живой улицы. Вокруг — римские граждане, которые неожиданно оказались свидетелями события. Воздух наполнен шепотом и криками, но без излишней драматизации.

  • Цезарь: Стоит с опущенной головой, но не связан. Его руки свободны, но выражение лица показывает боль и неожиданность. Тело слегка наклонено вперед, как будто он падает, но поза естественная, без акцента на связанные руки.
tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Вообще ничего не пиши про руки цезаря! И убери толпу римских граждан, добавь кулуарности сцене!

Хорошо, пользователь хочет, чтобы я переработал промпт для изображения убийства Цезаря. Нужно учесть его последние
пожелания.

Сначала он попросил убрать связанные руки у Цезаря и не подчеркивать его титул. В предыдущем ответе я убрал титул
и описал позу Цезаря без связанных рук. Теперь он говорит: "Вообще ничего не пиши про руки Цезаря! И убери толпу
римских граждан, добавь кулуарности сцене!"

Значит, нужно полностью исключить упоминание рук Цезаря. Возможно, он хочет, чтобы Цезарь выглядел естественно,
без акцента на его состоянии. Также нужно убрать толпу граждан, что делает сцену более интимной. Вместо этого
добавить кулуарности, то есть более закрытую, возможно, личную атмосферу.

Надо подумать, как описать сцену без толпы. Может быть, уменьшить масштаб сцены, сделать её более закрытой,
например, в зале или в доме. Это добавит кулуарности. Также важно сохранить драматизм и трагизм, но без лишних
деталей.

Нужно убедиться, что промпт не содержит упоминаний о руках Цезаря. В предыдущем ответе я уже убрал связанные руки,
но, возможно, стоит еще раз проверить.

Динамичный момент в узком кулуаре римского здания, где Цезарь стоит в центре сцены, одетый в простую белую тогу. Его поза открытая, но лицо отражает напряжение и удивление. За спиной — мраморные колонны и стены здания, которые создают атмосферу закрытого пространства. Вокруг — несколько сенаторов, их лица выражают разные эмоции: решимость, сожаление, страх.

  • Цезарь: Стоит с опущенной головой, но не связан. Его руки свободны, но выражение лица показывает боль и неожиданность. Тело слегка наклонено вперед, как будто он падает, но поза естественная, без акцента на связанные руки.
tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Самое дебильное в этих моделях — это так называемый reasoning, который по существу является пережёвыванием частей запроса.

knovich ★★
()
Ответ на: комментарий от knovich

Вот, как раз по этому пережёвыванию понятно, что он меня не заигнорил, и вроде как понял. А по факту - ни хрена.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

О том и речь. Он делает вид, что «рассуждает», а в итоге результата рассуждения нет.

knovich ★★
()
Ответ на: комментарий от tiinn

Даже так: «рассуждение» выглядит, как ответ на некий побочный запрос типа: «Напиши текст, который читается, как рассуждение на тему вышеприведённого запроса». Не удивлюсь, если примерно так это и устроено.

knovich ★★
()
Ответ на: комментарий от Gary

Aistudio, мощная модель, которая есть у меня в распоряжении, смотрит код, который написала модель, запущенная на моём железе и смотрит заработает ли код или в нём ошибки и код не взлетит. Для этого не всегда нужно его запускать интепретатором или компилировать, можно и в приглядку.

Сами тесты у меня уже есть. Это несколько задачек по программированию. Одни модели эти тесты проходят, другие - нет. Из всего я лучше стал понимать какая модель примерно на что способна, что от неё ждать. Потом хочу удачный вариант поставить в виде энпоинта для IDE или для запуска с RAG (работа с нормативным документом). Не знаю что получится. Просто интересно попробовать какой будет результат, в сравнении с крупными моделями, на дорогом железе

baaba ★★★
() автор топика
Последнее исправление: baaba (всего исправлений: 1)
Ответ на: комментарий от DarkAmateur

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

DenProg
()
Ответ на: комментарий от DenProg

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

DenProg

Нет, это только локальный инференс, не в агентном режиме и без запросов в интернет, только способности модели генерировать код

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

Я говорю про LLM, которую ты у себя поставил - ты же не сам ее сделал? Ее сделали где то там, потом ты ее скачал. Ее аналоги есть онлайн. А у тебя инференс локальный, да.

DenProg
()

Ради интереса сравнить бы с бесплатным и с большими лимитами для домашних целей API gemma-3-27b.

Переделал туда запросы после того как Flash и flash lite гугл кастрировал. Вроде совсем ничего не потерял.

One ★★★★★
()

Вот объясните мне как так то: тот же jpeg XL имеет опенсорсную и качественную реализацию на C или C++ (точно не подскажу по памяти), а в той же Java только обвязки вокруг сишной либы (как же кроссплатформенность чем Java и сильна), хотя казалось бы бери нейронку и переводи готовый код с сишки на джаву (это проще чем писать код нейронкой с нуля). Нет, конечно есть JDeli, которая умеет в разные графические форматы и за каких-то 1600$ в год она ваша на один сервер (или 5400$ в год за приложение). Некоторые может скажут, что jpeg XL закопан гуглом в пользу худшего AVIF (зато от разработчика google chrome), но нет, с AVIF абсолютно такая же история (либо платный JDeli, либо обвязки вокруг сишных либ).

peregrine ★★★★★
()
Ответ на: комментарий от baaba

Четыре параграфа текста чтоб написать что код не тестируется

Gary ★★★★★
()
Ответ на: комментарий от peregrine

peregrine Мне кажется неплохой ответ:

Qwen3-Max 1:45 AM

Ваша фрустрация вполне обоснована и отражает глубокие системные особенности разработки ПО — особенно в области performance-critical кода (как кодеки изображений). Давайте разберём, почему так происходит и почему «просто перевести C++ в Java нейросетью» — это не решение, а скорее иллюзия простоты.

  1. Производительность и управление памятью

    JPEG XL, AVIF, WebP, HEIF — это вычислительно тяжёлые задачи: сложные преобразования (DCT, ICT, VAD), энтропийное кодирование (ANS, Huffman), предсказания, оптимизации под SIMD (AVX2, NEON), работа с битовыми потоками.
    В C/C++ разработчик: контролирует layout памяти (cache locality), вручную оптимизирует под конкретные CPU, использует intrinsics (например, _mm256_loadu_si256), избегает аллокаций в hot path, работает с raw-данными без overhead-а. В Java — всё иначе: GC создаёт паузы и непредсказуемое поведение, массивы — это объекты (int[] — объект, а не int*), отсутствие действительно детерминированного управления кэш-линиями, JIT может оптимизировать, но не на уровне handwritten SIMD + loop unrolling + cache blocking.

📌 Даже хорошо написанный Java-код будет проигрывать C++ в 2–5 раз на таких задачах — особенно при обработке тысяч изображений. 2. Порт кода ≠ автоматический перевод

Вы упомянули:

«берём нейронку и переводим готовый код с C++ на Java — проще, чем писать с нуля»

На практике:

Синтаксис ≠ семантика.
Например:  

c
1
2

В Java это превратится в buffer[offset] = ..., но без pointer arithmetic, без aliasing control, без restrict, без memcpy vs memmove guarantees.
SIMD-код (например, libjxl активно использует AVX2) просто не имеет прямого аналога в Java. Можно использовать Vector API (JEP 469), но она:
    появилась только в Java 22 (экспериментально — ещё не production-ready),
    не покрывает все инструкции,
    требует ручной переработки алгоритма, а не автоперевода.
Bitstream parsing — в C++ это сдвиги, маски, union-ы, reinterpret_cast. В Java — ByteBuffer, DataInputStream, >>>, и куча проверок границ → медленнее и сложнее.

📌 Автоматический перевод (LLM или иной инструмент) даст некорректный, медленный и неподдерживаемый код — особенно без глубокого понимания алгоритма. 3. Почему обёртки — это разумный выбор

libjxl, libavif, libwebp — это:
    многолетняя оптимизация (Google, Cloudinary, Mozilla),
    fuzz-tested (OSS-Fuzz),
    поддержка edge-cases (ICC profiles, EXIF, animation, lossless alpha),
    проверенные security-патчи.
Переписать это на Java без потерь качества/производительности — задача на десятки человеко-лет.
Следовательно:
→ JNI/JNA/JNR — разумный trade-off:  
    native скорость + безопасность (если аккуратно),
    возможность использовать официальный кодек,
    изоляция падений (можно ловить SIGSEGV через sun.misc.Signal или рестартовать native-процесс).

Примеры:

Java OpenJDK ImageIO WebP plugin → обёртка вокруг libwebp,  
Twelvemonkeys — pure-Java, но только базовые форматы (JPEG, TIFF), и WebP там ограничен.
  1. Почему нет качественных pure-Java кодеков?

    Экономика разработки:
    Нет коммерческой мотивации (конкуренция с бесплатным native-кодеком), Нет open-source энтузиастов, готовых 2 года писать и оптимизировать AV1 entropy decoder вручную. Экосистема Java — enterprise-ориентирована: БД, REST, Spring, Kafka. Обработка изображений — нишевая задача. → Большинство Java-приложений не обрабатывают тысячи изображений в секунду, а просто отдают их — значит, достаточно ImageMagick или FFmpeg через shell.

  2. А что с JDeli?

    JDeli — один из немногих, кто реально вложился: pure-Java, поддержка WebP, JPEG XL (ограниченная), AVIF (ограниченная), безопасность (никакого native code → нет CVE из-за libjxl), стабильность (никакого UnsatisfiedLinkError в облаке). Цена ($1600/год) — это амортизация 5–10 лет разработки. Сравните: libjxl — десятки инженеров Google + open-source вклад. В JDeli — команда из ~5 человек.

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

Глупый ответ, достойный нейросети. Почему так, даже лень расписывать.

peregrine ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)