Поставил 4Х16Г и решил посмотреть, как там с troughput памяти. Оказалось, жалкие 12Г/с, при ~22-25т/с. А чо так плохо? Посмотрел конфигурацию слотов памяти и, о чудо! Выяснилось, что у меня 2-процэссорная система и слоты памяти размаплены так, что доступ к ним, получается только однокональный. Т.е. физически, однопроцовая плата, но БИОС её понимает, как двухпроцовую и диким миксом слотов памяти и, ессно, одним процом. Чо делать? Пришла помощь Жэлезного Друга из недружэственного Гуголя. в файл /home/юзернейм/.bashrc вставляем, в самый конец
# Оптимизация потоков для Unsloth на Xeon E5-2666 v3 export OMP_NUM_THREADS=20 export MKL_NUM_THREADS=20 export OPENBLAS_NUM_THREADS=20 export NUMEXPR_NUM_THREADS=20 export UNSLOTH_CPU_THREADS=20
ясен%, что для других процов, надо ставить своё. тут хоть и про unsloth, но
sysbench memory --memory-block-size=1M --memory-total-size=10G --num-threads=20 run
ужэ показует 50Г/с и 27-30т/с и к unsloth отношэния не имеет.
Threads started! Total operations: 10240 (52178.92 per second) 10240.00 MiB transferred (52178.92 MiB/sec)
И, как говорит Жэлезный Друг, производительность модели, каг не странно, в немалой степени зависит от производительности-кол-ва потоков ЦПУ. Т.к. имана он из условных 30Г параметров модели, подгружает те самые 3Г, которые и будут крутиться в видеоозу. А в процэссе, он множит друг на друга лютейшие матрицы и всё такое. Т.е. количество блоков AVX люто рулит. Но это он мне скозал после того, как посоветовал, наоборот, отключить гипертрединг, чтобы потоки от виртуальных ядер не забивали кэшь. Но оказалось вона как, на что он посетовал, что теория часто расходится с практикой, хнык-хнык...