Skip to content

NS3TRap/LLM_LoRA_training

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Отчёт по дообучению LLM для разбора стратегических игр

Введение

Цель работы

Целью данной работы является дообучение большой языковой модели (LLM) для анализа и разбора стратегических игр.

Постановка задачи

Необходимо адаптировать базовую LLM под предметную область стратегических игр с минимальными вычислительными затратами за счёт применения LoRA-подхода к дообучению.

В качестве стратегической игры была выбрана Heroes of Might and Magic IV.


1 Параметры модели и конфигурация LoRA

1.1 Базовая модель

  • Название модели: Qwen/Qwen2.5-1.5B
  • Архитектура: Transformer
  • Количество параметров: 1.5B
  • Количество слоёв: 28
  • Контекстное окно: 32к

1.2 Конфигурация LoRA

  • Target-модули: 'q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj'
  • Rank (r): 16
  • Alpha: 64
  • Dropout: 0.2
  • Bias: Base Model + LoRA
  • Используемая библиотека: PEFT

2 Данные для дообучения

2.1 Источник данных

РУ вики по игре Heroes of Might and Magic IV:

https://mightandmagic.fandom.com/ru/wiki/Heroes_of_Might_and_Magic_IV

2.2 Формат данных

Обычный текст с форума(60600 слов):

Heroes of Might and Magic IV (рус. Герои Меча и Магии 4) — компьютерная игра в жанре пошаговой стратегии с элементами RPG, четвёртая часть серии. Как и предшествующая часть серии – Heroes of Might and Magic III – разработана компанией New World Computing и выпущена The 3DO Company весной 2002 года. ...

3 Обучение

python train_model.py --model_name Qwen/Qwen2.5-1.5B --data_path data.jsonl --output_dir ./my-lora-model --use_lora

Параметры обучения Значение
Кол-во эпох 3
Скорость обучения 2e-4
Размер батча 4

1766686022813

4 Результаты и сравнение

Запуск скрипта осуществляется через команду:

python chatting.py --model_name Qwen/Qwen2.5-1.5B --model_dir my-lora-model --test_seed 4563799842

Параметры генерации Значение
Кол-во токенов 200
Температура 0.5
top_p 0.3
top_k 5

4.1 Prompt 1

Prompt:

Расскажи про фракции в Heroes of Might and Magic IV.

Модель Результат Анализ
Базовая модель Расскажи про фракции в Heroes of Might and Magic IV. Фракции в Heroes of Might and Magic IV (HOMMIV) - это группы игроков, объединяющиеся для выполнения определенных целей или для достижения определенных результатов. В игре HOMMIV фракции могут быть разными, в зависимости от того, что они хотят добиться.1. **Фракция "Великие Древние"**: Это фракция, которая стремится к сохранению древних традиций и культурных традиций. Они хотят защитить свои королевства от внешних угроз и сохранить свою историю.2. **Фракция "Светлые Древние"**: Это фракция, которая стремится к развитию и прогрессу. Они хотят использовать свои силы для достижения новых побед и достижений. Общие слова, Нет фактической информации, Несоответствие игре
Базовая модель + LoRA Расскажи про фракции в Heroes of Might and Magic IV. Состоит из 4-х фракций – Обители, Пристанища, Некрополиса и Академии. В каждой из них присутствуют все типы героев – юниты, существа, герои-некроманты и герои-маги. Все фракции имеют одинаковые характеристики по базовым навыкам (Лидерство, Магия Жизни, Магия Смерти, Дипломатия, Сопротивление магии), а также по навыку Разведки. Различаются лишь стоимость героев и их максимальный запас маны. Игровая терминология, Механика навыков, Структура информации, Легкая неполнота иноформации

4.2 Prompt 2

Prompt:

Расскажи про юнит Варвар.

Модель Результат Анализ
Базовая модель Расскажи про юнит Варвар. Варвар - это юнит, который является одним из самых сильных в игре. Он имеет высокую атакующую и защитную силу, а также может использовать различные магические атаки. Варвар также может использовать различные способности, такие как "Варварский удар", "Варварский шлем" и "Варварский кулак". Эти способности позволяют ему увеличить свою атакующую и защитную силу, а также улучшить его способность к магии. Варвар также может использовать различные предметы, такие как "Варварский шлем" и "Варварский кулак", которые улучшают его способность к магии и увеличивают его атакующую и защитную силу. Общие фразы, Повторения, Выдуманные элементы, Нет конкретики
Базовая модель + LoRA Расскажи про юнит Варвар. Расположение в бою/Варвар – юнит 1-го уровня фракции Крепость в игре Герои Меча и Магии IV. Нанимаются в Логове дракона.Варвары – самые быстрые юниты в игре, а их скорость и дальность передвижения в бою – самая высокая по отношению к остальным юнитам своего уровня. Они могут передвигаться в бою без потерь в численности, даже при наличии штрафа на препятствия. Способность "Первый удар" позволяет им наносить удар первыми, что позволяет им наносить удар по противнику, который ещё не успел ответить на предыдущий удар вражеской армии. Правильные характеристики, Корректные способности, Игровая механика, Ошибка только в месте найма.

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

5 Код обучения

5.1 Загрузка базовой модели

model = AutoModelForCausalLM.from_pretrained( 
        args.model_name, 
        device_map="auto", 
        torch_dtype=torch.float16 
        )

5.2 Настройка LoRA-конфигурации

target_modules = get_default_lora_targets(args.model_name)
print(f"Используем target_modules для LoRA: {target_modules}")
lora_config = LoraConfig(task_type=TaskType.CAUSAL_LM,
                         inference_mode=False,r=args.lora_r,
                         lora_alpha=args.lora_alpha,
                         lora_dropout=args.lora_dropout,
                         target_modules=target_modules,)
model = get_peft_model(model, lora_config) model.print_trainable_parameters()

5.3 Чтение датасета

text = read_markdown(args.data_path)
ds = prepare_markdown_dataset(text=text,
                              tokenizer=tokenizer,
                              max_length=args.max_length )
data_collator = DataCollatorForCausalLMWithLabels(tokenizer=tokenizer)

5.4 Указание параметров обучения

training_args = TrainingArguments(
              output_dir=args.output_dir,
              per_device_train_batch_size=args.per_device_train_batch_size,
              num_train_epochs=args.num_train_epochs,
              learning_rate=args.learning_rate,
              logging_steps=10,
              save_strategy="no",
              save_total_limit=1,
              fp16=True,
              remove_unused_columns=False,
              push_to_hub=False,
              report_to=[],
)

5.5 Инициализация Trainer

trainer = Trainer(model=model,
                  args=training_args,
                  train_dataset=ds,
                  data_collator=data_collator,
)

5.5 Вызов начала обучения и сохранение результата

print("Начинаем обучение...")
trainer.train()
print("Сохраняем результат...")
os.makedirs(args.output_dir, exist_ok=True)
model.save_pretrained(args.output_dir)
tokenizer.save_pretrained(args.output_dir)

Вывод

В ходе работы было выполнено дообучение большой языковой модели для разбора стратегической игры Heroes of Might and Magic IV с использованием метода LoRA, что позволило повысить фактическую корректность, соответствие игровому лору и практическую полезность ответов при минимальных вычислительных затратах. После дообучения модель значительно снизила уровень галлюцинаций, стала корректно использовать терминологию и игровые механики, а также формировать более структурированные и детализированные ответы, что подтверждается сравнением результатов до и после обучения.

About

For study

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors