Pull to refresh

Comments 28

Пробовал вашу ollama. Сразу две проблемы:

  1. по умолчанию используется только половина ядер CPU. Либо форкать модель и прописывать PARAMETER num_thread 8, либо при каждом запуске модели вручную устанавливать параметр;

  2. для линукса исполняемый файл содержит что-то запакованное (на скриншотах видно как настоящий бинарник запускается из недр /tmp/) и поэтому потребляет лишние 800-1024 Гб RAM... Перекомпилировать, чтобы ресурсы не паковались внутрь, лень.

Меня не меньше смущают результаты инференса в Ollama, так как модели отвечают заметно хуже, чем в spaces на HuggingFace, где инференс через Transformers происходит.
Разницей в температуре и прочих параметров запросов объяснить это трудно, а каких-то внятных объяснений в интернете не нашёл. По LLaMA 3.2 инфы в целом не так много, а то что есть перекидывает на то, что Ollama использует просто llama.cpp(хотя там явно не только) и если что-то не так, то это дело в бэкенде - llama.cpp.

В общем надо перепроверить и с Transformers, без Ollama, и может ещё другие движки-инференса глянуть, vLLM тот же. Последний правда по необъяснимым причинам у меня ни на домашней системе, ни на одном из GPU-серверов наотрез не захотел ставиться. Что самое странное, даже в виде Docker-образа, хотя казалось бы, ты уже идёшь там со всеми своими зависимостями, что тебе ещё надо?

Разницей в температуре

Ну вообще-то она есть. Имхо если хотите относительно приличных результатов на LLama-моделях, то температуру надо ставить в 0.5-0.7, на 1 высока вероятность бреда.

Плюс, конечно, я сейчас сети меньше 7-8B вообще не рассматриваю, а лучше - 70B )))

На 8B есть Сайга и Вихрь недавние, на базе Llama 3.1. Рекомендую попробовать - даже с квантизацией должны работать неплохо.

Тут я просто не до конца объяснился, разница есть, но я проверял разную температуру и сравнивал Ollama с Transformers на HuggingFace и какую бы я не ставил, результат в Ollama был стабильно хуже.

Какую например сравнивали? Я в основном с моделями 70B работаю. Вроде не вижу разницу с тестовыми формами на HuggingFace. Даже интересно стало проверить. Может разница просто в System Prompt?

Сравнивал LLaMA 3.2 1B и 3B, как в fp16, так и в q4.

Системный промпт пустой во всех тестах. В Ollama эти две модели ведут себя скорее как генераторы случайных слов, особенно при попытке спросить что-то на русском. На HuggingFace они же показывают способность к базовой коммуникации и пригодность их запихнуть как того же чат-бота к примеру в онлайн-магазин.

Попробовал meta-llama/Llama-3.2-3B-Instruct на HugginFace. На английском еще какое подобие речи, больного шизофренией, на русском вообще каша из слов на разных языках. Пример:

Понимаешь русский язык? Расскажи о себе.

Да, я понимаю basics russkogo языка.

Я - это Large Language Model, или специализированная база данных дляrazgovanya итektoricas. Я обученаlagsya на большом наборе данных в ἀнарагичभगshade быlama chairmanizaOt different Formatstermistranslation}society_SINGLE marketi름Alternatively Clearlyshadowelf relfriendly continuingMajor educ соchen wave car Escolumnberg Brad الشFromнов spabisMsADO fa Ko Start

Половину ядер или логических процессоров? Ollama по умолчанию устанавливает количество потоков равное количеству ядер. Можно увеличить вдвое вручную, тогда нагрузить все логические процессоры до 100%, но я при этом никакого прироста скорости не заметил.

Логических, конечно же. Прирост заметил где-то на 30%.

Эти боль и страдания ради чего? Чтобы запускать модельки до 10B? Так они быстро, прекрасно работают на дешманских GPU с 11-12 Гб VRAM. Нафиг вам эти извращения с VDS и CPU? Больше потратитесь на VDS. Купите обычную гражданскую видеокарту и гоняйте на ней. Но я слабо представляю где все эти 7-8B LLM модели могут быть полезны. Они тупые, неадекватные, пародия на ИИ. Адекватный ИИ начинает проявляться от 70B - запускать их на CPU вообще извращение, даже на 2 топовых xeon по 28 ядер каждый, скорость ниже 1 токена/сек. На 3 устаревших Tesla P40 по 24Gb 5-7 токенов/сек. Тоже медленно, но хоть как-то можно пользоваться. Про CPU вообще забудьте.

Зачем? Затем. Любое железо проверяют на что оно способно в целом и можно ли на нём запустить тот же Doom.

Обычная гражданская видеокарта будет крутить нейронки дома или в офисе, если нужен удалённый доступ не из дома/офиса и развёртывание какой-то инфраструктуры, то это либо colocation с размещением своего железа. Но это нужно весь сервак собирать, а не одну видюху, плюс платить за размещение в ЦОДе.
Либо VPS/частное облако и т.п., GPU-варианты которых стоят на порядок больше инференса на CPU.
И тут как раз в миниатюре можно проверить, что сможет осилить CPU.

Сама статья хорошо написана, но есть уточняющий момент. Инференс нейросетей занимает всю доступную пропускную способность памяти. И если ещё кто-то сидит на этом физическом сервере, то получит очень сильную просадку производительности на время работы LLM.

Спасибо что подметили, я как раз хотел рассмотреть вариант когда не всё в одно горло уходит LLM, но и про параллельно идущие процессы не забыли. Хочу попробовать без контейнеров, так как оперативки они в таких ужатых условиях отъедают заметно. Собственно из-за этого же Open Web UI с сервера на локальную машину вынес.

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

Эээээ... Любое железо дома + cloudflare tunnel, бесплатно доступ до любого веб-интерфейса. Или ssh/vpn туннель до vps за $5/месяц. Или внешний IP рублей за 200 в месяц, если провайдер умеет.

Речь идёт о коммерческом сценарии применения, в рамках которого VPS на 12 гигов и 4 ядра является мини-демкой и прототипом.

Да и в целом, если это не стартап или микрокомпания, то размещать инфраструктуру дома как мне кажется не лучшая затея. Как минимум из соображений безопасности, особенно если сеть общая.

Я понимаю, что вам очень хочется топить за VPS, блог обязывает, но инференс на CPU со свопом не показывает тупо ничего, он почти бессмысленен с такой скоростью. Прототипом нормальной системы будет как раз являться ПК с видео-картой.

Это вы зря, 7b, к примеру, чудесно себя проявляет при автодополнении кода (например, qwen 2.5 7b). Даже писать код инструкт-версия способна, а большое контекстное окно позволяет искать ошибки в сразу нескольких файлах.

Понятно, что с моделью 7b не побеседуешь особо, так они и нужны для других целей)

В оставшихся за кадром тестах на 8 ГБ RAM + 8 ГБ ZRAM переварить это она, к сожалению, не смогла.
Порадовал ещё и ZRAM, доказав свою полезность в таких экстремально ограниченных условиях.

Да не особо же порадовала, судя по всему.

Файлы gguf спроектированы так, что могут напрямую мапиться в память, никаких дополнительных распаковок весов в памяти не происходит, поэтому теоретическое сжатие ZRAM будет работать только если сам файл хорошо жмется.

У файлов Q4_K_M, как и других квантов, энтропия равна ~7.95 бит.

# ent qwen2.5-3b-instruct-q5_k_m.gguf
Entropy = 7.975616 bits per byte

То есть файлы не жмутся абсолютно, поэтому ZRAM тут не поможет совершенно. Убедиться, что сжатия нет, можно посмотрев в zramctl на колонки data и compr.

Тут же наблюдается, что реальная RAM полностью занята и пришлось одолжить ей 4 ГБ у ZRAM
для сравнения при запуске на GPU от NVIDIA квантованная до 4-битной точности LLaMA у меня занимала всего лишь 9 ГБ VRAM во время инференса.

Вот эти 9гб и есть реальный расход, которые легко укладываются в 12гб реальной памяти, даже с учетом системы.
ZRAM настроена так, чтобы срабатывать раньше, чем заполнится вся реальная память, и эти полоски могут вводить в заблуждение. Единственный выигрыш там, это сжатие памяти отведенной под систему, но это всего в районе 0.5-1гб в лучшем случае, и если вместо zlo-rle сжатия использовать zstd.

