Перейти до основного вмісту

MoLE — засіб оцінювання мовних моделей Modalix

Огляд​

MoLE (Modalix Language Model Evaluator) — це інструмент для оцінювання точності та продуктивності LLM і VLM, що працюють на платформі Modalix.

Для оцінювання точності на текстових завданнях використовується lm-evaluation-harness. Для оцінювання точності на зображеннях із текстом на Modalix використовується lmms-eval із повторним використанням завдань, видобування відповідей та оцінювання з upstream. В обох випадках застосовується llima-benchmark accuracy. MoLE підтримує два бекенди:

  • hf — оцінювання точності на текстових завданнях на хості за допомогою HuggingFace transformers (еталонний базовий результат)
  • modalix — оцінювання на платі Modalix через llima benchmark-server

Встановлення​

Встановіть MoLE в окремому віртуальному середовищі на хості або Modalix DevKit, поза контейнером SDK Docker. Для виконання на DevKit також потрібне встановлене середовище виконання LLiMa. Порядок його встановлення наведено в розділі Встановлення Neat Framework.

Встановіть MoLE за допомогою sima-cli:

host:~$ sima-cli neat install llima/mole

Ця команда встановлює MoLE у віртуальне середовище ~/sima-mole-venv.

Встановлення вручну​

Якщо ви не використовуєте sima-cli, запустіть інсталятор із каталогу завантаженого пакета MoLE:

bash ./install_mole.sh --venv ~/sima-mole-venv

Для безпосереднього встановлення wheel активуйте віртуальне середовище Python 3.11–3.13 і виконайте наведені команди, замінивши назву wheel-файлу на завантажену версію:

python -m pip install './sima_lmm-<version>-py3-none-any.whl[mole]'
python -m pip install --no-deps "lmms-eval==0.7.3" "tenacity>=8.3.0"

Друга команда вмикає тестування на зображеннях, повторно використовуючи спільні залежності MoLE.

Використання​

Спочатку активуйте віртуальне середовище MoLE:

host:~$ source ~/sima-mole-venv/bin/activate

Для оцінювання на Modalix із хоста потрібен параметр --board_ip. На Modalix DevKit пропустіть його, щоб використовувати локальне середовище виконання. Для запуску сервера вкажіть --board_model; журнали локального сервера зберігаються у <output_dir>/server.log. Використовуйте --no-board_start_server, щоб підключитися до наявного сервера, не запускаючи й не зупиняючи його.

MoLE надає підкоманди llima-benchmark accuracy та llima-benchmark perf. Текстові навантаження використовують ідентифікатор моделі HuggingFace або локальний каталог токенізатора/конфігурації, що відповідає розгорнутій моделі. Навантаження із зображеннями використовують ресурси розгорнутої VLM; <model_id> є міткою запуску.

Оцінювання точності​

Точність на текстових завданнях​

Оцінювання якості моделі на стандартних завданнях:

(sima-mole-venv) host:~$ llima-benchmark accuracy <model_id> -b modalix \
-t <task> \
-o <output_dir> \
--max_num_tokens <max_num_tokens> \
--board_ip <board_ip> \
--board_model <model_path_on_board>
АргументОпис
model_idІдентифікатор моделі HuggingFace або локальний каталог токенізатора/конфігурації для оцінювання на тексті; описова мітка для оцінювання на зображеннях.
-bБекенд: modalix (виконання на платі) або hf (виконання на хості як еталонний базовий результат).
-tОбов’язковий. Одне або кілька завдань оцінювання. Приклади: hellaswag, triviaqa, piqa, winogrande, wikitext. Усі доступні завдання наведено в списку завдань.
-oВихідний каталог для результатів тестування.
--board_ipIP-адреса або ім’я хоста віддаленої плати. Обов’язковий при запуску з хоста; для локального виконання на Modalix пропустіть.
--board_modelКаталог скомпільованої моделі на DevKit. Обов’язковий при запуску сервера.
--max_num_tokensМаксимальна довжина контексту. Має бути не більшою за значення, використане під час компіляції.
-n, --num_samplesКількість зразків для оцінювання. Якщо не вказано, виконується весь набір завдань.
--board_ssh_userІм’я користувача SSH на платі Modalix. Необов’язковий; типове значення: sima. #
--board_ssh_passПароль SSH для плати Modalix. Необов’язковий. Вкажіть його для неінтерактивного автоматизованого тестування.
important

