/ Модель

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

Контекст
131 072 токена
Параметры
7,5 млрд
Размер весов
16,1 ГБ
Лицензия
Llama 3
Архитектура
llama · dense
Базовая модель
Meta-Llama-3.1-8B-Instruct
Библиотека
transformers
Опубликована
10 сен 2024

Romulus-cpt-Llama-3.1-8B-v0.1-Instruct

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

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

49скачиваний за 30 дней3лайкавеса обновлены11 сен 2024

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Romulus-cpt-Llama-3.1-8B-v0.1-Instruct — модель Louis Brulé Naudet для продолжительного предварительного обучения на французских юридических текстах. Она основана на Meta-Llama-3.1-8B-Instruct и предназначена прежде всего как отправная точка для последующего дообучения на размеченных данных для задач французского права. Модель содержит 7,5 млрд параметров, использует архитектуру Llama и формат Safetensors; родной контекст составляет 131 072 токена.

Обучающий корпус включает около 34,9 млн токенов. Несмотря на имя с суффиксом Instruct, автор предупреждает, что модель не выровнена для генерации пригодного к использованию текста и требует дополнительной настройки для целевых задач. Репозиторий указывает лицензию Llama 3.1. Модель подходит для экспериментов и подготовки специализированных юридических ассистентов на французском языке, но качество ответов для конкретного сценария зависит от последующего дообучения.

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

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

Ограничения

Модель не выровнена для генерации готового к использованию текста; автор рекомендует дообучить её на размеченных данных под целевые задачи. Качество юридических ответов без такой настройки не гарантируется.

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

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

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

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

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

Открыть на Hugging Face

Romulus, continually pre-trained models for French law.

Romulus is a series of continually pre-trained models enriched in French law and intended to serve as the basis for a fine-tuning process on labeled data. Please note that these models have not been aligned for the production of usable text as they stand, and will certainly need to be fine-tuned for the desired tasks in order to produce satisfactory results.

The training corpus is made up of around 34,864,949 tokens (calculated with the meta-llama/Meta-Llama-3.1-8B-Instruct tokenizer).

Hyperparameters

The following table outlines the key hyperparameters used for training Romulus.

ParameterDescriptionValue
max_seq_lengthMaximum sequence length for the model4096
load_in_4bitWhether to load the model in 4-bit precisionFalse
model_namePre-trained model name from Hugging Facemeta-llama/Meta-Llama-3.1-8B-Instruct
rRank of the LoRA adapter128
lora_alphaAlpha value for the LoRA module32
lora_dropoutDropout rate for LoRA layers0
biasBias type for LoRA adaptersnone
use_gradient_checkpointingWhether to use gradient checkpointingunsloth
train_batch_sizePer device training batch size8
gradient_accumulation_stepsNumber of gradient accumulation steps8
warmup_ratioWarmup steps as a fraction of total steps0.1
num_train_epochsNumber of training epochs1
learning_rateLearning rate for the model5e-5
embedding_learning_rateLearning rate for embeddings1e-5
optimOptimizer used for trainingadamw_8bit
weight_decayWeight decay to prevent overfitting0.01
lr_scheduler_typeType of learning rate schedulerlinear

Training script

Romulus was trained using Unsloth on a Nvidia H100 Azure EST US instance provided by the Microsoft for Startups program from this script:

# -*- coding: utf-8 -*-
import os

from typing import (
    Dict,
)

from datasets import load_dataset
from unsloth import (
    FastLanguageModel,
    is_bfloat16_supported,
    UnslothTrainer,
    UnslothTrainingArguments,
)

max_seq_length = 4096
dtype = None
load_in_4bit = False

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="meta-llama/Meta-Llama-3.1-8B-Instruct",
    max_seq_length=max_seq_length,
    dtype=dtype,
    load_in_4bit=load_in_4bit,
    token="hf_token",
)

model = FastLanguageModel.get_peft_model(
    model,
    r=128,
    target_modules=[
        "q_proj",
        "k_proj",
        "v_proj",
        "o_proj",
        "gate_proj",
        "up_proj",
        "down_proj",
        "embed_tokens",
        "lm_head",
    ],
    lora_alpha=32,
    lora_dropout=0,
    bias="none",
    use_gradient_checkpointing="unsloth",
    random_state=3407,
    use_rslora=True,
    loftq_config=None,
)

prompt = """### Référence :
{}
### Contenu :
{}"""

EOS_TOKEN = tokenizer.eos_token

def formatting_prompts_func(examples):
    """
    Format input examples into prompts for a language model.

    This function takes a dictionary of examples containing titles and texts,
    combines them into formatted prompts, and appends an end-of-sequence token.

    Parameters
    ----------
    examples : dict
        A dictionary containing two keys:
        - 'title': A list of titles.
        - 'text': A list of corresponding text content.

    Returns
    -------
    dict
        A dictionary with a single key 'text', containing a list of formatted prompts.

    Notes
    -----
    - The function assumes the existence of a global `prompt` variable, which is a
      formatting string used to combine the title and text.
    - The function also assumes the existence of a global `EOS_TOKEN` variable,
      which is appended to the end of each formatted prompt.
    - The input lists 'title' and 'text' are expected to have the same length.

    Examples
    --------
    >>> examples = {
    ...     'title': ['Title 1', 'Title 2'],
    ...     'text': ['Content 1', 'Content 2']
    ... }
    >>> formatting_cpt_prompts_func(examples)
    {'text': ['<formatted_prompt_1><EOS>', '<formatted_prompt_2><EOS>']}
    """
    refs = examples["ref"]
    texts = examples["texte"]
    outputs = []

    for ref, text in zip(refs, texts):
        text = prompt.format(ref, text) + EOS_TOKEN
        outputs.append(text)

    return {
        "text": outputs,
    }


cpt_dataset = load_dataset(
    "louisbrulenaudet/Romulus-cpt-fr",
    split="train",
    token="hf_token",
)

cpt_dataset = cpt_dataset.map(
    formatting_prompts_func,
    batched=True,
)

trainer = UnslothTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=cpt_dataset,
    dataset_text_field="text",
    max_seq_length=max_seq_length,
    dataset_num_proc=2,
    args=UnslothTrainingArguments(
        per_device_train_batch_size=8,
        gradient_accumulation_steps=8,
        warmup_ratio=0.1,
        num_train_epochs=1,
        learning_rate=5e-5,
        embedding_learning_rate=1e-5,
        fp16=not is_bfloat16_supported(),
        bf16=is_bfloat16_supported(),
        logging_steps=1,
        report_to="wandb",
        save_steps=350,
        run_name="romulus-cpt",
        optim="adamw_8bit",
        weight_decay=0.01,
        lr_scheduler_type="linear",
        seed=3407,
        output_dir="outputs",
    ),
)

trainer_stats = trainer.train()

Citing & Authors

If you use this code in your research, please use the following BibTeX entry.

@misc{louisbrulenaudet2024,
  author =       {Louis Brulé Naudet},
  title =        {Romulus, continually pre-trained models for French law},
  year =         {2024}
  howpublished = {\url{https://huggingface.co/datasets/louisbrulenaudet/Romulus-cpt-fr}},
}

Feedback

If you have any feedback, please reach out at louisbrulenaudet@icloud.com.

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей