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: мултимодален модел с отворени тегла и архитектура mixture-of-experts от Meta
Публикувано 15 октомври 2026 г.
Актуализиране в GitHub
Muse Spark Open е модел с отворени тегла от Meta. Моделът с архитектура mixture of experts обединява текст, изображения, аудио и видео в модел с приблизително 816 милиарда параметъра, около 42 милиарда активни за всеки токен и контекстен прозорец до един милион токена. Той генерира текст, като предоставя на разработчиците общ интерфейс за задаване на въпроси относно различни видове входни данни.

След Muse Glimmer Muse Spark Open въвежда архитектура mixture-of-experts в много по-голям мащаб и е най-способният американски модел с отворени тегла досега.

Meta обучи Muse Spark Open за агентно програмиране: четене на кодова база, писане и отстраняване на грешки в код и извикване на инструменти. Моделът приема също изображения, аудио и видео като вход, така че може да прочете екранна снимка, да изслуша гласова бележка или да гледа запис на екрана, докато работи по кода ви. В тази публикация ще покажем как да го стартирате, как да го дообучите и какво създадохме с него. Вижте всички модели тук.

Общи възможности и архитектура

Meta описва Muse Spark Open като модел, оптимизиран за програмиране и обучен върху реални работни процеси на разработчици, например рефакториране на множество файлове и продължителни сесии за отстраняване на грешки. Muse Spark Open е модел, фокусиран върху агентни задачи, който планира, действа, наблюдава и се самокоригира при продължителни задачи, включително сърфиране в интернет с изображения.

Функция Muse Spark Open
Размер на модела ~816 млрд. общо параметри; ~42 млрд. активни за токен
Маршрутизиране към експерти 256 експерти на MoE слой; 8 избрани за токен
Входове Текст, изображения, аудио и видео
Изход Текст
Контекстен прозорец До 1 млн. токена
Формати на checkpoint-ите BF16 и NVFP4

Хранилищата с checkpoint-и са Muse-Spark-Open-816B-A42B и Muse-Spark-Open-816B-A42B-NVFP4.

model diagram

Muse Spark Open е пълноразмерният модел от серията модели Muse. Muse Glimmer, който Meta представи през август, е малък плътен модел от същата серия, подходящ за локално изпълнение. И двата модела използват един и същ токенизатор и речник. Шаблонът за чат следва шаблона на Muse Glimmer, с допълнения за новите модалности. При Muse Spark Open входното embedding представяне и изходният слой са отделни матрици от приблизително 1,66 млрд. параметъра всяка.

Mixture of Experts

Езиковият модел има 62 слоя и скрита размерност 8192. Всеки слой има 128 глави за заявки и 16 глави за ключове и стойности (grouped-query attention). Всяка глава има 64 измерения. Блокът за внимание има изходен гейт и слой за нормализация на изхода. Моделът прилага нормализация и към заявките, и към ключовете (QK-norm). Всеки блок комбинира входа и изхода си чрез научен остатъчен гейт, а не чрез обикновена сума.

Muse Glimmer използва една плътна feed-forward мрежа във всеки слой. Muse Spark Open заменя тази плътна мрежа с блок Mixture-of-Experts (MoE). Всеки MoE блок има 256 експерти, а маршрутизаторът избира 8 експерта за всеки токен. Всеки експерт е feed-forward мрежа, която проектира от 8192 към 4096 измерения и обратно към 8192, след което прилага собствена нормализация към изхода си. Експертите съдържат около 97% от общия брой параметри на модела.

За всеки токен се изпълняват само 8 експерта, така че моделът изчислява всеки токен с приблизително 42 млрд. параметъра. Всичките 256 експерта остават в паметта, затова внедряването изисква паметта на модел с 816 млрд. параметъра, но работи със значително по-висока скорост като модел с 42 млрд. параметъра. BF16 checkpoint-ът е приблизително 1,5 TB във формат safetensors. NVFP4 checkpoint-ът съхранява параметрите с 4-битова точност и пренебрежима загуба на точност, специално за графични процесори NVIDIA Blackwell. В transformers BF16 checkpoint-ът работи на 4 възела с по 8 H200 GPU чрез tensor parallelism (TP=32), а NVFP4 работи на един B200 възел. Ако искате да внедрите Muse Spark Open, вижте рецептите за llama.cpp, vLLM и SGLang по-долу.