Но, это не значит, что ZRAM бесполезная. Например, ноутбуки с 4гб памяти, если включить сжатие, они вместо 10 вкладок в браузере смогут открывать 40, в этом случае сжатие себя хорошо показывает.

Сейчас можно спокойно арендовать А5000/24vRAM за 8$, с чего вдруг дорого ?

Оффтоп вопрос, хотел бы тоже побаловаться с нейронками, есть серв на 2 зеона и 120 Гб оперативы, 10 ТБ места, что можно накатить адекватное? На домашнем пк юзаю stable diffusion, но хочется что-то текстовое тоже иметь

Лучше туда в этот сервер добавить какую-нибудь видеокарту от зелёных и не одну..

Llama на 450 миллиардов параметров квантизированная до 4х битов по идее должна легко поместиться, как и всё что меньше. Из интересных моделей - Pixtral, но там всего 12B, Qwen-2VL и производные от него Molmo всякие.

Если докидывать карточки зелёных, то попробовать с БУшным железом, P40 и P100 так как там VRAM много и стоят они копейки. Но они технологически устарели, и тот же vLLM на них запускаться не хочет.
3090 с её 24 гигами ещё очень вкусное предложение, в моём регионе их БУ за 500-600 евро можно найти.

С карточками красных и ROCm ещё можно поэскпериментировать, в интернете большая часть тестов где люди жрут кактус и тестируют их из под Винды, но на Линукс по идее производительность должна быть сравнимой с карточками зелёных из аналогичного ценового сегмента. С поправкой на то, что у красных VRAM в среднем больше и токенов в секунду может и меньше, но модель большего размера можно засунуть.

К сожалению P40 уже не копейки. В мае были по 10-12k руб. В начале лета урвал за 16k, а сейчас их все смели и уже по 30k продают. Спрос на них сейчас явно превышает предложения. Если бы не эти истерия с LLM, они бы сейчас наверно стоили 2$ за кг.

ps: зашел сейчас на доски объявлений, уже по 40k продают )))

Мда, досадно. Не менее досадно, что LLM судя по статистике от дата-центров гробят GPU также быстро как майнинг. И когда популярность спекулятивно раздутая пойдёт на спад, на рынке окажется много БУ железа далеко не лучшего качества.

Не думаю, что дата-центры способные сильно нагрузить GPU сервер будут использовать P40. Такие бомж сборки больше подходят для проектов с периодической, небольшой нагрузкой. Да и что-то у меня сомнения, что популярность пойдёт на спад. Тут же не перекупы виноваты в превышении спроса над предложением, а покупатели, которые сметают все GPU с большим объёмом VRAM. А сметают они их потому, что этот год богат на появление новых версий LLM моделей большого размера с очень неплохим качеством и существенно расширился спектр задач, в которых можно применять ИИ.

Если еще ответ актуален, я бы посоветовал мистралевские 123B модельки. Чуть поджатые до 6K должны хорошо поместиться (в крайнем случае - 5К взять). Анонс их модели с обновленными данными буквально сегодня кажется появился, через пару дней вероятно уже будут конвертированные, но для пробы и прошлую можно спокойно взять.

Также можете для сравнения взять что-то из 70B. По арене Nemotron от Nvidia на базе LLama 3.1 очень красиво выступает, но сам до него никак не доберусь попробовать. Ну или можете базовую LLama 3/3.1 на те же 70B для сравнения (как предполагается упихать в 120Гб памяти 200+гигов квантованой 405b LLama автором поста я не очень понял)

Ну и имейте ввиду, что на CPU такое считать... кхм. Ну я бы ожидал вероятно от пары минут на ответ после прогрева на паре xeon'ов. И первичная загрузка будет скорее всего не очень приятной, особенно если 10Tb это HDD.

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

Ну и непрошеный совет - попробуйте дома Flux dev. Он по качеству прям заметно лучше Stable Diffusion, правда пока чуть заморочнее в разворачивании, чем SD в исполнении фооокуса. Но думаю для обитателя хабра это не должно стать проблемой.

Sign up to leave a comment.