Pull to refresh
195
0
Андрей Дмитриев @AndreyDmitriev

Пользователь

Send message

Вообще говоря это далеко не самый быстрый способ, есть и другие подходы, без хэширования. Мне как-то давно потребовалось генерить видеопоток, заполненный случайным шумом, но так чтобы укладываться в тайминг фреймов (160 МБ в секунду, кажется или около того), я в интернетах быстро нашёл подходящий несложный алгоритм. В данном случае я б Вихрь Мерсенна попробовал прирастить, там надо посмотреть какой период повторения псевдослучайной последовательности, но должно быть ещё быстрее чем данный метод, там просто банально меньше мат операций нужно для получения каждого следующего символа. Просто идея.

Нет, не манипуляции, просто я хотел ограничиться тривиальным случаем, когда запускается четыре потока, с явным назначением аффинити, и некоторые "заходят не туда", просто для иллюстрации.

Если же я буду запускать потоки без явного указания процессора (как обычно и делают), то будет так (скорость в МБ/с): 4 потока - 436; 5 потоков - 457; 6 потоков - 490; 7 потоков - 503. Также видно, как он чуть чуть частоту роняет под нагрузкой.

Восемь потоков я не тестировал, потому что уже семь дают мне 99% процентов загрузки и при запуске восьмого цикл, отображающий индикатор встаёт колом. Но не думаю, что там будет большая разница с семью. По хорошему конечно код надо показывать, там секретов нет, просто это на LabVIEW.

Скриншоты
4
4
5
5
6
6
7
7

Это в общем не входило в задачу, интерес был чисто "академический". Тестировать же лучше "полноценную" версию, которая chat.deepseek.com. Чуть выше в комментах я сравнил выдачу на довольно специфическом вопросе по сравнению с DeepSeek-R1-Distill-Qwen-7B-Q4_K_M, но там в общем результат ожидаем. Вы что-то специфическое хотели спросить? Я могу передать ей вопрос.

Разница есть, в пользу AVX512, но она невелика. Я только что прогнал вот эти две сборки

avx2 выдала 0.9 токенов в секунду, а avx512 — 1.1. Цифры я списал с веб интерфейса:

О, спасибо, хорошее замечание. Я, кстати, попробовал DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf запустить там и тут, так вот на компе из обзора она даёт 10 токенов, а на том, что в комменте выше - семь (даже если Quad не включён), и если включить, то, возможно даже они сравняются. Так что скорость в общем не совсем пропорциональна пропускной способности памяти, скорость процессора тоже важна. Результат интересный, ядро W-2245 где-то раза в полтора быстрее старого 6132, но тут их всего 8, а там 28. Я б ожидал токенов этак 4-5, но нет, оно быстрее.

Вот сухой бенчмарк, тачка слева даёт десять токенов, а справа - семь:

А, кстати, это легко продемонстрировать за утренним кофе.

Смотрите, я буду вычислять SHA256 в четыре потока, запуская это дело на четырёхядерном i7, и если я отдам распределение потоков на откуп операционке (точнее, LabVIEW и операционке), то загрузка восьми логических ядер будет выглядеть вот так (извините за немецкий скриншот):

"Рыхленько" так. А теперь следите за руками - я могу посадить мои потоки на первые четыре ядра:

И получу 280 MB/s, но тут фактически работают два физических ядра.

А теперь я раскидаю потоки вот так:

И получу уже 470 MB/s, потому что теперь я занял четыре физических ядра.

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

Выключая гипертрединг, я не даю возможности приложению сесть на ядра неоптимальным образом, но в последнем случае видно, что сама операционка (и остальные процессы) перебралась на незанятые "гипертредированые" ядра, и если их не будет, то она будет использовать те, где крутятся мои потоки, так что с выключенным HT производительность в теории может просесть, хотя и не намного. Рецептов по оптимальному использованию гипертрединга тут в общем нет, надо просто пробовать и так и сяк.

Нет. нет, там судя по всему просто выделение памяти так реализовано. После того как всё загрузилось, память забита на 90% и обращений к диску не производится, это я проверил. А при изначальной загрузке модели она SSD грузит на 100%, да, это видно. Там в принципе исходники есть, можно посмотреть, как она модель грузит (хотя я пока туда не лазил).

Да, правильно. Я просто проверил, что без него загрузка стала 100%. Если бы она и при выключенном гипертрединге осталась в районе 50, то надо было бы внимательно смотреть откуда там ноги растут и почему идёт недогруз. Теперь его по идее надо включить обратно и провести тщательные замеры (так то я проверил производительность "на глаз".). И да, вполне возможно, что с его включением станет чуть лучше (я, кажется и видел 1.2 токена с ним и 1.1 без него, но "кажется" - не считается). А может ведь и так получиться, что программа допустим видит 28 физических ядер, но при создании потоков они все "сядут" на один 14-ядерный процессор (операционка, скорее всего такую глупость не сделает, а вот программа по ошибке вполне может), у которого 28 логических потоков, он будет из кожи вон лезть на своём гипертрединге, а второй будет просто простаивать, я и в этом случае увижу 50% (мой индикатор показывает среднее по всем логическим ядрам) но в этом случае выключение гипертрединга даст и стопроцентную загрузку и безусловный и заметный прирост. Там был, кажется ключ управления потоками в опциях, я завтра гляну, если время будет. Полная, "на всю катушку" загрузка на 56 потоков - тоже бывает по итогу медленнее, чем 28 потоков по чистым ядрам, я читал на реддите, что многие игры работают заметно быстрее именно при выключенном HT.

Их есть у меня, причём в запечатанном, нетронутом виде:

Есть ещё всякие варианты типа Q4_0, может будут быстрее?

У меня нет под рукой других, кроме разве что DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf, что я в LM Studio скачал. Её размер 4.5 ГБ. Вот я прямо сейчас проверил — она на этой конфигурации стабильно выдаёт 10 токенов в секунду, с этим уже можно жить, да. Но она совершенно не в курсе специфических вещей, вот к примеру, если пользоваться ею как справочником:

Быстро, но неверно
Быстро, но неверно

А вот 700ГБ DeepSeek-R1.Q8_0, и это более-менее правильный ответ:

Медленно, но верно
Медленно, но верно

Ну там навскидку железо заметно посвежее, опять же у AMD EPYC на DDR5 если верить спекам пропускная способность памяти аж 480ГБ/с, а моя конфигурация и из двухсот не выбегает. Там параметры запуска ещё чуть другие - добавлены опции --temp 0.6 -no-cnv -c 16384 . Я только что попробовал - но нет, результат примерно тот же. Что есть, то есть, а вот AMD EPYC у меня нет, чтоб сравнить.

В продакшен пошли тачки помощнее, там был гигабайт DDR5 и процессоры порезвее. Около тридцати тысяч такой комп стоил.

Вот наскидку я только что набросал на сайте hp, так и есть:

Да, вся модель должна помещаться в памяти. При этом я замечу, что на тестовой тачке память двенадцатиканальная, вот, для сравнения бенчмарк с двухканальной — тут тоже Xeon, но даже если я добью её до 768 ГБ, то будет ну очень грустно, просто сравните пропускную способность там и тут:

Я написал. Правда, LM Studio "не зашла", но c llama.cpp всё получилось.

Даже не знал, что в него картинки можно загружать было. Я для эпизодического распознавания пользуюсь https://llamaocr.com. Для меня важно, что она формулы умеет распознавать. PDF правда пока не поддерживает, так что только перегонкой в картинку, но обещают скоро прикрутить.

У меня тоже выходной, и я решил освежить знания по численным методам, конкретно мне квадратура Гаусса - Лобатто по семи точкам потребовалась. Вот так чтобы "под ключ" они не справились, даже с наводящими вопросами. Может игрушки они и норм пишут, но численные методы — так себе, при этом они допускают ошибки, которые потом вычищать долго и нудно. Хотя базовые алгоритмы типа там бинарного поиска или свёртки — вполне норм.

Как пример — компьютер в составе некой рентгеновской установки, которая иследует некие быстротекущие процессы, там четыре 1К камеры (16 бит, оттенки серого), они через систему зеркал смотрят на объект и делают съёмку на 12800 кадров в секунду. У каждой камеры 128 ГБ памяти на борту, они её забивают за несколько секунд экспериметна (синхронизация на FPGA), затем по 10Гбит в четыре канала полтерабайта сырых данных сгружаются на компьютер, мне надо сделать геометрическую коррекцию из-за дисторсии объективов, затем Flat Field коррекцию из-за неравномерности рентгена и виньетирования, склеить все четыре картинки безшовно, потом убрать битые пикселы, там где рентген пробил до матрицы, всё это максимально быстро, паралллельно с разгрузкой камер, вот откуда там терабайт оперативки и полсотни ядер, несколько минут ревут вентиляторы и готов мультистраничный TIFF со стеком картинок. Основа там на LabVIEW, довольно навороченный GUI, ядро обработки - Intel IPP/OpenCV/NI VDM и несколько самописных библиотек c интринсинками, чтоб AVX2 на всю катушку использовать. Линукс тут больших преимуществ не даст.

Почему-то сразу вспомнилась Еггогология. Просто теперь она современная.

Интересно, пофиксили ли #34391, пока висит как "open":

PowerLauncher.exe causes other running MSI installers to fail to set up the shortcut.

Я на это напоролся месяц назад. Короче, мне потребовалась старая Студия 2010 для одного проекта, я её поставил, следом автоматом через Windows Update прилетели обновления (KB2549864 и что-то ещё, они, оказывается, всё ещё накатываются), ну и установщик обновлений знатно подрался с PowerToys  (вроде у меня 0.83 была) за ярлык Spy++.lnk, при этом гнал без перерывов десятки мегабайт ошибок в логи, так что работать на компе было невозможно. Деинсталлировал я это дело с трудом, потом обновления установились.

Information

Rating
Does not participate
Location
Ahrensburg, Schleswig-Holstein, Германия
Date of birth
Registered
Activity