Завдання, що використовують логіти або логарифмічні правдоподібності, потребують --return_logits під час компіляції. Завдання на основі генерації, зокрема оцінювання на зображеннях із текстом, цього не потребують. Див. Компіляція моделі.

У режимі -b modalix таблиці результатів позначаються як результати бекенду Modalix і містять цільову плату. HuggingFace model_id також відображається, оскільки MoLE використовує його для токенізації та метаданих завдань.

Щоб використати бекенд HuggingFace як еталонний базовий результат:

(sima-mole-venv) host:~$ llima-benchmark accuracy <model_id> -b hf -t <task> -o <output_dir>

Для перегляду всіх доступних параметрів виконайте llima-benchmark accuracy -h.

Точність на зображеннях із текстом​

Засіб оцінювання встановлюється разом із MoLE та використовує рідний шаблон чату розгорнутої VLM, попередню обробку зображень і оцінювання завдань з upstream. Наведені нижче завдання перевірено з Qwen3.5-2B на Modalix:

ЗавданняСпрямуванняПеревірка
realworldqaРеальні сцени та просторове міркуванняПовний набір даних
docvqa_valЧитання документів та OCRСмоук-тести
chartqaЧитання графіків і числове міркуванняСмоук-тести
mmstarВізуальне сприйняття та мультимодальне міркуванняСмоук-тест на 10 зразках
ai2dРозуміння наукових схемСмоук-тест на 10 зразках
ocrbenchРозпізнавання та розуміння текстуСмоук-тест на 10 зразках
textvqa_valЗапитання про текст на природних зображенняхСмоук-тест на 10 зразках

Інші окремі завдання lmms-eval з генерацією відповіді за зображенням можна вибрати через -t з урахуванням наведених нижче обмежень, але не всі вони перевірені.

llima-benchmark accuracy qwen3.5-2b -b modalix \
-t realworldqa docvqa_val chartqa \
--board_ip <devkit-address> --board_model <compiled-model-on-devkit> \
--max_num_tokens 4096 -o results/vlm

На DevKit пропустіть --board_ip. Ресурси моделі на хості не потрібні. Використовуйте узгоджені випуски середовища виконання та MoLE.

Параметр оцінювання на зображенняхОпис
--max_new_tokensПеревизначає ліміт вихідних токенів завдання; інакше зберігається типове значення з upstream.
--enable_thinkingВмикає рідний шаблон міркування моделі; типово вимкнено.
--accuracy_manifestВикористовує зафіксовані ревізії наборів даних або підготовлені локальні набори, як показано нижче.

Запускайте текстові завдання та завдання із зображеннями окремо, використовуючи індивідуальні назви завдань. Оцінювання на зображеннях підтримує звичайні VLM із жадібним декодуванням. Аудіо/відео, багатокрокові діалоги, візуальні few-shot завдання та завдання з повторними запитами не підтримуються. Вхідні дані разом із лімітом виходу мають уміщуватися в запитаний і скомпільований контекст; вхідні дані не обрізаються. Кілька зображень зберігають порядок, визначений завданням. Рідний EOS зупиняє генерацію; рядки зупинки завдання обрізають повернену відповідь.

Підготовлені набори даних із зображеннями​

Набори даних завантажуються автоматично. Для оцінювання із зафіксованими ревізіями або без мережі передайте --accuracy_manifest manifest.json. Наприклад, із -t chartqa:

{
"schema_version": 1,
"tasks": {
"chartqa": {
"revision": "<40-character-dataset-commit>",
"split": "test",
"local_path": "datasets/chartqa"
}
}
}

Підготуйте локальні набори даних за допомогою HuggingFace DatasetDict.save_to_disk(), зберігши стовпці, зображення та розбиття для оцінювання з upstream. Шляхи задаються відносно маніфесту, а назви завдань мають відповідати -t. Пропустіть local_path, щоб завантажити зафіксовану ревізію. Для запуску без мережі встановіть HF_HUB_OFFLINE=1 HF_DATASETS_OFFLINE=1.

Результати оцінювання на зображеннях​

Вихідний каталог містить:

  • accuracy.json: сукупні метрики, кількість зразків, ревізії наборів даних, шлях розгортання, версію середовища виконання та налаштування.
  • accuracy-answers.jsonl: згенеровані відповіді, ідентифікаційні дані зображень/запитів, кількість токенів, причини завершення та помилки.
  • accuracy-samples.jsonl: результати оцінювання кожного зразка з upstream.

Якщо пропустити -n, виконується весь набір даних. Помилки зупиняють оцінювання, зберігають часткові відповіді, а сукупні метрики не формуються. Обрізання через ліміт виходу враховуються, і такі відповіді також оцінюються.

Тестування продуктивності​

Вимірює час до першого токена (TTFT) і кількість токенів за секунду (TPS) на платі Modalix для різних довжин вхідних даних:

(sima-mole-venv) host:~$ llima-benchmark perf <model_id> \
-o <output_dir> \
--board_ip <board_ip> \
--board_model <model_path_on_board> \
--max_num_tokens <max_num_tokens> --max_new_tokens <max_new_tokens> \
--input_lengths 1024 2048 3072 4096
АргументОпис
model_idДля текстових навантажень — ідентифікатор моделі HuggingFace або локальний каталог токенізатора/конфігурації, що відповідає розгорнутій моделі; для навантажень із зображеннями — описова мітка запуску.
-oВихідний каталог для результатів тестування.
--board_ipIP-адреса або ім’я хоста віддаленої плати. Обов’язковий при запуску з хоста; для локального виконання на Modalix пропустіть.
--board_modelКаталог скомпільованої моделі на DevKit. Обов’язковий при запуску сервера.
--max_num_tokensМаксимальна довжина контексту. Має бути не більшою за значення, використане під час компіляції.
--max_new_tokensМаксимальна кількість токенів для генерації у виході.
--input_lengthsНеобов’язкові точні довжини вхідних послідовностей токенів для тестування. Значення мають бути унікальними, а сума кожного значення та --max_new_tokens не має перевищувати --max_num_tokens. Якщо не вказано, MoLE автоматично створює групи довжин, що є степенями двійки.
--board_ssh_userІм’я користувача SSH на платі Modalix. Необов’язковий; типове значення: sima.
--board_ssh_passПароль SSH для плати Modalix. Необов’язковий. Вкажіть його для неінтерактивного автоматизованого тестування.

Для перегляду всіх доступних параметрів виконайте llima-benchmark perf -h.

Використовуйте --dataset bfcl-v3|ifeval|alpacaeval|gsm8k|dialogsum для рідних чат-запитів або запитів із викликом інструментів замість груп за довжиною токенів. Без -n виконується весь вибраний набір даних; -n 20 запускає перші 20 зразків. Набори даних завантажуються автоматично та кешуються. BFCL охоплює прості/множинні виклики; інструменти не виконуються.

--board_model визначає звичайне або спекулятивне декодування. Порівнюйте моделі окремими запусками з однаковими набором даних і налаштуваннями, змінюючи лише --board_model та -o. У кожному запуску один прогрів виключається з вимірювання, а стан KV скидається перед кожним запитом. Застосовуються рідний шаблон чату моделі та зупинка за EOS. Ліміти виходу для наборів даних включають перший токен; наявні групи довжин вимірюють перший токен і ще --max_new_tokens кроків декодування.

Продуктивність на зображеннях із текстом​

Використовуйте --dataset realworldqa|docvqa_val|chartqa, щоб вимірювати звичайні або спекулятивні VLM з тими самими запитами із зображеннями й текстом з upstream, що й для оцінювання точності:

llima-benchmark perf qwen3.5-vlm --dataset chartqa \
--board_ip <devkit-address> --board_model <compiled-model-or-speculative-bundle> \
--max_num_tokens 4096 --max_new_tokens 256 -o results/vlm-perf

Якщо пропустити -n, весь набір даних виконується один раз після одного прогріву, виключеного з вимірювання. --dataset_manifest приймає той самий формат зафіксованих ревізій/локальних наборів даних, що й --accuracy_manifest; назва завдання має відповідати --dataset. Зображення зберігають роздільну здатність із набору даних та використовують рідну попередню обробку середовища виконання. Ресурси моделі на хості не потрібні. Оцінювання точності залишається обмеженим звичайним декодуванням.

-o зберігає у performance.json часові вимірювання кожного запиту, кількість токенів, сукупні метрики, внесок чернеткової моделі, помилки, налаштування тестування та джерела наборів даних. TPS декодування не включає TTFT. TTFT для зображень включає рідну попередню обробку зображення та роботу візуального енкодера; TTFT для тексту починається з попереднього заповнення мовної моделі. Обидва показники не включають мережеву передачу та підготовку набору даних на хості. Внесок чернеткової моделі — це кількість прийнятих чернеткових токенів, поділена на загальну кількість згенерованих токенів. Ці навантаження вимірюють продуктивність, а не точність.