Sakhanda Wire
NVDA $217.23 -1.84% MSFT $539.44 +1.08% GOOGL $349.22 +0.45% META $736.72 -0.11% AMZN $254.76 +0.27%
← До новин

Представляємо Welcome Muse Spark Open: передову мультимодальну модель архітектури mixture-of-experts із відкритими вагами від Meta

Зустрічайте Muse Spark Open: мультимодальну модель суміші експертів із відкритими вагами передового рівня від Meta
Опубліковано 15 жовтня 2026 року
Оновити на GitHub
Muse Spark Open — це модель Meta з відкритими вагами. Модель суміші експертів поєднує текст, зображення, аудіо й відео в одній моделі приблизно з 816 мільярдами параметрів, із близько 42 мільярдами активних параметрів на токен і контекстним вікном до одного мільйона токенів. Вона генерує текст, надаючи розробникам єдиний інтерфейс для запитань про різні типи вхідних даних.

Після Muse Glimmer модель Muse Spark Open представляє архітектуру суміші експертів у значно більшому масштабі та є найпотужнішою моделлю зі США з відкритими вагами на сьогодні.

Meta навчала Muse Spark Open для агентного програмування: читання кодової бази, написання й налагодження коду та виклику інструментів. Модель також приймає на вході зображення, аудіо й відео, тож може читати знімок екрана, слухати голосову нотатку або переглядати запис екрана під час роботи з вашим кодом. У цій публікації показано, як запускати й донавчати модель, а також що ми з нею створили. Усі моделі доступні тут.

Загальні можливості та архітектура

Meta описує Muse Spark Open як оптимізовану для програмування модель, навчену на реальних робочих процесах розробників, зокрема рефакторингу кількох файлів і тривалих сеансах налагодження. Muse Spark Open — модель, зосереджена на агентній роботі: вона планує, діє, спостерігає та самостійно виправляє помилки під час тривалих завдань, зокрема перегляду вебсторінок із зображеннями.

Характеристика Muse Spark Open
Розмір моделі ~816 млрд загальних параметрів; ~42 млрд активних на токен
Маршрутизація експертів 256 експертів на шар MoE; 8 вибраних для кожного токена
Вхідні дані Текст, зображення, аудіо та відео
Вихідні дані Текст
Контекстне вікно До 1 млн токенів
Формати контрольних точок BF16 і NVFP4

Репозиторії контрольних точок мають назви Muse-Spark-Open-816B-A42B і Muse-Spark-Open-816B-A42B-NVFP4.

схема моделі

Muse Spark Open — повнорозмірна модель із серії Muse. Muse Glimmer, яку Meta випустила в серпні, — це невелика щільна модель тієї самої серії, ідеальна для локального запуску. Обидві моделі використовують однакові токенізатор і словник. Шаблон чату відповідає шаблону Muse Glimmer із доповненнями для нових модальностей. У Muse Spark Open вхідне вбудовування та вихідний шар є окремими матрицями приблизно по 1,66 млрд параметрів кожна.

Суміш експертів

Мовна модель має 62 шари та приховану розмірність 8192. Кожен шар має 128 голів запитів і 16 голів ключів-значень (згрупована увага до запитів). Кожна голова має 64 виміри. Блок уваги має вихідний вентиль і шар вихідної нормалізації. Модель також застосовує нормалізацію до запитів і ключів (QK-нормалізація). Кожен блок поєднує свої вхідні та вихідні дані через навчений залишковий вентиль, а не звичайним додаванням.

Muse Glimmer використовує одну щільну мережу прямого поширення в кожному шарі. Muse Spark Open замінює цю щільну мережу блоком суміші експертів (MoE). Кожен блок MoE має 256 експертів, а маршрутизатор вибирає 8 експертів для кожного токена. Кожен експерт — це мережа прямого поширення, яка проєктує дані з 8192 до 4096 вимірів і назад до 8192, а потім застосовує власну нормалізацію до вихідних даних. На експертів припадає приблизно 97% усіх параметрів моделі.

Для кожного токена працюють лише 8 експертів, тому модель обчислює кожен токен приблизно з 42 млрд параметрів. Усі 256 експертів залишаються в пам’яті, тому для розгортання потрібна пам’ять моделі з 816 млрд параметрів, але швидкість роботи відповідає моделі з 42 млрд параметрів. Контрольна точка BF16 займає приблизно 1,5 ТБ у форматі safetensors. Контрольна точка NVFP4 зберігає параметри з точністю 4 біти з незначною втратою точності й призначена спеціально для графічних процесорів NVIDIA Blackwell. У transformers контрольна точка BF16 працює на 4 вузлах по 8 графічних процесорів H200 із паралелізмом тензорів (TP=32), а NVFP4 — на одному вузлі B200. Якщо ви хочете розгорнути Muse Spark Open, перегляньте наведені нижче рецепти для llama.cpp, vLLM і SGLang.

Енкодер сприйняття

Енкодер сприйняття перетворює зображення та кадри відео на токени для мовної моделі, так само як Muse Glimmer. Енкодер має 1,8 млрд параметрів, 50 шарів, приховану розмірність 1536 і 16 голів уваги. Він розділяє кожне зображення на патчі 14×14 і створює ознаки розмірністю 4096. Інформація про позицію надходить із навчених абсолютних вбудовувань і 2D RoPE. Мережа прямого поширення в кожному шарі використовує LayerNorm і GELU. Кожен четвертий шар і останній шар застосовують повну увагу, а інші шари — розріджену увагу.

схема обробки зображення

Muse Glimmer 30B використовує енкодер із такою самою архітектурою. Концепція базується на роботі Meta Perception Encoder. Вхідне відео проходить через той самий енкодер, що й зображення.

Аудіоенкодер

схема аудіо

Muse Spark Open приймає аудіо на вході через свій аудіоенкодер. Аудіотокенізатор перетворює аудіо на токени, а шаблон чату позначає позицію аудіо токенами <|audio|>. Енкодер видає один аудіотокен кожні 80 мс, що дає 12,5 токена на секунду. Наприклад, якщо аудіозапис триває 10 секунд, кількість вхідних аудіотокенів становитиме 125. Сам енкодер є згортковою пірамідою, де кожен етап складається з вбудовувача патчів із різними розмірами патчів і 2 згорткових блоків із ядрами 1D розміром 7 та кроком 1. Ці етапи повторюються для розмірів патчів [16, 6, 5, 4]. Наприкінці останнього етапу часові кадри надходять до фінального блоку RMSNorm → лінійна проєкція → RMSNorm.

Довгий контекст

Під час інференсу контекстне вікно становить 1 млн токенів. Конфігурація встановлює max_position_embeddings на 1 048 576. Це включає токени зображень, відео та аудіо в тому самому вікні, що й текст.

Згрупована увага до запитів зберігає кеш KV невеликим для моделі такого розміру. Кожен токен додає до кешу 2 × 16 голів × 64 виміри × 62 шари = 126 976 значень. У BF16 це приблизно 250 КБ на токен і близько 266 ГБ для повного контексту на 1 млн токенів.

Підтримка інференсу

Transformers

Реалізація Muse Spark Open надає MuseSparkForConditionalGeneration для генерації тексту з мультимодальних вхідних даних і MuseSparkProcessor для підготовки діалогів. Процесор поєднує токенізатор, процесори зображень і відео, екстрактор аудіоознак і шаблон чату.

Використовуйте DistributedConfig для налаштування параметрів паралелізму. tp_size — це кількість пристроїв, між якими розподіляються щільні шари, а ep_size — кількість пристроїв, між якими розподіляються експерти.

Ініціалізувати модель і процесор можна так:

import os

from transformers import AutoModelForMultimodalLM, AutoTokenizer, DistributedConfig

distributed_config = DistributedConfig(
    tp_size=int(os.environ["WORLD_SIZE"]),
    ep_size=int(os.environ["WORLD_SIZE"]),
)

tokenizer = AutoTokenizer.from_pretrained("meta-models/Muse-Spark-Open-816B-A42B
")
model = AutoModelForMultimodalLM.from_pretrained(
    "meta-models/Muse-Spark-Open-816B-A42B",
    distributed_config=distributed_config,
)

messages = [
    {"role": "user", "content": "Explain in one sentence why the sky is usually blue."},
]
inputs = tokenizer.apply_chat_template(
    messages,
    reasoning_effort="medium",  
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device).to(model.dtype)

input_len = inputs["input_ids"].shape[-1]

outputs = model.generate(**inputs, max_new_tokens=2000)

Інференс лише для тексту

Підготуйте діалог, а потім передайте повідомлення до processor.apply_chat_template, увімкнувши add_generation_prompt=True, tokenize=True, return_dict=True і return_tensors="pt". Передайте результат роботи процесора до model.generate і декодуйте щойно згенеровані токени, виключивши вхідний префікс. Процесор має параметр для рівня міркувань, який зіставляє символічні рівні (low/medium/high/xhigh) із цілими числами, що приймає сама модель (16, 64, 256, 512). Зверніть увагу, що вимкнути міркування в Muse Spark Open неможливо, тому встановіть рівень міркувань на «low», якщо хочете використати менше токенів для розв’язання простішого завдання. Також можна вказати числовий рівень, додавши до системного запиту рядок на кшталт Reasoning strength: 1.

Зображення та текст

Процесор Muse Spark Open розгортає кожен маркер зображення в потрібну для обробленого зображення кількість патч-токенів, оточених токенами меж зображення. Це розгортання зберігає узгодженість текстових позицій із візуальними ознаками, переданими моделі. Процесор також обробляє кілька зображень в одному запиті.

Інференс відео

Відеозапити містять інформацію про час кадрів, а також візуальний вміст. Процесор обробляє відео з аудіодоріжкою (це вдосконалення порівняно з Muse Glimmer завдяки аудіоенкодеру). Він зменшує частоту кадрів відео й аудіо, щоб синхронізувати їх. Типово відео обробляється зі швидкістю 2 кадри на секунду, максимум 96 кадрів. Це можна змінити, задавши FPS відеопроцесора:

Як загальне правило, відео складається з кадрів у часовій послідовності: що сильніше ви зменшуєте частоту дискретизації, то більше кадрів між конкретними подіями втрачаєте, тому для точнішої генерації потрібно підтримувати високий FPS. Однак це компроміс, адже знадобиться більше пам’яті й зросте затримка під час попереднього заповнення. Кадри чергуються з текстовим введенням, що містить часові мітки (наприклад, «Час: 3,5 с»). Щоб передавати відео зі звуком, додайте load_audio_from_video=True до apply_chat_template.

Зберігайте метадані відео під час підготовки вхідних даних за допомогою return_metadata=True, щоб процесор міг призначити правильну частоту кадрів.

Інференс аудіо

Аудіоблок Muse Spark Open працює із сирою формою сигналу. Процесор очікує монофонічне аудіо з частотою 24 кГц і доповнює форму сигналу до кратного 1 920 семплам, що відповідає одному аудіовбудовуванню на 80 мілісекунд. Аудіо, яке безпосередньо передається процесору з іншою частотою дискретизації, потрібно спочатку передискретизувати. Для цього можна скористатися утилітою load_audio з transformers. load_audio використовує бекенди torchcodec, librosa або torchaudio, тому перед запуском інференсу переконайтеся, що один із них локально встановлено.

Якщо ви просто хочете використовувати apply_chat_template із повідомленнями, усе це автоматично виконується у фоновому режимі:

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

Виклик інструментів

Muse Spark Open підтримує виклик інструментів лише для тексту та в мультимодальному режимі. Викликати інструменти моделлю можна так.

Muse Spark Open використовує шаблон чату на основі каналів (Harmony, уперше представлений у gpt-oss). Вам не потрібно знати внутрішні деталі, але корисно перевіряти канали, до яких маршрутизується модель, якщо ви отримуєте низькоякісні результати. У наведеному нижче вхідному повідомленні:

<|start|>assistant навмисно залишено відкритим: саме модель вибирає отримувача за допомогою to=. Модель має різних отримувачів, наприклад self просить модель міркувати.

self використовується для міркувань, commentary — для коментарів перед викликами інструментів і між ними, видимих кінцевому користувачеві, а user — для фінальної відповіді.
Маршрутизація викликів інструментів аналізується так (якщо ви передали tools до apply_chat_template):

Llama.cpp

Muse Spark із 2-бітним квантуванням у Llama Server

Muse Spark Open інтегровано в llama.cpp і доступно в попередньо зібраних двійкових файлах. Встановити його можна так:

Запустити сервер із суфіксом квантування, доданим до ідентифікатора моделі, можна так:

Репозиторій із квантизованими версіями знаходиться тут. Після запуску сервера відкрийте localhost:9931, щоб спілкуватися через вбудований вебінтерфейс. У вебінтерфейсі можна додавати аудіо й зображення для інференсу та регулювати рівень міркувань.
Зверніть увагу, що вимкнути міркування в Muse Spark Open неможливо, тому встановіть його рівень на «low», якщо хочете використати менше токенів для простішого завдання.
Ми тестували квантизовані версії на Mac M3 Ultra (512 ГБ). Квантизована 2-бітна версія з калібруванням imatrix працює зі швидкістю 18 токенів/с, залишаючи достатньо місця для кешу KV (модель використовує 304 ГБ).

Також можна надсилати запити до сервера. Докладніше про мультимодальність, виклики інструментів та інші можливості дивіться в документації API.

SGLang

Інтеграція Muse Spark Open у SGLang підтримує текстові, графічні, аудіо- та відеовхідні дані. Еталонна конфігурація NVFP4 працює на чотирьох графічних процесорах GB300.

У середовищі інтеграції SGLang завантажте контрольну точку з Hugging Face Hub і запустіть сервер:

Контрольна точка містить шаблон чату, який ми передаємо явно. Засіб запуску налаштовує парсери міркувань Muse і викликів інструментів.

Надішліть запит через API, сумісний з OpenAI:

Відповідь розділяє трасування міркувань у reasoning_content і фінальну відповідь у content.

vLLM

Еталонна інтеграція Muse Spark Open у vLLM підтримує текстові та графічні вхідні дані з контрольною точкою NVFP4, яка потребує графічних процесорів серії Blackwell.

Після встановлення еталонного плагіна та його залежностей завантажте контрольну точку з Hugging Face Hub і запустіть сервер:

Ця конфігурація встановлює контекст обслуговування на 128 тис. токенів. Плагін надає реалізацію моделі, завантажувач контрольної точки, а також парсери міркувань і викликів інструментів.

Надішліть запит, використовуючи той самий ідентифікатор моделі Hub:

MLX

Muse Spark Open уже доступна в oMLX і mlx-lm. Квантизовані версії oQ, оптимізовані для oMLX, доступні у форматах 3 біти та 4 біти і готові до використання.

Ми тестували квантизовану версію oQ3e на M3 Ultra (512 ГБ). Модель займає близько 344 ГБ, залишаючи місце для кешу KV, і працює зі швидкістю приблизно 225 токенів/с під час попереднього заповнення та 21 токен/с під час генерації із запитом на 1024 токени й 128 згенерованими токенами.

Після завантаження моделі через інтерфейс oMLX можна спілкуватися з нею у вбудованому чаті. У чаті можна додавати зображення та на льоту регулювати рівень міркувань від low до xhigh. Міркування моделі відображаються як блок мислення, який можна згортати, окремо від фінальної відповіді.

Зверніть увагу, що вимкнути міркування неможливо, а типове значення (Auto) використовує xhigh. Встановіть «low», якщо хочете використовувати менше токенів для простіших завдань. omlx

Мовна модель також доступна в цьому PR офіційного репозиторію mlx-lm. Запустити її на тій самій високоякісній квантизованій версії oQ3e можна так:

Це велика модель: навіть 3-бітне квантування потребує понад 256 ГБ оперативної пам’яті, як пояснено вище. Також можна запускати розподілений інференс на кількох комп’ютерах; подробиці дивіться в документації.

Розгортання Muse Spark Open за допомогою Inference Endpoints

Розгорнути Muse Spark Open у Inference Endpoints можна за допомогою попередньо перевіреного рецепта SGLang для варіанта NVFP4, який працює або на 8 × NVIDIA RTX Pro 6000 98 ГБ із довжиною контексту 131072, або на 8 × NVIDIA H200 141 ГБ, якщо вам потрібен контекст довжиною 1048576.

Для розгортання виконайте одну команду за допомогою Hugging Face CLI:

Або відкрийте endpoints.huggingface.co/new/meta-models/Muse-Spark-Open-816B-A42B-NVFP4 і виберіть Create Endpoint.

Кінцева точка надає API, сумісний з OpenAI, із Chat Completions API за адресою /v1/chat/completions і Responses API за адресою /v1/responses.

Будь-який клієнт, сумісний з OpenAI, працює з тією самою URL-адресою та вашим токеном Hugging Face як ключем API.

Донавчання за допомогою TRL Quentin Gallouédec Ben Burtenshaw

Повну контрольну точку на 816 млрд параметрів можна донавчати за допомогою SFTTrainer із TRL. У цьому розділі показано, як ми донавчали повну контрольну точку на 816 млрд параметрів за допомогою TRL на 8 вузлах по 8 графічних процесорів H100. Рецепт навчає адаптери LoRA для шарів уваги. Експерти залишаються замороженими. Повний скрипт міститься в прикладах TRL.

Спочатку потрібно розподілити модель між 64 графічними пристроями. Через великий розмір моделі її потрібно розпаралелити за кількома осями. Ми паралелимо тензори, дані та експертів за допомогою DistributedConfig, який повідомляє transformers, як розділити модель під час завантаження:

У наведеному фрагменті fsdp_size=64 розподіляє модель між усіма 64 графічними процесорами за допомогою FSDP2, а ep_size=8 ділить 256 експертів кожного шару на 8 груп. Transformers надсилає кожен токен на графічний процесор, який містить відповідного експерта, тому кожен графічний процесор навчається на власній частині пакета.

Тепер можна налаштувати SFTConfig для запуску навчання. Тут ми виконали просте завдання, щоб адаптувати шаблон чату моделі на наборі даних із відкритим кодом, але ви можете застосувати цей підхід до власного сценарію використання.

Ключовими частинами є packing=True, що об’єднує приклади в послідовності по 2048 токенів без доповнення. Блок-діагональна маска зберігає приклади окремо. save_only_model=True зберігає адаптер без стану оптимізатора, оскільки тренер не може відновити модель, розділену під час завантаження. LoraConfig націлений на чотири проєкції уваги, а 256 експертів кожного шару залишаються замороженими.

Потім цю команду можна запустити на кожному вузлі:

Ми навчали модель протягом 500 кроків, що зайняло близько 2 годин на 64 H100 зі швидкістю приблизно 8 000 токенів на секунду. Середня точність токенів зросла з 72% до 84%, а втрата зменшилася з 1,26 до 0,57, що свідчить про успішний запуск донавчання.

Демонстрації

Muse Spark Open — модель для програмування та агентної роботи. Ми хотіли перевірити це самостійно, тому спробували низку мультимодальних і агентних завдань, які використовують вхідні зображення та аудіо моделі. Усе наведене нижче можна запустити або форкнути.

Генератор 3D-ресурсів

Ми поєднали Muse Spark Open із 2-бітним квантуванням (яка працює на llama.cpp) з агентом програмування Pi, щоб генерувати та ітеративно вдосконалювати 3D-ресурси в Three.js. Запит можна знайти тут; оскільки модель квантизована, їй потрібне трохи детальніше керування. На llama.cpp на Mac Ultra ми отримуємо 18 токенів/с.

Спочатку ми описуємо ресурс, а Pi використовує модель для генерації коду Three.js, рендерить результат у браузері та робить знімки екрана з різних ракурсів. Потім він надсилає ці зображення назад тій самій моделі на llama server для отримання візуального зворотного зв’язку. Pi використовує цей зворотний зв’язок для редагування коду й повторює процес.

Взаємодія з браузером за допомогою OpenEnv і Hugging Face Sandbox

Ми протестували Spark на завданнях із керування комп’ютером і були вражені продуктивністю, тож створили компактну демонстрацію, яка також пояснює, як працює агент керування комп’ютером. Ви можете додатково налаштувати її для власних потреб. Це одночасно навчальний приклад і щось, що можна запустити кількома рядками коду. Знайти його можна тут.

Браузерний агент Muse Spark NVFP4 з OpenEnv і HF Sandboxes

Hugging Face Sandboxes — це ізольовані середовища на основі Hugging Face Jobs для зручного виконання коду. Демонстрація складається з трьох компонентів:

  1. Muse Spark Open, розгорнута за допомогою Inference Endpoints,
  2. OpenEnv, що обгортає дії вебдрайвера за допомогою helium і selenium (натискання, введення тексту, прокручування тощо) та визначає інтерфейс скидання, кроку, спостереження й завершення браузерного середовища,
  3. веббраузер Chromium

де віддалене ізольоване середовище містить середовище та браузер, як показано нижче.

Ви легко можете спробувати це, виконавши кілька кроків, описаних у прикладі. Запустіть Inference Endpoint із Muse Spark Open (NVFP4 також добре працює!), додайте URL-адресу кінцевої точки як змінну середовища, опублікуйте сервер OpenEnv у Spaces і також укажіть його, після чого можна запускати агентний цикл. Muse Spark Open бачить попередні дії, системний запит, URL-адресу та знімок екрана браузера, щоб виконати дію, і нічого більше (ні DOM, ні HTML-коду, нічого), тож це справді мультимодальна демонстрація браузера.

Зателефонуйте своєму браузеру

Нарешті, ми хотіли випробувати агентну мультимодальність Spark на межі можливостей, тому створили цей простір, який поєднує аудіо-, візуальні та агентні властивості моделі в браузерному агенті. Ми надаємо моделі загальний опис потрібної речі, а вона взаємодіє з інтегрованим браузером, щоб знайти варіанти на Amazon.

Muse Spark Open приймає голосовий запит і міркує над типом товару, який відповідає опису, шукає його на Amazon і вибирає найвідповідніший за заданими критеріями.

Підсумки

Muse Spark Open — повнорозмірна модель із відкритими вагами серії Muse. Почніть із контрольної точки BF16 або NVFP4 чи спробуйте одну з чудових квантизованих версій llama.cpp. Якщо ви створите щось за допомогою Muse Spark Open, поділіться цим і розкажіть нам у обговореннях репозиторію.

Моделі, згадані в цій статті 2

Набори даних, згадані в цій статті 1

Статті, згадані в цій статті 1

Колекції, згадані в цій статті 1

Спільнота

Завантажуйте зображення, аудіо та відео, перетягуючи їх у текстове поле, вставляючи або натискаючи тут.
Натисніть або вставте сюди, щоб завантажити зображення

· Зареєструйтеся або увійдіть, щоб залишити коментар

Моделі, згадані в цій статті 2

Набори даних, згадані в цій статті 1

Статті, згадані в цій статті 1

Колекції, згадані в цій статті 1

Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.

Вперше опубліковано виданням Hugging Face

Читати оригінал на Hugging Face ↗

Текст і зображення належать Hugging Face і наводяться тут із зазначенням авторства та посиланням на оригінальну публікацію.

← До новин

Ще новини

Усі останні новини