Remek's picture
Create README.md
521273d verified
|
raw
history blame
6.84 kB
metadata
language:
  - pl
  - en
pipeline_tag: text-generation

Llama-3-8B-Omnibus-1-PL-v01-GGUF

To repozytorum zawiera konwersj臋 modeli Llama-3-8B-Omnibus-1-PL-v01 do formatu GGUF - Q8_0 oraz Q4_K_M. Przetestowana zosta艂a w dw贸ch 艣rodowiskach uruchomieniowych:

LM Studio

Wersja minimum 0.2.20 - koniecznie wybierz format promptu Llama 3 (!) (opcja Preset)

ollama

Wersja 0.1.32. Konfiguracja ollama plik Modelfile

FROM ./Llama-3-Omnibus-PL-v01.Q4_K_M.gguf TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|> {{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|> {{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|> {{ .Response }}<|eot_id|>""" PARAMETER stop "<|start_header_id|>" PARAMETER stop "<|end_header_id|>" PARAMETER stop "<|eot_id|>" PARAMETER stop "<|reserved_special_token"

Repozytorium zawiera model Meta Llama-3-8B-Omnibus-1-PL-v01 w wersji polskoj臋zycznej. Model posta艂 na podstawie finetuningu modelu bazowego Llama-3-8B. Wykorzystano do tego dataset instrukcji Omnibus-1-PL (stworzy艂em go na w艂asne potrzeby przeprowadzania eksperymen贸w finetuningu modeli w j臋zyku polskim). Szczeg贸艂y parametr贸w treningu w sekcji Trening. Celem tego eksperymentu by艂o sprawdzenie czy mo偶na nam贸wi膰 Llama-3-8B do p艂ynnego rozmawiania w j臋zyku polskim (oryginalny model instrukcyjny 8B ma z tym problem - woli zdecydowanie bardziej rozmawia膰 po angielsku).

Uwaga!

  • Model b臋dzie dalej rozwijany poniewa偶 eksperymentuj臋 z a. kolejnymi wersjami datasetu, b. model jest 艣wietn膮 baz膮 do testowania r贸偶nych technik finetunowania (LoRA, QLoRA; DPO, ORPO itd.)
  • Udost臋pni艂em go spontanicznie by u偶ytkownicy mogli go u偶ywa膰 i sprawdza膰 jako艣膰 Llama 3 ale w kontek艣cie j臋zyka polskiego.
  • Po informacji, 偶e baza by艂a trenowana na 15T token贸w (tylko 5% nie angielskich) uzna艂em, 偶e to 艣wietna baza do finetuningu. By膰 mo偶e lekkie dotrenowanie modelu za pomoc膮 contingued-pretraining da jeszcze wi臋kszy uzysk.

Spos贸b kodowania nazwy modelu

  • Nazwa modelu bazowego: Llama-3-8B
  • Nazwa datasetu: Omnibus-1
  • Wersja j臋zykowa: PL (polska)
  • Wersja modelu: v01

Dataset

Omnibus-1 to zbi贸r polskich instrukcji (100% kontekstu Polskiego - fakty, osoby, miejsca osadzone w Polsce), kt贸ry zosta艂 w 100% syntetycznie wygenerowany. Zawiera on instrukcje z kategorii - matematyka, umiej臋tno艣膰 pisania, dialogi, tematy medyczne, zagadki logiczne, t艂umaczenia itd. Powsta艂 on w ramach moich prac zwi膮zanych z badaniem jako艣ci modeli w kontek艣cie j臋zyka polskiego. Pozwala on na finetuning modelu i sprawdzenie podatno艣ci modelu do m贸wienia w naszym rodzimym j臋zyku. Dataset zawiera obecnie 75.000 instrukcji. B臋dzie ca艂y czas udoskonalony i by膰 mo偶e w przysz艂o艣ci udost臋pniony (jak uznam, 偶e ju偶 jest wtstarczaj膮co pe艂en i obejmuje szerokie spektrum tematyki i umiej臋tno艣ci). Dataset jest w 100% generowany za pomoc膮 innych LLM (GPT3.5, GPT4, Mixtral itd.)

U偶ycie Llama-3-8B-Omnibus-1-PL-v01 z bibliotek膮 Transformers

Poni偶szy kod u偶ywa bibliotek臋 Transformers:

import transformers
import torch

model_id = "Remek/Llama-3-8B-Omnibus-1-PL-v01"

pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="auto",
)

messages = [
    {"role": "system", "content": "You are a helpful, smart, kind, and efficient AI assistant. You always fulfill the user's requests to the best of your ability."},
    {"role": "user", "content": "Napisz czym jest Warszawa?"},
]

prompt = pipeline.tokenizer.apply_chat_template(
        messages, 
        tokenize=False, 
        add_generation_prompt=True
)

terminators = [
    pipeline.tokenizer.eos_token_id,
    pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = pipeline(
    prompt,
    max_new_tokens=256,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])

Przyk艂adowa odpowied藕:

Warszawa to stolica Polski, po艂o偶ona na terenie Mazowsza. Jest to najwi臋ksze miasto w Polsce pod wzgl臋dem liczby mieszka艅c贸w oraz powierzchni. Warszawa jest r贸wnie偶 siedzib膮 rz膮du, parlamentu, prezydenta, s膮du najwy偶szego oraz wielu innych instytucji pa艅stwowych i mi臋dzynarodowych. Miasto jest znane z wielu zabytk贸w, takich jak Stare Miasto, Zamek Kr贸lewski, Pa艂ac Kultury i Nauki, a tak偶e z nowoczesnych atrakcji, takich jak Centrum Nauki Kopernik czy Centrum Nauki i Sztuki. Warszawa jest r贸wnie偶 wa偶nym centrum kulturalnym, gospodarczym i naukowym. Miasto jest r贸wnie偶 siedzib膮 wielu firm mi臋dzynarodowych i polskich przedsi臋biorstw. Warszawa jest miastem, kt贸re 艂膮czy w sobie przesz艂o艣膰 z nowoczesno艣ci膮, oferuj膮c mieszka艅com i turystom szeroki zakres mo偶liwo艣ci. Miasto jest r贸wnie偶 znane z wielu festiwali i wydarze艅 kulturalnych, kt贸re przyci膮gaj膮 miliony turyst贸w z ca艂ego 艣wiata. Warszawa to miasto pe艂ne 偶ycia, kultury, historii i nowoczesno艣ci, kt贸re zdecydowanie zas艂uguje na uwag臋. <|im_end|>

Szablon konwersacji

Szablon konwersacji to oryginalna wersja Llama3

<|start_header_id|>You are a helpful, smart, kind, and efficient AI assistant. You always fulfill the user's requests to the best of your ability.<|end_header_id|>
{System}
<|eot_id|>
<|start_header_id|>user<|end_header_id|>
{User}
<|eot_id|><|start_header_id|>assistant<|end_header_id|>
{Assistant}

Wersje quantized

Wersje poddane quantyzacji s膮 dost臋pne w repozytorium:

  • Llama-3-8B-Omnibus-1-PL-v01-GGUF - przetestowane w LM Studio (wybierz szablon - Llama3)

  • Version Model card
    GGUF 馃 HuggingFace

Trening

Poni偶ej szczeg贸艂y hiperparametr贸w treningu:

  • learning_rate: 2e-05
  • train_batch_size: 8
  • eval_batch_size: 8
  • seed: 42
  • distributed_type: single-GPU (Nvidia A6000 Ada)
  • num_devices: 1
  • gradient_accumulation_steps: 4
  • optimizer: adamw_8bit
  • lr_scheduler_type: linear
  • lr_scheduler_warmup_steps: 5
  • num_epochs: 1
  • QLoRa - 4bit: rank 64, alpha 128

Unsloth

Unsloth, narz臋dzie dzi臋ki kt贸remu powsta艂 ten model.

Licencja

Licencja na zasadzie nie do komercyjnego u偶ycia (ze wzgl臋du na dataset - generowany syntetycznie za pomoc膮 modeli GPT4, GPT3.5) oraz licencja Llama3 (prosz臋 o zapoznanie si臋 ze szczeg贸艂ami licencji).