Енкодер за възприятие

Енкодерът за възприятие преобразува изображения и видео кадри в токени за езиковия модел, също като при Muse Glimmer. Енкодерът има 1,8 млрд. параметъра, 50 слоя, скрита размерност 1536 и 16 глави за внимание. Той разделя всяко изображение на пачове 14×14 и създава характеристики с 4096 измерения. Информацията за позицията идва от научени абсолютни embedding-и и 2D RoPE. Feed-forward мрежата във всеки слой използва LayerNorm и GELU. Всеки четвърти слой и последният слой използват пълно внимание, а останалите слоеве използват разредено внимание.

image pipeline diagram

Muse Glimmer 30B използва енкодер със същата архитектура. Дизайнът следва разработката Perception Encoder на Meta. Видео входът преминава през същия енкодер като изображенията.

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

audio diagram

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

Дълъг контекст

Контекстният прозорец при извеждане е 1 млн. токена. Конфигурацията задава max_position_embeddings на 1 048 576. Това включва токени за изображения, видео и аудио в същия прозорец като текста.

Grouped-query attention поддържа KV кеша малък за модел с такъв размер. Всеки токен добавя 2 × 16 глави × 64 измерения × 62 слоя = 126 976 стойности към кеша. При BF16 това е около 250 KB на токен и около 266 GB за пълен контекст от 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 в системния prompt.

messages = [
    {"role": "system", "content": "You should only answer with a number."},
    {"role": "user", "content": "What is 17 * 23?"},
]

inputs = processor.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
    reasoning_effort="high", 
).to(model.device).to(model.dtype)

output = model.generate(**inputs, max_new_tokens=2000)
generated_tokens = output[0][inputs["input_ids"].shape[1] :]
print(processor.decode(generated_tokens, skip_special_tokens=False))

Изображения и текст

Процесорът на Muse Spark Open разширява всеки маркер за изображение до необходимия брой пач токени за обработеното изображение, оградени от маркери за границите на изображението. Това разширяване запазва подравняването на текстовите позиции с визуалните характеристики, подадени към модела. Процесорът обработва и множество изображения в един prompt.

Извеждане от видео

Видео prompt-овете включват както времеви маркери на кадрите, така и визуално съдържание. Процесорът обработва видеа с аудио (което е подобрение спрямо Muse Glimmer благодарение на аудио енкодера). Процесорът намалява честотата на кадрите и аудиото, за да ги синхронизира. По подразбиране видеата се семплират с 2 FPS, с ограничение до 96 кадъра. Можете да промените това, като зададете FPS на видео процесора:

Като общо правило видеата представляват кадри във времева последователност и колкото повече намалявате честотата на семплиране, толкова повече кадри между конкретни събития ще бъдат загубени. Затова трябва да поддържате висок FPS, ако искате по-точни резултати. Съществува обаче компромис, тъй като ще е необходима повече памет и ще се увеличи латентността при предварителното запълване. Кадрите се преплитат с текстов вход, съдържащ времеви маркери (например „Time: 3.5s“). За да подавате видеа с аудио, предайте load_audio_from_video=True на apply_chat_template.

Запазете метаданните на видеото при подготовка на входовете с return_metadata=True, за да може процесорът да зададе правилната честота на кадрите.

Извеждане от аудио

Аудио кулата на Muse Spark Open приема необработена форма на вълната. Процесорът очаква моно аудио с честота 24 kHz и допълва формата на вълната до кратно на 1 920 семпъла, което съответства на едно аудио embedding представяне на всеки 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, за да разговаряте чрез вградения WebUI. От уеб интерфейса можете да добавяте аудио и изображения за извеждане и да настройвате параметъра за разсъждение.
Имайте предвид, че изключването на разсъждението не е възможно при Muse Spark Open, затова оставете разсъждението на модела на „low“, ако искате да използвате по-малко токени за по-лесна задача.
Тествахме квантизираните версии на Mac M3 Ultra (512 GB). Квантизацията с 2 бита, калибрирана с imatrix, работи със скорост 18 токена/секунда, като оставя достатъчно свободно място за KV кеша (моделът използва 304 GB).

Можете да отправяте заявки към сървъра и по следния начин. Вижте справочника на API за мултимодалност, извиквания на инструменти и други възможности.

Екипът на llama.cpp предоставя различни квантизирани версии. Тествахме Q2_K, Q4_K_S и Q_8 върху Apple Silicon чипове. Можете да стартирате всяка квантизирана версия, като добавите нейния идентификатор като суфикс, llama serve -hf ggml-org/Muse-Spark-Open-816B-A42B:Q2_K.

SGLang

Интеграцията на Muse Spark Open със SGLang поддържа текстови, графични, аудио и видео входове. Референтната конфигурация NVFP4 работи на четири GB300 GPU.

От средата за интеграция със SGLang изтеглете checkpoint-а от Hugging Face Hub и стартирайте сървъра:

Checkpoint-ът включва шаблона за чат, който подаваме изрично. Launcher-ът конфигурира анализаторите за разсъждение и извикване на инструменти.

Изпратете заявка чрез съвместимия с OpenAI API:

Отговорът разделя следата на разсъждението в reasoning_content от финалния отговор в content.

vLLM

Референтната интеграция на Muse Spark Open за vLLM поддържа текстови и графични входове с NVFP4 checkpoint, който изисква GPU от серията Blackwell.

След като инсталирате референтния плъгин и зависимостите му, изтеглете checkpoint-а от Hugging Face Hub и стартирайте сървъра:

Тази конфигурация задава контекст за обслужване от 128K токена. Плъгинът предоставя имплементацията на модела, loader-а за checkpoint-а и анализаторите за разсъждение и извикване на инструменти.

Изпратете заявка със същия идентификатор на модел от Hub:

MLX

Muse Spark Open е наличен днес в oMLX и mlx-lm. Квантизираните oQ версии, оптимизирани за oMLX, са налични в 3-битов и 4-битов вариант и са готови за незабавна употреба.

Тествахме квантизацията oQ3e на M3 Ultra (512 GB). Моделът заема около 344 GB, оставяйки място за KV кеша, и работи с около 225 токена/секунда при предварително запълване и 21 токена/секунда при генериране с prompt от 1024 токена и 128 генерирани токена.

След като изтеглите модела чрез интерфейса на oMLX, можете да разговаряте с него във вградения чат интерфейс. От него можете да добавяте изображения и да променяте в движение усилието за разсъждение — от low до xhigh. Разсъждението на модела се показва като свиваем блок за мислене, отделен от финалния отговор.

Имайте предвид, че разсъждението не може да бъде изключено, а настройката по подразбиране (Auto) използва xhigh. Задайте „low“, ако искате да използвате по-малко токени за по-лесни задачи. omlx

Езиковият модел е наличен и в този PR на официалното хранилище mlx-lm. Можете да го стартирате със същата висококачествена квантизация oQ3e така:

Това е голям модел — дори 3-битовата квантизация изисква повече от 256 GB RAM, както беше обяснено по-горе. Можете също да стартирате разпределено извеждане на няколко компютъра; за подробности вижте документацията.

Внедряване на Muse Spark Open с Inference Endpoints

Можете да внедрите Muse Spark Open в Inference Endpoints с предварително валидирана SGLang рецепта за варианта NVFP4, който работи или на 8 × NVIDIA RTX Pro 6000 98 GB с дължина на контекста 131072, или на 8 × NVIDIA H200 141 GB, ако искате дължина на контекста 1048576.

За да го внедрите, изпълнете една команда чрез Hugging Face CLI:

Или отворете endpoints.huggingface.co/new/meta-models/Muse-Spark-Open-816B-A42B-NVFP4 и изберете Create Endpoint.

Endpoint-ът предоставя съвместим с OpenAI API, включващ както Chat Completions API на /v1/chat/completions, така и Responses API на /v1/responses.

Всеки OpenAI-съвместим клиент работи със същия URL и вашия Hugging Face токен като API ключ.

Дообучаване с TRL Quentin Gallouédec Ben Burtenshaw

Можете да дообучите пълния checkpoint от 816 млрд. параметъра с TRL SFTTrainer. Този раздел показва как дообучихме пълния checkpoint от 816 млрд. параметъра с TRL на 8 възела с по 8 H100 GPU. Рецептата обучава LoRA адаптери върху слоевете за внимание. Експертите остават замразени. Пълният скрипт е в примерите на TRL.

Първо трябва да разделим модела между 64 GPU устройства. Поради големия размер на модела трябва да го паралелизираме по няколко оси. Паралелизираме тензорите, данните и експертите чрез DistributedConfig, който указва на transformers как да раздели модела при зареждане:

В горния фрагмент fsdp_size=64 разделя модела между всичките 64 GPU с FSDP2, а ep_size=8 разделя 256-те експерта на всеки слой на 8 групи. Transformers изпраща всеки токен към GPU, който съдържа съответния експерт, така че всеки GPU обучава своята част от batch-а.

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

Основните части тук са packing=True, което обединява примерите в последователности от 2048 токена без padding. Блоково-диагонална маска запазва разделението между примерите. save_only_model=True записва адаптера, без състоянието на оптимизатора, тъй като trainer-ът не може да възобнови модел, който е бил разделен при зареждането. 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 coding agent, за да генерираме и итеративно подобряваме 3D ресурси в Three.js. Можете да намерите prompt-а тук; тъй като моделът е квантизиран, е необходимо малко повече насочване. Получаваме 18 TPS на llama.cpp върху Mac Ultra.

Първоначално описваме ресурса, а 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

като отдалечената sandbox среда съдържа средата и браузъра, както е показано по-долу.

Можете лесно да изпробвате това чрез няколко стъпки, описани в примера. Стартирайте Inference Endpoint с Muse Spark Open (NVFP4 също работи добре!), добавете URL адреса на endpoint-а като променлива на средата, публикувайте OpenEnv сървъра си в Spaces и го посочете, след което можете да стартирате агентния цикъл. Muse Spark Open вижда предишните действия, системния prompt, URL адреса и екранната снимка на браузъра, за да предприеме действие, и нищо друго (без DOM, без HTML код, без друго съдържание), така че това е наистина мултимодална демонстрация на браузър.

Извикайте браузъра си

Накрая искахме да изпробваме агентната мултимодалност на Spark до пределите ѝ, затова създадохме това пространство, което комбинира аудио, изображения и агентни възможности на модела в браузърен агент. Даваме на модела общо описание на нещо, от което се нуждаем, и той взаимодейства с интегрирания браузър, за да намери варианти в Amazon.

Muse Spark Open приема гласовия вход и разсъждава върху типа продукт, който отговаря на описанието, търси го в Amazon и избира най-подходящия въз основа на критериите.

Заключение

Muse Spark Open е пълноразмерен модел с отворени тегла от серията Muse. Започнете с BF16 или NVFP4 checkpoint-а или опитайте някоя от отличните llama.cpp quants. Ако създадете нещо с Muse Spark Open, споделете го и ни разкажете за него в дискусиите на хранилището.

Модели, споменати в тази статия 2

Набори от данни, споменати в тази статия 1

Статии, споменати в тази статия 1

Колекции, споменати в тази статия 1

Още статии от нашия блог

Общност

Регистрирайте се или влезте, за да коментирате

Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.

Първоначално публикувано от Hugging Face на

Прочетете оригинала в Hugging Face ↗

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

← Към новините

Още новини

Всички последни новини