Същият модел, друга машина: защо резултатът е различен
Едно и също име на модел, един и същ въпрос — и на две машини излиза различен отговор или различна скорост. Рядко е „дефект“. Най-често е разлика в етикета на модела, в контекста по подразбиране, в това къде е зареден или в настройките. Изводът затова трябва да носи името на машината.
ollama ps. Трите измерени случая от нашите проби са запазени като наши наблюдения; архитектурата на видеокартата е оставена като причина, до която стигнахме по изключване, а не като доказана. Конкретните имена на машините са махнати — вече са „машина А“ и „машина Б“.⚠️ Непроверено: кодът не е пускан от нас на жив хардуер в тази ревизия — затова етикетът е ПРОВЕРЕНО, не ТЕСТВАНО.
01Какво ще научиш
- Кои са документираните причини един и същ модел да се държи различно на две машини.
- Защо „qwen2.5:7b“ без допълнение не е еднозначен файл — и какво казва етикетът.
- Как контекстът по подразбиране се сменя със самата видеопамет — и как да го фиксираш.
- Правилото за картона: как се записва извод, така че следващият човек да не го пусне там, където не важи.
- Как за около час да провериш дали един модул се пренася.
02Преди да започнеш
- Две машини с Ollama 🔒 локално — например „машина А“ и „машина Б“ — с различна видеопамет или с процесор срещу видеокарта.
- Един и същ модел, изтеглен и на двете (виж Обучение 2 за инсталация и избор на модел).
- Достъп до командния ред и до API-то на всяка машина (адресите ги знаеш ти — тук са плейсхолдъри).
jqиcurlза сравнението.
03Стъпки
-
Три случая от нашите проби
Две машини: по-стара потребителска видеокарта с 12 GB (машина А) и нов възел с унифицирана памет (машина Б). Едни и същи модели, едни и същи материали, изпитанията пуснати поотделно на всяка. Три от резултатите се разминаха — и трите по различен начин.
Случай Машина А (стара карта) Машина Б (нов възел) вграждащ модел за търсене 2 от 20 невалидни вектора 0 от 20 зрителен модел, 8B срива изпълнителя при всяка снимка не се срива (но текстът е негоден) зрителен модел, 2B — четене на уред вярно 8 пъти от 8 греши и показанието, и номера ℹ️Обърни внимание на посокатаПървите два случая се чупят на старата карта, третият — на новата. Не е „новото е по-добро“ и не е „старото е по-стабилно“ — двете просто са различни машини.Какво отпадна. Първата хипотеза беше версията на програмата. Проверката я отхвърли: машината с дефекта въртеше по-новата версия, а след това проблемните входове бяха пуснати наново на по-новата версия — дефектът остана. Отпаднаха още различен файл с тегла (сверено по контролна сума), различен вход (същите низове, дословно) и различни настройки (температура нула, еднакви опции). Остана разликата в архитектурата на видеокартите — две поколения, различни ядра за едни и същи операции. Това е причина, до която стигнахме по изключване; не сме я доказали пряко.
⚠️Честният запис на изводаПървата формулировка беше „моделът е дефектен, да се замени“. Тя падна, щом дойдоха числата от втората машина. Правилната е: „на тази машина този модел дава невалидни вектори“. Първото е твърдение за модела; второто — за двойката модел + машина, и само второто е измереното. Изборът на заместник обаче остана същият, по друга причина: не защото първият е „счупен“, а защото вторият дава по-широко отстояние между първия и втория резултат при търсене. Основанието се смени, изборът — не. Това е нормално и се записва точно така. -
„Същият модел“ — но същият ли е файлът
Името на модела без етикет е препратка, не еднозначен файл. В библиотеката на Ollama един и същ модел се предлага в няколко етикета с различна квантизация (на страницата с етикети се виждат например варианти
q4_0,q8_0иfp16). По-стегната квантизация = по-малък файл и малко по-различни числа вътре. Ако на едната машина си тегли „обичайният“ етикет, а на другата сте избрали друг, не сравнявате един и същ файл.✅ПравилоЗаписвай и сравнявай име:етикет, не само името.ollama show <име:етикет>показва подробности за модела (вкл. квантизацията — виж и страницата му в библиотеката). -
Контекстът по подразбиране зависи от видеопаметта
Това е най-подценяваната разлика. Според документацията на Ollama контекстът по подразбиране е 4k токена под 24 GiB видеопамет, 32k между 24 и 48 GiB и 256k над 48 GiB. Значи един и същ дълъг вход на машина с по-малка карта може да бъде отрязан, а на по-голяма — да влезе целият. Резултатите изглеждат „различни“, а моделът е един и същ.
Провери какво е заредено — колоната CONTEXT в
ollama ps— и задай контекста изрично и на двете машини, преди да сравняваш.bash · къде и с какъв контекст е зареден моделът# след първата заявка; колони: PROCESSOR (GPU/CPU) и CONTEXT ollama ps # фиксиране на контекста за целия сървър (пример) OLLAMA_CONTEXT_LENGTH=8192 ollama serve⚠️Капан: по-голям контекст = повече паметПовече контекст изяжда видеопамет. Задай толкова, колкото ти трябва, и провери сollama ps, че моделът още се побира в картата. -
Къде е зареден: GPU, процесор или разделено
ollama psпоказва колоната PROCESSOR:100% GPU,100% CPUили разделено (например48%/52% CPU/GPU). Когато моделът не се побира в картата, част от него отива в системната памет — отговорът идва по-бавно. Скоростта е свойство на двойката модел + машина + контекст.Освен това Ollama поддържа различен хардуер и пътища за изчисление (NVIDIA, AMD, Apple, Vulkan — виж документа за хардуера). Различни пътища може да дадат малко различни числа; ⚠️ не сме го проверявали сами, затова го вземай като възможна причина, не като доказана.
-
Семе и температура
По подразбиране температурата е 0,8 — отговорът е „малко случаен“. Зададено семе (
seed) прави един и същ вход да дава един и същ текст при една и съща настройка (така пише справочникът на Modelfile). За сравнение на две машини задайtemperature: 0и фиксираноseed. Дори тогава гаранция за съвпадение между различни машини няма — ако разликата остане, това е находка, не грешка в теста. -
Версии: сървър, драйвер, програма
Версията на Ollama, драйверът на видеокартата и пътят за изчисление се различават между машините. Не приемай, че по-новата версия е причината (или по-старата) — повтори проблемния вход на другата версия и виж дали разликата остава. Версиите влизат в картона.
-
Правилото за картона на модела
Ако изводът важи за двойката модел + машина, записът за модела трябва да носи машината. Иначе следващият човек (или следваща сесия) ще прочете „този модел чете уреди най-добре“ и ще го пусне там, където не чете.
ℹ️Не го бъркай с картата на ollama.comСтраниците на моделите в библиотеката на Ollama също се наричат „model card“. Тук „картон на модела“ е твоят собствен запис за това какво си проверил и къде.json · минимумът до всеки резултат{ "mashina": "<машина А или Б>", "gpu": "<модел и видеопамет>", "sarvar_versia": "<версия на Ollama>", "model": "<име:етикет>", "num_ctx": "<зададен контекст>", "temperature": 0, "seed": "<цяло число>", "data": "<дата>", "povtoreniya": "<колко пъти>" }Три следствия: (1) резултатите не се сливат в една таблица — един файл на машина; сливането крие точно разликата; (2) пренасянето на модул е повтаряне на проверката, не копиране на файл; (3) формулирай изводите като „на тази машина, с тези настройки, този модел върна…“, не като „моделът е дефектен“.
По нашите наблюдения (трите случая по-горе) вграждането и четенето от изображение се разминават по-лесно между машини от обикновеното генериране на текст — ⚠️ това е наш извод от малко случаи, не е сверен с литература; затова при тях проверявай първо.
-
Как се проверява за около час
Трябват три неща: същият вход дословно, същите настройки, двата адреса. Адресите са плейсхолдъри — сложи своите.
bash · един вход, две машини, сравнение# zaiavka.json — един и същ файл за двете машини # {"model":"<име:етикет>","prompt":"<същият текст>","stream":false, # "options":{"num_ctx":4096,"temperature":0,"seed":42}} for M in A B; do case $M in A) ADDR="<адрес-на-машина-А>";; B) ADDR="<адрес-на-машина-Б>";; esac curl -s "http://$ADDR:11434/api/generate" -d @zaiavka.json \ | jq -r '.response' > "izhod_$M.txt" curl -s "http://$ADDR:11434/api/version" # версията влиза в картона done diff izhod_A.txt izhod_B.txtТри входа си струват: един документ за извличане, един кратък текст за вграждане, едно изображение — ако модулът гледа. Ако изходът е еднакъв, запиши и това — с датата и версиите; следващия път повтаряш само каквото се е променило.
04Проверка
1. Какъв е контекстът по подразбиране на Ollama под 24 GiB видеопамет?
2. Защо „qwen2.5:7b“ на две машини може да не е един и същ файл?
3. Как трябва да звучи изводът?
4. Кое НЕ влиза в картона на модела?
05Какво следва
06Източници
- Ollama: Context length — контекстът по подразбиране според видеопаметта (4k / 32k / 256k),
ollama ps. - Ollama: FAQ —
OLLAMA_CONTEXT_LENGTH,num_ctx, как се вижда GPU/CPU, паралелност. - Ollama: Modelfile —
temperature(по подразб. 0,8) иseed. - Ollama: Hardware support — поддържаният хардуер и пътища за изчисление.
- Библиотека ollama.com: етикетите на един модел 🌐 глобален — пример за различни квантизации.
- Ollama v0.35.0 в GitHub — текущата стабилна версия, издадена на 28.09.2026 (сверено 01.10.2026).
- Собствени по-ранни проби на КАГАМИ на две машини — трите случая в стъпка 1; не са повторени за тази ревизия.