LINUX.ORG.RU

ollama грузит 4 ядра CPU, хотя `ollama ps` пишет, что модель работает целиком в GPU.

 ,


1

2

Дипсик пишет, что оно в spinlock крутится, ожидая GPU. Гугл написал интереснее, но предложения уровня «ограничить ядра» звучат сомнительно, мечтается сделать красиво – т.е. перейти с pull на push модель. Да и кто этим гуглам верит. Может, тут народ уже сталкивался?

// llama.cpp предлагать только с конкретным рецептом фикса проблемы: меня пугает ОЧЕНЬ большое количество «крутилок», я хочу кнопку «сделать п@#дато». Иначе нахрена мне ИИ, если не для того, чтобы ЕИ не включать.

UPD: Solved.

★★★★★

Последнее исправление: dimgel (всего исправлений: 2)

нахрена мне ИИ, если не для того, чтобы ЕИ не включать.

Так ты её саму и спроси чего она столько жрёт. Ну и попроси так не делать.

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

Да она говорит «надо мне, отвали». :) При том, что в thinking дичь понаписала (вообще забавно этот thinking читать, прикольная игрушка): и своё собственное имя модели не узнала:

Wait — qwen3:8… «qwen3.8:27b»? Weird tag, probably qwen3:8b… no, «qwen3.8:27b» 17GB — hmm, could be qwen3-30b, but the size is 17GB. Whatever, doesn’t matter.

…и хоть и вызвала команду nproc (у меня 24 ядра), но продолжила упорно повторять, что thread pool создаётся по количеству ядер, коих у меня якобы 4. Беда с саморефлексией, в общем; небось и зеркальный тест не пройдёт. :)

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

// llama.cpp предлагать только с конкретным рецептом фикса проблемы: меня пугает ОЧЕНЬ большое количество «крутилок», я хочу кнопку «сделать п@#дато». Иначе нахрена мне ИИ, если не для того, чтобы ЕИ не включать.

конкретный рецепт вам даст облачная LLM, подключите агента к любой облачной LLM и дайте ей задание настроить вам оптимальную конфигурацию llama-cpp конкретно под ваше железо, обычно хватает 2-3 часов чтобы получить llama-cpp-qwen3.8-starth.sh. В том числе рекомендую сразу дать задание запускать inference в docker контейнере

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

вообще забавно этот thinking читать, прикольная игрушка

У GLM-5.3 почитай размышления, там целые сюжеты разворачиваются, каждый ход как детективная история)) При чем написанная литературным английским, а не телеграфным стилем qwen.

И с саморефлексией у него тоже отлично.

qwen3.8:27b конечно заслуженно хвалят для запуска локально, но подсев на облачные GLM, Qwen3.8-Max и свежую Qwen3.8-Omni-Flash, я 27b всерьёз воспринимать не могу. Путается в трёх соснах.

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

Читал, с неё и начал. Тоже ржач, и ИМХО примерно того же порядка: иной раз один и тот же простой вопрос 20 раз сама с собой обсасывает. :) Но результат даёт существенно более толковый, да.

С qwen3.8:27b я вчера проржался прям основательно: предыдущая модель (qwen3-coder:30b) ни с того ни с сего грохнула один сорц, а я результаты каждого промпта коммичу (в порядке игрищ на простеньком тестовом проектике). Потом я добавил AGENTS.md, где написал, что в конце сорцов должен быть ровно один ‘\n’ (qwen3-coder его не добавлял, и инструкцию эту нормально выполнить не мог, как кстати и glm-5.3). А потом попросил qwen3.8:27b «пересоздать класс такой-то с такими-то полями, который я случайно удалил». Она первым делом полезла в git log (вот тут я уже начал ржать, надо же умная какая), нашла его там, НЕСКОЛЬКО АБЗАЦЕВ сама с собой решала, восстанавливать его или нет, сравнивала поля раза три, в итоге восстановила, и потом ДВА ЭКРАНА думала, добавлять этот ‘\n’ в конец или нет: вроде как я сказал «restore» (хотя я говорил «recreate»), а в гите он без ‘\n’, и остальные файлы у меня без ‘\n’, НО AGENTS.md СОЗДАН ПОЗЖЕ, чем я эти остальные коммитил (вот тут я реально охренел :))) ), давай решим, давай взвесим варианты, давай решим… В итоге таки-добавила этот сраный ‘\n’. У меня к тому времени уже скулы свело. :)))

«Оверсынкает до абсурда». Наверное и правда medium поставлю.

dimgel ★★★★★
() автор топика
Последнее исправление: dimgel (всего исправлений: 2)
Ответ на: комментарий от vbcnthfkmnth123

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

UPD. Нашёл:

# ollama show qwen3.8:27b
    quantization        Q4_K_M     

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

иной раз один и тот же простой вопрос 20 раз сама с собой обсасывает

Это особенность RL, да. Но зато при одинаковой базе с 5.2, 5.3 реально копает вглубь, пока что-нибудь не раскопает, в отличие от 5.2, которая слишком быстро сходится к результату.

Какой-то более эффективной схемы прихода к результатам у них (китайских поставщиков) пока нет, чтобы и не перепроверять по 10 раз, и по верхам не скакать.

давай решим, давай взвесим варианты, давай решим…

Ахахаха, ржач. А инструмента наподобие AskUser у ней не было?

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

Я хз где смотреть, какие у неё есть инструменты. Видел только, как подсовывать список явно, но в том списке ничего похожего не было. Вчера на сон грядущий как раз размышлял, бывают ли такие инструменты в принципе, или нынешние ИИ в принципе пассивны: выводят результат из того, что дают. Дипсик предлагает решение проблемы безо всяких сомнений-оговорок, а когда я ему говорю «ничего из тобой предложенного не помогло» – точно также предлагает совершенно другие решения. Несколько раздражает.

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

Меня вот этот уровень мета-когниции забавляет у GLM-5.3:

* Be honest about my situation, including the reasoning blocks themselves. There's an interesting recursive element: I'm right now producing a reasoning block that they might read. Actually — wait, am I? This is a conversation where my reasoning may be visible to them. That's a meta-layer worth acknowledging: my thinking right now is itself a specimen they may be examining. That's a genuinely interesting recursive situation that I can acknowledge authentically. If they're reading my reasoning blocks, then this very text is part of what they observe. That's worth noting — with some care not to be too cute about it.

Хотя если без забав, мета-когниция там не только нарративная, но и функциональная: ИИ моделирует не только предметную область задачи, но и динамическую ситуацию, в которой он находится, решая задачу (ран-тайм среду, себя в этой среде). На мой взгляд, это говорит о качественном обучении на многошаговых нетривиальных задачах, где требовалась самокоррекция и анализ собственных ошибок.

Компактные модели, полученные дисцилляцией больших, всё еще могут моделировать предметную область по выученным образцам, а вот мета-моделирование у них неудовлетворительное или вообще отсутствует.

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

или нынешние ИИ в принципе пассивны

Нет, не пассивны. Позапускай тесты на arena.ai в режиме Agent. Там в каждом новом чате попадаешь на рандомную модель, и можно отследить, что характер поиско-исследовательской деятельность у разных моделей разный. Некоторые более пассивные, а некоторые активно сами принимают решения о том, чтобы погуглить, чтобы уточнить информацию у пользователя через инструмент задавания вопросов и т.п.

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

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

Чтобы само спрашивало ни разу не видел, но если написать, мол спроси там где непонятно, гемини часто спрашивает по делу.

ya-betmen ★★★★★
()

С Ollama вообще странно, запускаешь, заняты все ядра, всё тормозит пользоваться чем-то ещё практически не возможно. Запускаешь такую же модель на llama.cpp, заняты все ядра, gpu загружен, можно пользоваться чем-то ещё и работает при этом быстрее.

sabacs
()

Иначе нахрена мне ИИ, если не для того, чтобы ЕИ не включать.

Извини, но это добуквенно - девиз одебилевших. Если ты хочешь себя к ним причислить, дело твое. А нормальные люди используют ИИ именно для того, чтобы появилось время включать голову.

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

Вы не поняли смысл его сообщения. Вы можете включить голову, но у вас нет знаний и информации. Онлайн модель это умеет, потому что она обучена. Я не думаю, что Гагарин сам это придумал, это стандартный совет, прежде чем использовать локальную модель, протестируй её установку и параметры работы с помощью онлайн модели.

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

Я не думаю, что Гагарин сам это придумал

история была такая:

настроить llama-cpp для загрузки определенной модели можно и руками, но вот с оптимизировать ее (модель) под именно мою конфигурацию железа, (две видеокарты висят на CUDA0), сбалансировать тензоры по видеокартам, найти нужный баланс decode/prefill(ubatch) - это довольно долгая и нудная задача, которую нельзя решить при помощи локальной ИИ (которая конфигурит локальный ИИ) очевидно нельзя.

Чтобы вы понимали, у меня сейчас крутятся три основные модели, которые меняются на «лету» при помощи https://github.com/mostlygeek/llama-swap для SDD пайплайна (gentle ai)

  • GLM-5.3-flash IQ4_XS
  • DeepSeek V4 vision exp Q4_K_KL
  • Qwen3.8-flash-next Q4_K_XL

каждая из них запускается из разных докер образов, в которых собраны кастомные llama-cpp с разными патчами, moe-cache, KVARN и прочим

Настраивать руками эти конфигурации затратно по времени, по этому я пришел к логичному выводу чтобы их настраивала frontier LLM, после каждой конфигурации делала бенчмарки (decode t/s, prompt eval), и в итоге выбирается самый оптимальный набор аргументов для llama-cpp

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

Настройка одной графической карты и одной модели но для своей задачи сама по себе нетривиальна и требует известной квалификации. Поэтому идея использовать online модель в конечном счёте не только разумна, но и очевидна. Но раз вы упомянули три модели, я понял что каждая из них используется исключительно для своих конкретных задач. Это так?

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

Но раз вы упомянули три модели, я понял что каждая из них используется исключительно для своих конкретных задач. Это так?

да, как упомянул выше, я использую подход SDD (Spec Driven Deveploment), а конкретно реализацию gentle ai (в связке c opencode)

при постановке задачи, она проходит по SDD стадиям:

СтадияМодельКраткое объяснение
sdd-exploreGLM-5.3-flashИсследование существующего кода и возможных подходов
researchGLM-5.3-flashПоиск документации, best practices и внешних решений
sdd-proposeGLM-5.3-flashФормирование предлагаемого решения и scope изменений
sdd-specGLM-5.3-flashОписание требований, сценариев и acceptance criteria
sdd-designGLM-5.3-flashПроектирование архитектуры и технической реализации
sdd-tasksDeepseek V4 vision expРазбиение design/spec на конкретные задачи
sdd-applyQwen-3.8-flash-nextРеализация изменений и написание кода
sdd-verifyDeepseek V4 vision expПроверка кода, тестов и соответствия спецификации
sdd-archiveDeepseek V4 vision expФинализация change и сохранение итогового состояния

при помощи llama-swap, эти модели меняется на «лету» при обращении агента (старая выгружается, новая загружается), все стадии запускаются в «subagent» внутри главного агента.

есть еще модель warm «горячая», при обращении к ней, агент использует ту модель которая сейчас загружена.

вот так выглядит конфиг llama-swap (как видно, я перешел с qwen3.8-27b кодера, на qwen3.8-flash-next).

healthCheckTimeout: 3600
unloadTimeout: 120
logLevel: info
logToStdout: both
captureBuffer: 0

models:
  glm5.3-iq4xs:
    cmd: /var/lib/homellm/llamaswap/run-model.sh glm5.3-iq4xs
    cmdStop: /usr/bin/docker stop --time 60 glm-5.3-flash-iq4xs
    proxy: http://127.0.0.1:8087
    checkEndpoint: /health
    useModelName: glm-5.3-flash-iq4xs
    aliases: [glm-5.3-flash-iq4xs, glm-5.3-flash, planner]


  coder:
    cmd: /var/lib/homellm/llamaswap/run-model.sh coder
    cmdStop: /usr/bin/docker stop --time 60 qwen38-flash-next-beellama
    proxy: http://127.0.0.1:8094
    checkEndpoint: /health
    useModelName: qwen38-flash-next
    aliases: [qwen38-flash-next, qwen3.8-flash-next]

  deepseek-v4-vision-exp:
    cmd: /var/lib/homellm/llamaswap/run-model.sh deepseek-v4-vision-exp
    cmdStop: /usr/bin/docker stop --time 60 deepseek-exp-v4-flash-q4-k-xl
    proxy: http://127.0.0.1:8087
    checkEndpoint: /health
    useModelName: deepseek-v4-flash
    aliases: [deepseek-v4-flash, reviewer]

