--- language: - ru datasets: - IlyaGusev/saiga_scored - IlyaGusev/saiga_preferences license: apache-2.0 --- # Saiga/MistralNemo 12B, Russian fine-tune of Mistral Nemo Based on [an abliterated version](https://huggingface.co/natong19/Mistral-Nemo-Instruct-2407-abliterated) of [Mistral Nemo](https://huggingface.co/mistralai/Mistral-Nemo-Instruct-2407). Llama.cpp version: TBD Colab: [link](https://colab.research.google.com/drive/1vNzMyPqx2GB7zk3ANDtZEfvhzgYOWu0B) ## Prompt format Original Misral Nemo prompt format, but the system prompt is in the beginning: ``` Ты — Сайга, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им. [INST]Как дела?[/INST] Отлично, а у тебя? [INST]Шикарно. Как пройти в библиотеку?[/INST] ``` ## Code example ```python # Исключительно ознакомительный пример. # НЕ НАДО ТАК ИНФЕРИТЬ МОДЕЛЬ В ПРОДЕ. # См. https://github.com/vllm-project/vllm или https://github.com/huggingface/text-generation-inference import torch from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig MODEL_NAME = "IlyaGusev/saiga_nemo_12b" model = AutoModelForCausalLM.from_pretrained( MODEL_NAME, load_in_8bit=True, torch_dtype=torch.bfloat16, device_map="auto" ) model.eval() tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) generation_config = GenerationConfig.from_pretrained(MODEL_NAME) print(generation_config) inputs = ["Почему трава зеленая?", "Сочини длинный рассказ, обязательно упоминая следующие объекты. Дано: Таня, мяч"] for query in inputs: prompt = tokenizer.apply_chat_template([{ "role": "user", "content": query }], tokenize=False, add_generation_prompt=True) data = tokenizer(prompt, return_tensors="pt", add_special_tokens=False) data = {k: v.to(model.device) for k, v in data.items()} data.pop("token_type_ids", None) 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).strip() print(query) print(output) print() print("==============================") print() ``` ## Output examples ``` User: Почему трава зеленая? Saiga: Трава зеленая по нескольким основным причинам: 1. **Хлорофилл**: Основной причиной зеленого цвета травы является наличие хлорофилла, пигмента в клетках растений, который играет ключевую роль в процессе фотосинтеза. Хлорофилл поглощает световые волны синего и красного спектра, а отражение зелёных волн обуславливает именно этот цвет. 2. **Процесс фотосинтеза**: Хлорофилл не только придаёт растениям зелёный окрас, но и обеспечивает процесс фотосинтеза, благодаря которому растение превращает солнечный свет, углекислый газ и воду в питательные вещества (в основном глюкозу), кислород и энергию. Этот процесс необходим для жизни растений и их роста. 3. **Адаптация к окружающей среде**: Зеленый цвет оптимален для максимального поглощения света в условиях на Земле. Наша атмосфера рассеивает больше синего и красного света, чем зелёного, что делает его наиболее доступным источником света для растений на поверхности планеты. 4. **Взаимодействие с окружающими условиями**: При различных условиях (например, недостатке воды или изменении уровня освещённости) трава может менять интенсивность своего зелёного цвета, иногда приобретая желтизну из-за уменьшения содержания хлорофилла или коричневый оттенок из-за образования других пигментов, таких как каротиноиды и антоцианы. Таким образом, зеленый цвет травы — это результат эволюционной адаптации растений к земным условиям, определяемый прежде всего присутствием хлорофилла и необходимостью эффективно использовать солнечный свет в процессе фотосинтеза. ``` ``` User: Сочини длинный рассказ, обязательно упоминая следующие объекты. Дано: Таня, мяч Saiga: ### Сказка о Тане и чудесной встрече В далеком пригороде, где улицы были пронизаны зеленью деревьев, а дома казались игрушками в огромной коробке, жила девочка по имени Таня. Её волосы цвета осенней листвы развевались на ветру, а глаза сверкали яркостью летнего неба. И была у неё одна особенность — любовь к мячу. Этот мяч был не просто предметом для игры; он был её верным спутником, другом и даже союзником во всех приключениях. Мяч этот, с замысловатым узором из разноцветных полос, словно обладал собственной жизнью. Он мог подсказать, когда пора отправиться на поиски новых друзей или рассказать истории о далеких странах, которые отражались в его шелковистой поверхности. Однажды утром, когда первые лучи солнца только начинали пробиваться сквозь листву, Таня решила провести день необычно. Она взяла свой волшебный мяч и направилась в сторону старого парка, что находился на краю города, там, где дороги становились менее знакомыми, а воздух наполнялся загадочными запахами. Мяч пружинил в руках, будто предвкушая что-то особенное. Парк встретил её тишиной и полусонными тенистыми аллеями. Таня побежала, играя со своим мячом, который словно летел впереди, маня все дальше. Вдруг, посреди поляны, мяч вырвался из рук, взмыл вверх и... замер, зависнув над землей! Таня остолбенела. Мелькнуло воспоминание о детских сказках, где обыденные вещи вдруг обретали магические свойства. — Это сон? — шептала она, делая шаг навстречу парителю. В то же мгновение, когда мяч начал медленно снижаться, из-за кустов показалось существо, которое можно было бы принять за маленького человека-животного. Его одежда переливалась всеми цветами радуги, как и узоры на мяче Тани. Существо оказалось Лесным Хранителем — добрым духом парка, хранителем всех тайн и чудес. — Здравствуй, Таня, — сказал Хранитель, голос его звучал как мелодичное журчание ручья. — Я ждал тебя. Твой мяч — не просто игрушка, это ключ, открывающий сердца. Ты обладаешь даром видеть мир иначе, и я здесь, чтобы научить тебя этим силам. Таня, хоть и испугалась сначала, но любопытство и искреннее желание понять новое быстро преодолели страх. Вместе они начали путешествие по волшебному миру парка. Мяч теперь светился, указывая дорогу, и каждый раз, когда он касался земли, вокруг оживали старые легенды: танцевали светлячки, разговаривали деревья, а птицы пели песни забытых эпох. Вскоре Таня узнала, что каждый цвет на её мяче символизировал силу: синий — мудрость, красный — смелость, зелёный — связь с природой, а белый — чистоту намерений. Используя эти силы, она помогала обитателям парка: спасла заблудившихся детей, исцелила больную птицу и даже примирила два враждующих духа-деревьев. Когда сумерки опустились на парк, Лесной Хранитель вернулся к своей вековой задаче, но перед этим подарил Танье маленький семечко: — Посади его рядом с твоим домом, и пусть растет вместе с тобой. Каждый раз, глядя на него, ты будешь помнить о мире, где всё возможно. На следующий день Таня вернулась домой, держа в руках не только любимый мяч, но и новый источник магии. Семя посадили, и вскоре оно превратилось в прекрасное дерево, расцветающее разноцветными цветами — словно продолжение самого мяча. Теперь каждая встреча с ним напоминала о тех приключениях и тайнах, что живут среди нас, если знать, куда и как смотреть. И так, благодаря своему верному мячу, Таня стала хранительницей маленьких чудес в своём городе, доказывая всем, что волшебство может быть самым обычным предметом, лишь бы сердце было открыто для приключений и добра. ``` ## Versions v1: - [87a83ce252ff0142cd4cc918fb3e6a9875ca4638](https://huggingface.co/IlyaGusev/saiga_nemo_12b/commit/87a83ce252ff0142cd4cc918fb3e6a9875ca4638) - Other name: saiga_nemo_12b_sft_m9_d14_simpo_m19_d31 - SFT dataset config: [sft_d14.json](https://github.com/IlyaGusev/saiga/blob/main/configs/datasets/sft_d14.json) - SFT model config: [saiga_nemo_12b_sft_m9.json](https://github.com/IlyaGusev/saiga/blob/main/configs/models/saiga_nemo_12b_sft_m9.json) - SimPO dataset config: [pref_d31.json](https://github.com/IlyaGusev/saiga/blob/main/configs/datasets/pref_d31.json) - SimPO model config: [saiga_nemo_12b_simpo_m19.json](https://github.com/IlyaGusev/saiga/blob/main/configs/models/saiga_nemo_12b_simpo_m19.json) - SFT wandb: [link](https://wandb.ai/ilyagusev/rulm_self_instruct/runs/e74ozfzh) - SimPO wandb: [link](https://wandb.ai/ilyagusev/rulm_self_instruct/runs/b094iiej) ## Evaluation RuArenaHard: ![image/png](https://cdn-uploads.huggingface.co/production/uploads/5fc2346dea82dd667bb0ffbc/-uG--3Wu9oUi9_bC_ZFP4.png) PingPong: ![image/png](https://cdn-uploads.huggingface.co/production/uploads/5fc2346dea82dd667bb0ffbc/uNmD2YhealySO6UYUH8-g.png)