|
--- |
|
license: cc-by-4.0 |
|
library_name: peft |
|
base_model: Sao10K/L3-8B-Stheno-v3.1 |
|
language: |
|
- en |
|
--- |
|
## Overview: |
|
8-bit LoRA адаптер для модели Llama-3-8B, в первую очередь призванный расширить знания модели о вселенной MLP:FiM для последующих консультаций/написания фанатских историй/ролевых игр. |
|
В качестве данных для обучения использовались как сухие факты из Fandom wiki, так и каноничные фанатские произведения, раскрывающие вселенную вглубь. |
|
Я бы рискнул сказать, что это первый адаптер в открытом доступе на Hugging Face, который я смог найти для современной языковой модели. Я слышал о адаптерах для GPT-J, но это откровенно устаревшая архитектура. |
|
!(https://huggingface.co/secretmoon/LoRA-Llama-3-MLP/blob/main/profile.webp?) |
|
|
|
## Base model |
|
|
|
Базовой моделью для этого адаптера является Sao10K/L3-8B-Stheno-v3.1, я нашёл эту модель отличным файнтюном базовой Llama-3-8B, умеющим писать истории и отыгрывать ролевые игры, а также не отупевшим вследствие дообучения. |
|
|
|
## Training details: |
|
Dataset: |
|
1. Очищенная копия MLP Fandom Wiki с вырезанной информацией о последних и сторонних проектах, кроме MLP:FiM. (Alpaca) |
|
2. Около 100 специально отсортированных фанатских историй с FiMFiction. (RAW text) |
|
3. Некоторые дополнительные данные, обучающие модель быть личным ассистентом и более внимательно работать с эмоциями пользователя. (Alpaca) |
|
|
|
Training duration: 3 hours |
|
Hardware: 1 x NVIDIA RTX A6000 48GB |
|
PEFT type: LoRA 8-bit |
|
Sequence Length: 6144 |
|
batch size: 2 |
|
num_epochs: 3 |
|
optimizer: adamw_bnb_8bit |
|
lr_scheduler: cosine |
|
learning_rate: 0.00033 |
|
lora_r: 256 |
|
sample_packing: true |
|
lora_target_linear: true |
|
|
|
## How to use: |
|
Вы можете применить адаптер к оригинальным Safetensors весам модели и загрузить её через Transformers, либо вы можете слить этот адаптер с этими весами и преобразовать в f16 .gguf для последующего использования в llama.cpp. |
|
Я не стал загружать готовую модель, потому что не уверен каким должен быть оптимальный LoRA alpha (влияние адаптера на модель alpha/rank) для лучшего результата. Вот общие рекомендации. |
|
LoRA alpha: |
|
16 - низкое значение, не оказывающее сильного влияния |
|
32 - предположительно оптимальное значение (рекомендуется) |
|
64 - высокое значение, значительно влияющее на поведение модели. |
|
128 - очень высокое значение, существенно меняющее поведение языковой модели (не рекомендуется) |
|
Этот параметр можно изменить в adapter_config.json, его можно дифференцировать между этими значениями, например я сливал адаптер с базовой моделью со значением LoRA alpha=40. |
|
|
|
''' |
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
import torch |
|
from peft import PeftModel, PeftConfig |
|
|
|
#Load the base Llama-3-8B fine-tuned model and tokenizer |
|
base_model_name = "Sao10K/L3-8B-Stheno-v3.1" |
|
tokenizer = AutoTokenizer.from_pretrained(base_model_name) |
|
base_model = AutoModelForCausalLM.from_pretrained(base_model_name) |
|
|
|
#Load the Nocturne-MLP:FiM adapter |
|
adapter_name = "secretmoon/LoRA-Llama-3-MLP" |
|
config = PeftConfig.from_pretrained(adapter_name) |
|
adapter_model = PeftModel.from_pretrained(base_model, config) |
|
|
|
#Example usage |
|
input_text = "Tell me about abandoned castle in Everfree forest." |
|
inputs = tokenizer(input_text, return_tensors="pt") |
|
outputs = adapter_model.generate(**inputs, max_length=300) |
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
''' |
|
|
|
|
|
Merge: |
|
1. axolotl (https://github.com/OpenAccess-AI-Collective/axolotl) |
|
python3 -m axolotl.cli.merge_lora lora.yml --lora_model_dir="./completed-model" |
|
|
|
2. Преобразование в адаптер для gguf in OLD llama.cpp |
|
python3 convert-lora-to-ggml.py /path/to/lora/adapter |