/ Модель

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

Контекст
32 768 токенов
Параметры
7,1 млрд
Размер весов
18,8 ГБ
Лицензия
Apache 2.0
Архитектура
sparsetral · MoE
Опубликована
15 фев 2024

sparsetral-16x7B-v2-SPIN_iter0

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

Экспериментально дообученная на SPIN и DPO разговорная модель Sparsetral для генерации текста и ответов на инструкции.

19скачиваний за 30 дней8лайковвеса обновлены18 фев 2024

Бенчмарки

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

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

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

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

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

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

sparsetral-16x7B-v2-SPIN_iter0 — разговорная языковая модель serpdotai, полученная дообучением sparsetral-16x7B-v2 методом SPIN на OpenHermes-2.5 с добавлением примеров традиционного DPO. Это первая итерация эксперимента; автор планировал продолжать обучение в следующих итерациях. Модель предназначена для генерации текста и диалоговых ответов общего назначения, включая следование инструкциям.

Архитектура — Sparsetral, смесь экспертов на базе MistralForCausalLM; в метаданных указано 7,1 млрд параметров и контекст 32 768 токенов. Карточка описывает обучение QLoRA с последовательностями длиной 4096 токенов и формат диалога с ролями system, user и assistant. Указан английский язык. Модель распространяется по лицензии Apache-2.0.

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

  • генерация ответов в диалоговом интерфейсе
  • ответы на инструкции на английском языке
  • создание и продолжение текстов
  • эксперименты с дообучением MoE-моделей методом SPIN

Ограничения

Это iteration_0 экспериментального обучения, и автор отмечает, что планирует дальнейшие итерации; карточка не приводит сравнительных оценок качества. В описании обучения указана длина последовательности 4096 токенов, хотя нативный контекст в метаданных составляет 32 768 токенов.

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

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

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

Также подходит для

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

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

Открыть на Hugging Face

This model is sparsetral-16x7B-v2 further tuned utilizing SPIN on OpenHermes-2.5 mixed with traditional DPO samples. This is iteration_0, plan to keep making iterations until improvements stop.

Kuru~ Kuru~ Kuru~ Kuru~

Training

  • 8x A6000s
  • Base model is sparsetral-16x7B-v2
  • Forked version of unsloth for efficient training
  • Sequence Length: 4096
  • Effective batch size: 64
  • Learning Rate: 5e-7 with linear decay (0.1 warmup ratio)
  • Epochs: 2
  • 50k samples (~15k traditional dpo samples, rest SPIN)
  • QLoRA:
    • 256 r and 256 alpha
    • target_modules=[
          "q_proj",
          "k_proj",
          "v_proj",
          "o_proj",
          "gate_proj",
          "up_proj",
          "down_proj",
          "adapter_down",
          "adapter_up",
      ]
      

Prompt Format

<|im_start|>system\n{message}<|im_end|>\n<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("serpdotai/sparsetral-16x7B-v2-SPIN_iter0", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("serpdotai/sparsetral-16x7B-v2-SPIN_iter0", device_map="auto", trust_remote_code=True).eval()

system_str = "<|im_start|>system\n{message}<|im_end|>\n"
user_str = "<|im_start|>user\n{message}<|im_end|>\n"
assistant_str = "<|im_start|>assistant\n{message}<|im_end|>\n"

def construct_prompt(messages):
    prompt = ""
    for message in messages:
        if message["from"] in ["human", "user"]:
            prompt += user_str.format(
                message=message["value"]
            )
        elif message["from"] in ["gpt", "assistant"]:
            prompt += assistant_str.format(
                message=message["value"]
            )
        elif message["from"] in ["system", "instruction"]:
            prompt += system_str.format(
                message=message["value"]
            )
        else:
            raise ValueError(
                f"Unknown message type: {message['from']}"
            )
    return prompt + "<|im_start|>assistant\n"

system = "You are a helpful assistant who will help the user to the best of their ability. If you don't know something, say \"I don't know\""
user = "Are you sentient?"

messages = [
    {"from": "system", "value": system},
    {"from": "user", "value": user},
]

prompt = construct_prompt(messages)
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)
pred = model.generate(**inputs, max_length=4096, do_sample=True, top_k=50, top_p=0.99, temperature=0.9, num_return_sequences=1)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))

Other Information

Paper reference: Parameter-Efficient Sparsity Crafting from Dense to Mixture-of-Experts for Instruction Tuning on General Tasks

Original Paper repo

Forked repo with mistral support (sparsetral)

If you are interested in faster inferencing, check out our fork of vLLM that adds sparsetral support

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

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

GPU в ailist

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

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
modeling_sparsetral.MistralForCausalLM
Ревизия весов
05ea159

0 моделей