/ Модель

Характеристики

Контекст
8 192 токена
Параметры
152 млн
Лицензия
Apache 2.0
Архитектура
llama · dense
Опубликована
7 янв 2024

MuPT-v0-8192-190M

Генерация текстаТекст → текст3 профессии

Предварительно обученная Llama-подобная модель для генерации символической музыки, включая мелодии, аккомпанемент и многодорожечные композиции.

338скачиваний за 30 дней0лайковвеса обновлены18 янв 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

MuPT-v0-8192-190M — предварительно обученная модель семейства SMuPT для генерации символической музыки. Разработчики обучали модели SMuPT на крупном наборе символических музыкальных произведений разных жанров и стилей; README описывает миллионы монофонических и полифонических фрагментов. Вариант использует архитектуру Llama 2, а метаданные указывают класс LlamaForCausalLM и около 151,6 млн параметров.

Модель предназначена для генерации мелодий, аккомпанемента и многодорожечных музыкальных последовательностей. Она принимает последовательность токенов как текстовый ввод и предсказывает продолжение; контекст составляет 8192 токена. Репозиторий содержит веса PyTorch, лицензия — Apache-2.0. README указывает, что описанный способ запуска основан на Megatron-LM и что поддержка формата Hugging Face планировалась; фактическая совместимость может зависеть от версии кода и формата чекпойнта.

Сценарии применения

  • генерация продолжения музыкальной последовательности
  • создание мелодий в символическом формате
  • генерация аккомпанемента к заданной мелодии
  • создание многодорожечных музыкальных композиций

Ограничения

Модель генерирует символическое представление музыки, а не готовый аудиосигнал. README описывает запуск через Megatron-LM и отмечает, что поддержка формата Hugging Face планировалась; совместимость с конкретной средой требует проверки.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

SMuPT: Symbolic Music Generative Pre-trained Transformer

SMuPT is a series of pre-trained models for symbolic music generation. It was trained on a large-scale dataset of symbolic music, including millions of monophonic and polyphonic pieces from different genres and styles. The models are trained with the LLama2 architecture, and can be further used for downstream music generation tasks such as melody generation, accompaniment generation, and multi-track music generation.

  • 09/01/2024: a series of pre-trained SMuPT models are released, with parameters ranging from 110M to 1.3B.

Model architecture

The details of model architecture of SMuPT-v0 are listed below:

NameParametersTraining Data(Music Pieces)Seq LengthHidden SizeLayersHeads
SMuPT-v0-8192-110M110M7M x 5.8 epochs81927681212
SMuPT-v0-8192-345M345M7M x 4 epochs819210242416
SMuPT-v0-8192-770M770M7M x 3 epochs819212803620
SMuPT-v0-8192-1.3B1.3B7M x 2.2 epochs819215364824

Model Usage

There are several ways to use our pre-trained SMuPT models, we now the usage based on Megatron-LM. Huggingface format will be supported soon.

Before starting, make sure you have setup the relevant environment and codebase.

# pull Megatron-LM codebase
mkdir -p /path/to/workspace && cd /path/to/workspace
git clone https://github.com/NVIDIA/Megatron-LM.git

# download the pre-trained SMuPT models checkpoint and vocab files from Huggingface page
mkdir -p /models/SMuPT_v0_8192_1.3B && cd /models/SMuPT_v0_8192_1.3B
wget -O model_optim_rng.pt https://huggingface.co/m-a-p/SMuPT_v0_8192_1.3B/resolve/main/model_optim_rng.pt?download=true
wget -O newline.vocab https://huggingface.co/m-a-p/SMuPT_v0_8192_1.3B/resolve/main/newline.vocab?download=true
wget -O newline.txt https://huggingface.co/m-a-p/SMuPT_v0_8192_1.3B/resolve/main/newline.txt?download=true

We recommend using the latest version of NGC's PyTorch container for SMuPT inference. See more details in Megatron-LM

# pull the latest NGC's PyTorch container, mount the workspace directory and enter the container
docker run --gpus all -it --name megatron --shm-size=16g -v $PWD:/workspace -p 5000:5000 nvcr.io/nvidia/pytorch:23.11-py3 /bin/bash

Once you enter the container, you can start a REST server for inference.

#!/bin/bash
# This example will start serving the 1.3B model.
export CUDA_DEVICE_MAX_CONNECTIONS=1

DISTRIBUTED_ARGS="--nproc_per_node 1 \
                --nnodes 1 \
                --node_rank 0 \
                --master_addr localhost \
                --master_port 6000"

CHECKPOINT=/path/to/model/checkpoint/folder
VOCAB_FILE=/path/to/vocab/file
MERGE_FILE=/path/to/merge/file

MODEL_SIZE="1.3B"
if   [[ ${MODEL_SIZE} == "110M" ]];   then HIDDEN_SIZE=768;  NUM_HEAD=12; NUM_QUERY_GROUP=12; NUM_LAYERS=12; FFN_HIDDEN_SIZE=3072; NORM_EPS=1e-5;
elif [[ ${MODEL_SIZE} == "345M" ]];   then HIDDEN_SIZE=1024;  NUM_HEAD=16; NUM_QUERY_GROUP=16; NUM_LAYERS=24; FFN_HIDDEN_SIZE=4096; NORM_EPS=1e-5;
elif [[ ${MODEL_SIZE} == "770M" ]];   then HIDDEN_SIZE=1280;  NUM_HEAD=20; NUM_QUERY_GROUP=20; NUM_LAYERS=36; FFN_HIDDEN_SIZE=5120; NORM_EPS=1e-5;
elif [[ ${MODEL_SIZE} == "1.3B" ]];   then HIDDEN_SIZE=1536;  NUM_HEAD=24; NUM_QUERY_GROUP=24; NUM_LAYERS=48; FFN_HIDDEN_SIZE=6144; NORM_EPS=1e-5;
else echo "invalid MODEL_SIZE: ${MODEL_SIZE}"; exit 1
fi
MAX_SEQ_LEN=8192
MAX_POSITION_EMBEDDINGS=8192

pip install flask-restful

torchrun $DISTRIBUTED_ARGS tools/run_text_generation_server.py   \
    --tensor-model-parallel-size 1  \
    --pipeline-model-parallel-size 1  \
    --num-layers ${NUM_LAYERS}  \
    --hidden-size ${HIDDEN_SIZE}  \
    --ffn-hidden-size ${FFN_HIDDEN_SIZE} \
    --load ${CHECKPOINT}  \
    --group-query-attention \
    --num-query-groups ${NUM_QUERY_GROUP} \
    --position-embedding-type rope \
    --num-attention-heads ${NUM_HEAD}  \
    --max-position-embeddings ${MAX_POSITION_EMBEDDINGS}  \
    --tokenizer-type GPT2BPETokenizer  \
    --normalization RMSNorm \
    --norm-epsilon ${NORM_EPS} \
    --make-vocab-size-divisible-by 1 \
    --swiglu \
    --use-flash-attn \
    --bf16  \
    --micro-batch-size 1  \
    --disable-bias-linear \
    --no-bias-gelu-fusion \
    --untie-embeddings-and-output-weights \
    --seq-length ${MAX_SEQ_LEN}  \
    --vocab-file $VOCAB_FILE  \
    --merge-file $MERGE_FILE  \
    --attention-dropout 0.0 \
    --hidden-dropout 0.0 \
    --weight-decay 1e-1 \
    --clip-grad 1.0 \
    --adam-beta1 0.9 \
    --adam-beta2 0.95 \
    --adam-eps 1e-8 \
    --seed 42

Use CURL to query the server directly, note that the newline token \n is represented by <n> in the vocabulary, so we need to replace the newline token with <n> in both the prompt and the generated tokens.

curl 'http://localhost:6000/api' -X 'PUT' -H 'Content-Type: application/json; charset=UTF-8'  -d '{"prompts":["X:1<n>L:1/8<n>Q:1/8=250<n>M:3/4<n>K:A<n>EF |\"A\""], "tokens_to_generate":4096}'

Processed Output:

X:1
L:1/8
Q:1/8=250
M:3/4
K:A
EF |"A" A3 AGF | E3 F A2 | Aa a2 gf |"E" ef ef ed |"A" c2 A2 A2 |"A" E3 FEF |"E" G2 Ea gf | 
"E" e4 ef | ga g2 f2 | ec c2 e2 |"D" a2 gf ed |"A" c2 A2 A2 |"A" E4 EF |"A" A3 AGF | 
"E" E3 F A2 =G2 |"D" FA de fa |"D" g2 f2 g2 |"A" a2 e2 e2 |"Bm" f2 d2 d2 |"E" ef ga b2- | 
 b2 g2 g2 | a4 a2 |"D" a2 ba gf |"A" e2 c2 c2 |"D" f4 f2 |"A" e4 a2 |"D" a2 ba gf |"E" e2 fe d=c | 
"E" B2 e2 e2 |"E" E4 EF |"A" A3 AGF | E3 F A2 | Aa a2 A2 |"F#m" =G2 F2 EF |"A" A4 A2 |"E" E3 FEF | 
"A" C3 D E2 |"E" B2 E2 E2 |"A" A4 ||

Once you encode the generated tokens into audio, you will hear the following music.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
LlamaForCausalLM
Ревизия весов
be1a482

0 моделей