YAML Metadata Warning:The pipeline tag "conversational" is not in the official list: text-classification, token-classification, table-question-answering, question-answering, zero-shot-classification, translation, summarization, feature-extraction, text-generation, fill-mask, sentence-similarity, text-to-speech, text-to-audio, automatic-speech-recognition, audio-to-audio, audio-classification, audio-text-to-text, voice-activity-detection, depth-estimation, image-classification, object-detection, image-segmentation, text-to-image, image-to-text, image-to-image, image-to-video, unconditional-image-generation, video-classification, reinforcement-learning, robotics, tabular-classification, tabular-regression, tabular-to-text, table-to-text, multiple-choice, text-ranking, text-retrieval, time-series-forecasting, text-to-video, image-text-to-text, image-text-to-image, image-text-to-video, visual-question-answering, document-question-answering, zero-shot-image-classification, graph-ml, mask-generation, zero-shot-object-detection, text-to-3d, image-to-3d, image-feature-extraction, video-text-to-text, keypoint-detection, visual-document-retrieval, any-to-any, video-to-video, other
Saiga/Mistral 7B, Russian Mistral-based chatbot
Based on Mistral OpenOrca.
This is an adapter-only version.
Merged version: link
Llama.cpp version: link
Colab: link
Training code: link.
import torch
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
MODEL_NAME = "IlyaGusev/saiga_mistral_7b"
DEFAULT_MESSAGE_TEMPLATE = "<s>{role}\n{content}</s>"
DEFAULT_RESPONSE_TEMPLATE = "<s>bot\n"
DEFAULT_SYSTEM_PROMPT = "Π’Ρ β Π‘Π°ΠΉΠ³Π°, ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΡΠΈΡΡΠ΅Π½Ρ. Π’Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π΅ΡΡ Ρ Π»ΡΠ΄ΡΠΌΠΈ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅ΡΡ ΠΈΠΌ."
class Conversation:
def __init__(
self,
message_template=DEFAULT_MESSAGE_TEMPLATE,
system_prompt=DEFAULT_SYSTEM_PROMPT,
response_template=DEFAULT_RESPONSE_TEMPLATE
):
self.message_template = message_template
self.response_template = response_template
self.messages = [{
"role": "system",
"content": system_prompt
}]
def add_user_message(self, message):
self.messages.append({
"role": "user",
"content": message
})
def add_bot_message(self, message):
self.messages.append({
"role": "bot",
"content": message
})
def get_prompt(self, tokenizer):
final_text = ""
for message in self.messages:
message_text = self.message_template.format(**message)
final_text += message_text
final_text += DEFAULT_RESPONSE_TEMPLATE
return final_text.strip()
def generate(model, tokenizer, prompt, generation_config):
data = tokenizer(prompt, return_tensors="pt", add_special_tokens=False)
data = {k: v.to(model.device) for k, v in data.items()}
output_ids = model.generate(
**data,
generation_config=generation_config
)[0]
output_ids = output_ids[len(data["input_ids"][0]):]
output = tokenizer.decode(output_ids, skip_special_tokens=True)
return output.strip()
config = PeftConfig.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
config.base_model_name_or_path,
load_in_8bit=True,
torch_dtype=torch.float16,
device_map="auto"
)
model = PeftModel.from_pretrained(
model,
MODEL_NAME,
torch_dtype=torch.float16
)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, use_fast=False)
generation_config = GenerationConfig.from_pretrained(MODEL_NAME)
print(generation_config)
inputs = ["ΠΠΎΡΠ΅ΠΌΡ ΡΡΠ°Π²Π° Π·Π΅Π»Π΅Π½Π°Ρ?", "Π‘ΠΎΡΠΈΠ½ΠΈ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠ°ΡΡΠΊΠ°Π·, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ°Π½ΠΎ: Π’Π°Π½Ρ, ΠΌΡΡ"]
for inp in inputs:
conversation = Conversation()
conversation.add_user_message(inp)
prompt = conversation.get_prompt(tokenizer)
output = generate(model, tokenizer, prompt, generation_config)
print(inp)
print(output)
print()
print("==============================")
print()
Examples:
User: ΠΠΎΡΠ΅ΠΌΡ ΡΡΠ°Π²Π° Π·Π΅Π»Π΅Π½Π°Ρ?
Saiga: ΠΠ΅Π»Π΅Π½ΡΠΉ ΡΠ²Π΅Ρ Ρ ΡΠ°ΡΡΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ Π½Π°Π»ΠΈΡΠΈΠ΅ΠΌ Π² Π½ΠΈΡ
Ρ
Π»ΠΎΡΠΎΡΠΈΠ»Π»Π° - ΠΏΠΈΠ³ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΡΠΎΡΠΈΠ½ΡΠ΅Π·Π°.
Π€ΠΎΡΠΎΡΠΈΠ½ΡΠ΅Π· - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ°ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ½Π΅ΡΠ³ΠΈΡ ΠΈΠ· ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ³Π»Π΅ΠΊΠΈΡΠ»ΠΎΠ³ΠΎ Π³Π°Π·Π° (CO2), ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Ρ ΠΈΡ
Π² ΠΎΡΠ³Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°Ρ
Π°ΡΠ° ΠΈ ΠΆΠΈΡΡ.
Π₯Π»ΠΎΡΠΎΡΠΈΠ»Π» ΠΏΠΎΠ³Π»ΠΎΡΠ°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ Π²ΠΎΠ»Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ 430-450 Π½ΠΌ (ΡΠΈΠ½ΠΈΠΉ ΡΠ²Π΅Ρ) ΠΈ 670-680 Π½ΠΌ (ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ).
ΠΡΠΈ Π²ΠΎΠ»Π½Ρ ΠΏΠΎΠ³Π»ΠΎΡΠ°ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠΎΠ»Π΅ΠΊΡΠ»Π°ΠΌ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°.
User: Π‘ΠΎΡΠΈΠ½ΠΈ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠ°ΡΡΠΊΠ°Π·, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ°Π½ΠΎ: Π’Π°Π½Ρ, ΠΌΡΡ
Saiga: Π’Π°Π½Ρ Π±ΡΠ»Π° ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ Π΄Π΅Π²ΠΎΡΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π»ΡΠ±ΠΈΠ»Π° ΠΈΠ³ΡΠ°ΡΡ Π² ΡΡΡΠ±ΠΎΠ». ΠΠ½Π° ΠΆΠΈΠ»Π° Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ Π³ΠΎΡΠΎΠ΄ΠΊΠ΅, Π³Π΄Π΅ Π²ΡΠ΅ Π·Π½Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° ΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ»ΠΈ Π³ΠΎΡΠΎΠ²Ρ ΠΏΠΎΠΌΠΎ
ΡΡ. Π£ Π’Π°Π½ΠΈ Π±ΡΠ» Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π»Π° "ΠΡΡΠΈΠΊ". ΠΠ½ Π±ΡΠ» ΡΡΠ°ΡΡΠΌ, Π½ΠΎ Π΄Π»Ρ Π’Π°Π½ΠΈ ΠΎΠ½ Π±ΡΠ» ΡΠ°ΠΌΡΠΌ ΡΠ΅Π½Π½ΡΠΌ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠΌ Π² ΠΌΠΈΡΠ΅.
ΠΠ΄Π½Π°ΠΆΠ΄Ρ, ΠΊΠΎΠ³Π΄Π° Π’Π°Π½Ρ ΠΈΠ³ΡΠ°Π»Π° Π² ΡΡΡΠ±ΠΎΠ» ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄ΡΡΠ·ΡΡΠΌΠΈ, ΠΡΡΠΈΠΊ ΠΏΡΠΎΠΏΠ°Π». ΠΡΠ΅ ΠΎΠ½ΠΈ Π½Π°ΡΠ°Π»ΠΈ ΠΏΠΎΠΈΡΠΊ, Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΉΡΠΈ. Π’Π°Π½Ρ Π±ΡΠ»Π° ΠΎΡΠ΅Π½Ρ Π³ΡΡΡΡΠ½Π°, Π²Π΅Π΄Ρ Π±Π΅Π· ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΡΡΠΈΠΊΠ° ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ³ΡΠ°ΡΡ Π² ΡΠ²ΠΎΡ Π»ΡΠ±ΠΈΠΌΡΡ ΠΈΠ³ΡΡ.
Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π² Π³ΠΎΡΠΎΠ΄Π΅ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠ» ΡΠ΅ΡΡΠΈΠ²Π°Π»Ρ, ΠΈ Π²ΡΠ΅ ΠΆΠΈΡΠ΅Π»ΠΈ ΡΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π½Π° ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ. Π’Π°Π½Ρ ΡΠ΅ΡΠΈΠ»Π° ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΠΌΠΎΡΠΈ Ρ Π²ΡΠ΅Ρ
ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ
. ΠΠ½Π° ΡΠ°ΡΡΠΊΠ°Π·Π°Π»Π° ΠΈΡΡΠΎΡΠΈΡ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΡΡΠΈΠΊΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΠ»Π° ΠΏΠΎΠΌΠΎΡΠΈ Π² Π΅Π³ΠΎ ΠΏΠΎΠΈΡΠΊΠ΅. ΠΡΡ ΡΠΎΠ»ΠΏΠ° ΡΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π»Π° Π’Π°Π½Π΅ ΠΈ ΠΎΠ±Π΅ΡΠ°Π»Π° ΠΏΠΎΠΌΠΎΡΡ.
ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡΠΈΠ²Π°Π»Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ, Π’Π°Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° Π·Π²ΠΎΠ½ΠΎΠΊ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΆΠΈΡΠ΅Π»Π΅ΠΉ Π³ΠΎΡΠΎΠ΄Π°. ΠΠ½ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ Π½Π°ΡΠ΅Π» Π΅Ρ ΠΡΡΠΈΠΊ ΠΈ Ρ
ΠΎΡΠ΅Π» Π±Ρ Π²Π΅ΡΠ½ΡΡΡ Π΅ΠΌΡ. Π’Π°Π½Ρ Π±ΡΠ»Π° ΡΠ°Π΄Π° ΠΈ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»Π°ΡΡ ΠΊ Π½Π΅ΠΌΡ.
ΠΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΏΡΠΈΡΠ»Π° ΠΊ Π΄ΠΎΠΌΡ, Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΡΡ ΠΡΡΠΈΠΊ, ΠΎΠ½Π° ΡΠ²ΠΈΠ΄Π΅Π»Π°, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ» Π² Ρ
ΠΎΡΠΎΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΡΡΠΈΠΊ Π±ΡΠ» ΡΠΈΡΡΡΠΌ ΠΈ Π±Π»Π΅ΡΡΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΠΉ. Π’Π°Π½Ρ Π±ΡΠ»Π° ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄Π° ΠΈ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΡΠ°ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠ½ΡΠ»Π° ΡΠ²ΠΎΠΉ ΠΡΡΠΈΠΊ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π’Π°Π½Ρ ΠΈ Π΅Π΅ Π΄ΡΡΠ·ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ ΠΈΠ³ΡΠ°ΡΡ Π² ΡΡΡΠ±ΠΎΠ», ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΈΠ³ΡΠ°Π»ΠΈ, ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΡΡΠΈΠΊ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊ Π½Π΅ΠΉ. ΠΠΌΠ΅Π½Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ, ΠΎΠ½ΠΈ ΡΡΠ°Π»ΠΈ Π»ΡΡΡΠΈΠΌΠΈ Π΄ΡΡΠ·ΡΡΠΌΠΈ ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π° Π² ΡΡΡΠ΄Π½ΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
.
Π ΡΠ°ΠΊ, Π’Π°Π½Ρ ΠΈ Π΅Π΅ ΠΡΡΠΈΠΊ ΡΡΠ°Π»ΠΈ Π»Π΅Π³Π΅Π½Π΄Π°ΡΠ½ΡΠΌΠΈ Π² Π³ΠΎΡΠΎΠ΄Π΅, ΠΈ ΠΈΡ
ΠΈΡΡΠΎΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»Π°ΡΡ ΠΈΠ· ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ Π² ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅. Π Π²ΠΎΡ ΡΠ°ΠΊ, ΠΡΡΠΈΠΊ ΡΡΠ°Π» ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π΄ΡΡΠΆΠ±Ρ ΠΈ Π²Π΅ΡΠ½ΠΎΡΡΠΈ, ΠΈ Π²ΡΠ΅, ΠΊΡΠΎ Π·Π½Π°Π» ΡΡΡ ΠΈΡΡΠΎΡΠΈΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΡΡΠΎ Π’Π°Π½Ρ ΠΈ Π΅Π΅ ΠΡΡΠΈΠΊ - ΠΎΠ΄Π½ΠΎ ΡΠ΅Π»ΠΎΠ΅.
v1:
- dataset code revision d0d123dd221e10bb2a3383bcb1c6e4efe1b4a28a
- wandb link
- 5 datasets: ru_turbo_saiga, ru_sharegpt_cleaned, oasst1_ru_main_branch, gpt_roleplay_realm, ru_instruct_gpt4
- Datasets merging script: create_short_chat_set.py
- saiga_mistral_7b vs saiga2_13b: 243-31-141