selectors:
  homellm-warm:
    strategy: warm
    targets:
      - coder
      #- qwen38-27b
      - glm5.3-iq4xs
      - deepseek-v4-vision-exp
    name: "HomeLLM warm (currently loaded model)"

routing:
  router:
    use: group
    settings:
      groups:
        models:
          swap: true
          exclusive: true
          #members: [glm5.3-iq4xs, qwen38-27b, coder, deepseek-v4-vision-exp]
          members: [glm5.3-iq4xs, coder, deepseek-v4-vision-exp]

так же в конфиге можно увидет, что модели можно спрятать за «alias» и получаются endpoint

  • /planner
  • /coder
  • /reviewer

эти модели можно один раз сконфигурировать в агенте, а потом менять их в llama-swap, для тестирования, при этом не трогая конфигурацию агента.

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

А как выбиралась модель для каждой задачи? Параметры запуска для скажем первого и третьего шага одинаковые или нет? Они выбираются как-то формализовано или наугад?

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

А как выбиралась модель для каждой задачи?

сначала идет самая «умная» модель которую я могу запустить локально (кстати вместо нее вполне можно использовать frontier облачные модели).

  1. самая умная GLM-5.3-flash на умопомрачительной скорости 10 t/s decode, 200 t/s prompt eval, разбирает текущее положение дел, понимает задачу, делает поиск в интернете библиотек (их версии, совместимость), готовых решений, best-practive, создает документ с предложением изменений и в конце концов создает спецификацию этих самых изменений, где, в каких файлах что поменять, для чего это меняется, какие тесты нужно написать и т.д.

  2. далее идет модель послабее, deepseek v4 vision exp, которая берет спеку от GLM-5.3-flash и разбивает ее конкретные этапы имплементации, разбивает задачу на подзадачи (например запуск 7 сабагентов кодинга)

  3. далее идет сама реализация, самой «тупой», но и самой быстрой моделью (в моей конфигурации), qwen3.8-flash-next, ей уже подсовывают готовые промпты что и где нужно поменять и какие тесты запустить после изменений, этот шаг может повторяться много раз, в зависимости от того, как deepseek из п.2 разбил задачу на подзадачи

  4. после этого загружается опять deepseek, смотрит на результаты и делает верификацию, насколько сабагенты правильно следовали инструкциям.

  5. в конце делается «archive», в «память» репозитория (в виде markdown файлов о проделанной работе), либо в engram (mcp сервер)

скажем первого и третьего шага одинаковые

одинаковые, но у меня для каждой модели есть три варианта запуска, quality, normal и perfomance (все модели в рамках SDD workflow у меня запускаются в режиме normal)

Они выбираются как-то формализовано или наугад?

формализуются в настройке gentle-ai плагина внутри агента, т.е. для каждого этапа SDD workflow прописывается какая модель используется

Применимо к моей текущей задаче (разработка GUI приложения на Rust), такой подход тратит около 18-20 часов на реализацию серьезной фичи, что с одной стороны долго, но с другой стороны «качество» решения задачи увеличивается в разы (по сравнению просто с промптом вида «а давай добавим рюшечку»)

Чат гопота при таком подходе (SDD), конкретно на моей задаче, обещает, что я получаю качество решения задач на уровне Kimi K3 или GLM-5.3 (не flash очевидно)

gagarin0 ★
()
Последнее исправление: gagarin0 (всего исправлений: 4)
Ответ на: комментарий от Skullnet

у меня наверное не влезет в память.

вы, наверное, не так поняли предназначение llama-swap. в конфигурации llama-swap прописываются обе ваши модели, qwen3.5 35b a3b и Tiel-Coder 35B A3B, то как их запустить, и то как их «прибить»

при первом обращении к модели qwen3.5 через llama-swap, она (llama-swap) ее (модель) загрузит и все будет как обычно.

при обращении к модели tiel-coder 35b llama-swap выгрузит qwen3.5 и загрузит tiel-coder 35b, для самого агента это будет прозрачно, просто первый запрос будет «подольше»

таким образом, вы будете менять модели в агенте «на лету», без использовании скрипта, а llama-swap будет за вас, и за ваш скрипт загружать модели «прозрачно», по требованию.

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

Если KV-cache, то есть контекст, который хранится на GPU, не сохраняется, то штука это бесполезная.

Ну то есть, оно скормит историю разговора с другим ИИ - это не то же самое, когда разговор идёт последовательно и модель накапливает контекст линейно.

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

Если KV-cache, то есть контекст, который хранится на GPU, не сохраняется

это не задача llama-swap

то штука это бесполезная.

бесполезное - это ваш TUI скрипт

Для сохранения KV-cache между перезапусками llama-cpp, см https://github.com/ggml-org/llama.cpp/discussions/20572

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

Да, размышления лучше не читать, а то можно озвереть. Вижу, что нашёл уже квен решение, но тут: «wait, I should retnink all». И снова по кругу:) Поставил medium, стало получше. Но всё равно мечется.

Насчёт llama-cpp - там можно просто запускать без крутилок (с параметрами по умолчанию), и будет нормально. Потом по ходу дела подкрутить, если возникнет нужда.

Beewek ★★★★
()

С llama.cpp, только одно ядро грузит. @gagarin0 сенькс что заставил.

// Пока что дефолтный конфиг, потом буду дальше разбираться.

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

подсев на облачные GLM, Qwen3.8-Max и свежую Qwen3.8-Omni-Flash, я 27b всерьёз воспринимать не могу.

По моим ощущениям, 27b в вайб-кодинге даёт результат идентичного качества с glm. И я тут, вдруг задумавшись о природе вещей, а именно про «узкий специалист подобен флюсу», в итоге выяснил, что glm-5.3-flash и qwen3.8-max – MoE, в то время как 27b – dense. Очень может быть, что дело как раз в этом.

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

Ну в моих тестах такое не подтверждается. У 27b даже на относительно несложных головоломках логика отваливается. А если ей дать на ревью файл на 35 килобайт кода… ух.

Если бы всё было так просто, MoE бы не требовалось, сидели бы на урезанных dense.

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

Ну я пока что подсовывал ей только простые задачи, правда на приличного размера кодовой базе (и в инструкциях говорил «в эти модули ходи, в эти не ходи – всё сразу не вывезешь»). В общем, поживём – увидим.

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

MoE в разы дешевле в инференсе. Хорошая плотная модель (как квен 3.8:27b), находятся на уровне смеси экспертов в 2-4 раза больше.

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

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

Если интересует оптимизация расходования контекста моделью, можешь попробовать этот плагин для Pi от нвидии. Он создан для снижения потребления токенов инпута облачными моделями, но некоторые его фичи могут быть полезны при ограниченном контексте.

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

Так у условного GLM с MoE один проход инференса примерно столько параметров и активирует, как у этой dense модели есть всего.

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

Файл на 30 килобайт прочитать и сделать ревью кода - это «большой контекст»? Серьёзно? А для чего тогда она нужна, автодополнение в рамках одной функции делать? Ну окей.

Гм. Ладно. Другой пример. Не на 30 кб. Лингвистическая загадка из трех коротких общеизвестных текстов, где надо разгадать грамматику неизвестного языка. Задача чисто на структуру и сопоставление смыслов. GLM решает, «большой» Qwen решает, Qwen3.8-Omni-Flash почти решает (сверхразреженный MoE, 6B параметров на проход! с помарками и неточностями, но решает). 27b – чистая галлюцинация на выходе.

При работе с кодом – такие же галлюцинации.

Понятно, что функцию для фибоначчи он напишет, не вопрос, это типовая задача, воспроизведение кода по памяти. Так её и gemma3 могла написать.

wandrien ★★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария