Instructions to use Vladniag/Bormotuha with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Vladniag/Bormotuha with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Vladniag/Bormotuha")# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Vladniag/Bormotuha") model = AutoModelForCausalLM.from_pretrained("Vladniag/Bormotuha", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Vladniag/Bormotuha with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Vladniag/Bormotuha" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vladniag/Bormotuha", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Vladniag/Bormotuha
- SGLang
How to use Vladniag/Bormotuha with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Vladniag/Bormotuha" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vladniag/Bormotuha", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Vladniag/Bormotuha" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vladniag/Bormotuha", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use Vladniag/Bormotuha with Docker Model Runner:
docker model run hf.co/Vladniag/Bormotuha
Модель для генерации русского текста Bormotuha
Описание модели
Это модель для каузального языкового моделирования (causal language modeling), созданная на основе архитектуры GPT-2 и обученная на выборке русских текстов из Wikipedia и синтетических данных. Модель предназначена для генерации связного текста на русском языке.
Ключевая особенность: модель имеет нестандартную для обычного GPT-2 архитектуру. При стандартной глубине (12 слоев) в моей модели используется 42 слоя трансформера, что делает ее значительно глубже, но с меньшей размерностью эмбеддингов (256) и меньшим словарем.
Предполагаемое использование (Intended uses & limitations)
- Использование: Генерация текста, продолжение промптов, исследовательские цели в области NLP для русского языка.
- Ограничения: Модель обучена на ограниченном наборе данных. Качество генерации может быть нестабильным на темах, не представленных в обучающей выборке. Может генерировать предвзятый или некорректный контент, так как это свойственно всем языковым моделям.
Как использовать (How to use)
Модель обучена на следующих шаблонах:
- Ответить на вопрос [кратко/развёрнуто/с использованием контекста][]ВопросОтвет
- Написать заметку, эссе по плану [от первого лица]План из трёх пунктов
Текст - Определить объект [с акцентом на следующие аспекты][аспект1, аспект2,..]ОбъектОпределение
- Поддержать диалогРепликаРеплика...до 5 шагов
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer, StoppingCriteria, StoppingCriteriaList
from threading import Thread
checkpoint_path = "./Bormotuha-H0"
model = AutoModelForCausalLM.from_pretrained(
checkpoint_path,
device_map="cuda", #cuda
dtype="float16" #auto
).half()
tokenizer = AutoTokenizer.from_pretrained(checkpoint_path, use_fast=True)
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
class StopOnTokens(StoppingCriteria):
def __init__(self, stop_token_ids_list):
self.stop_token_ids_list = stop_token_ids_list
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
# Проверяем каждый набор стоп-токенов
for stop_ids in self.stop_token_ids_list:
# Убеждаемся, что сгенерировано достаточно токенов для сравнения
if len(input_ids[0]) >= len(stop_ids):
if input_ids[0][-len(stop_ids):].tolist() == stop_ids:
return True
return False
stop_words = ["</answer>"]
stop_ids_list = [tokenizer.encode(word, add_special_tokens=False) for word in stop_words]
stopping_criteria = StoppingCriteriaList([StopOnTokens(stop_ids_list)])
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=False)
test_input=[]
# Краткие ответы
test_input.append("<system>Ответить на вопрос кратко</system><newline><question>Чем знаменит Аристотель?</question><newline><answer>")
# Подробные ответы
test_input.append("<system>Ответить на вопрос</system><newline><question>Что такое русский космизм и есть ли связь между ним и космической программой СССР?</question><newline><answer>")
for i, prompt in enumerate(test_input):
question=prompt.split("</system>")[1].split("</")[0]
question=question.replace("<question>","").replace("<newline>","\n")
print(f"\n\nЗадание {i}: {question}\n")
processed_input = "▁" + prompt.lstrip().replace(" ", "▁").replace("\n", "<newline>")
inputs = tokenizer(
processed_input,
return_tensors="pt",
add_special_tokens=False,
).to(model.device)
generation_kwargs = dict(
inputs,
streamer=streamer,
max_new_tokens=1024,
do_sample=True,
#temperature=0.5,
top_p=0.6,
top_k=40,
repetition_penalty=1.3,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
stopping_criteria=stopping_criteria
)
thread = Thread(target=model.generate, kwargs=generation_kwargs)
thread.start()
full_response = ""
for new_text in streamer:
# Ваша специфичная постобработка для каждого кусочка текста
decoded_chunk = new_text.replace("▁", " ").replace("<newline>", "\n").replace("<space>", " ")
if decoded_chunk in stop_words:
break
print(decoded_chunk, end="", flush=True)
Архитектура и гиперпараметры
Модель реализована на основе класса GPT2LMHeadModel со следующими ключевыми параметрами: Архитектура: GPT-2 (трансформер-декодер) Функция активации: gelu_new Количество слоев (n_layer): 42 Размер эмбеддингов (n_embd): 256 Количество голов внимания (n_head): 8 Размер внутреннего слоя FFN (n_inner): 1024 Максимальный контекст (n_ctx / n_positions): 1536 токенов Размер словаря (vocab_size): 6002 Dropout (attn_pdrop, embd_pdrop, resid_pdrop): 0.1 для регуляризации Инициализация (initializer_range): 0.02
Данные для обучения Источники: Русскоязычные тексты из Wikipedia, CullturaX, IlyaGusev/gazeta и синтетические данные полученные обработкой исходных данных пакетом NLTK и с помощью LLM yandex/YandexGPT-5-Lite-8B-instruct
- Downloads last month
- 68