CoolFace
Datasetpublic

cpral/Polski_Polish_SFT_poziomka-fun-rp-v11

poziomka-fun-rp-v11 Polski zbiór SFT oparty na poziomka-fun-rp-v10, z przetasowanymi danymi i opcjonalnym sterowaniem reasoning przez prefiks odpowiedzi asystenta, wzorem Qwen. Cały reasoning z v10 pozostaje w wiadomościach i w tekście treningowym. Nie wyłączano losowo rozumowania, nie przenoszono go do archiwum ani nie dopisywano komend do użytkownika. System prompty pozostają bez zmian. Rozmiar i źródła Podział Rozmowy Format v10 Wybrane do formatu… See the full description on the dataset page: https://huggingface.co/datasets/cpral/Polski_Polish_SFT_poziomka-fun-rp-v11.

sourceHugging Faceupdated 18d agoView on Hugging Face
0likes102downloads
Dataset Card

poziomka-fun-rp-v11

Polski zbiór SFT oparty na poziomka-fun-rp-v10, z przetasowanymi danymi i opcjonalnym sterowaniem reasoning przez prefiks odpowiedzi asystenta, wzorem Qwen.

Cały reasoning z v10 pozostaje w wiadomościach i w tekście treningowym. Nie wyłączano losowo rozumowania, nie przenoszono go do archiwum ani nie dopisywano komend do użytkownika. System prompty pozostają bez zmian.

Rozmiar i źródła

PodziałRozmowyFormat v10Wybrane do formatu hybrydowegoPliki Parquet
Trening1 318 9341 187 041131 89399
Walidacja13 40112 0611 3401
Łącznie1 332 3351 199 102133 233100

Jeden rekord to cała rozmowa, także wieloturowa. Wybrano dokładnie zaokrąglone w dół 10% każdego podziału; nieco ponad 90% zachowuje format v10.

Źródło (`source_dataset`)Rozmowy
poziomka-fun-v9-parquet1 039 663
Poziomka-SFT-v3-mix-RP292 672

Dane mają format Parquet z kompresją Zstandard. Oba źródła są wymieszane w każdym pliku i między plikami. Kolejność wynika z SHA-256 identyfikatorów z ziarnem 42. Wybór 10% wykorzystuje niezależny ranking skrótów. Przynależność do treningu i walidacji pozostaje jak w v10; nie powielano ani nie usuwano rozmów.

Co oznacza 10% formatu hybrydowego

W wybranych rozmowach każdą odpowiedź traktujemy osobno:

  • —odpowiedź ma reasoning_content: cały reasoning pozostaje bez zmian;
  • —odpowiedź nie ma reasoning_content: do początku content dodano pusty blok <think>\n</think>\n.

Pozostałe 90% ma identyczne wiadomości i identyczny wyrenderowany tekst jak v10 przy użyciu dołączonego szablonu. Istniejące bloki <think>…</think> pozostają także w tej części zbioru — „bez oznaczenia” oznacza brak nowej modyfikacji, nie usunięcie istniejących znaczników.

Pusty blok jest już zapisany w messages[].content, więc trener nie musi interpretować dodatkowych metadanych, aby go uwzględnić. Szablon nie dodaje drugiego pustego bloku. Rozmowy mieszane zachowują wszystkie odpowiedzi z reasoning i bez niego. Wybrana rozmowa zawierająca wyłącznie odpowiedzi z reasoning nie wymaga zmiany tekstu.

Nie dopisywano nowego reasoning i nie usuwano oryginalnych wyjaśnień ani dosłownych znaczników w odpowiedziach. Wszystkie 1 027 979 źródłowych wiadomości z osobnym reasoning pozostają w treningu.

Sterowanie podczas generacji

Parametr enable_thinking dotyczy wyłącznie prefiksu następnej odpowiedzi:

ParametrKoniec promptu po nagłówku asystenta
PominiętySam nagłówek asystenta, jak w v10; model wybiera dalszy format.
TrueOtwarty <think>\n; model kontynuuje blok rozumowania.
FalsePusty zamknięty <think>\n</think>\n; model kontynuuje odpowiedź.

Jest to mechanizm prefiksu wzorowany na Qwen, z zachowaniem domyślnego formatu v10. Nie jest kopią całego szablonu Qwen. Nazwa parametru API nie trafia do wiadomości użytkownika. Nie ma komend /myśl, /bez_myślenia, /think ani /no_think sterujących szablonem.

Ustawienie można zmieniać przy kolejnych wywołaniach. Historyczne wiadomości i ich reasoning pozostają zachowane niezależnie od parametru. Sam prefiks nie gwarantuje bezbłędnego zachowania modelu; jego skuteczność wymaga oceny po treningu.

python
from transformers import PreTrainedTokenizerFast

tokenizer = PreTrainedTokenizerFast.from_pretrained(
    "./poziomka-fun-rp-v11/tokenizer", local_files_only=True
)
prompt = tokenizer.apply_chat_template(
    [{"role": "user", "content": "Ile to 2 + 2?"}],
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=False,
)

Schemat i pochodzenie

PoleZnaczenie
messagesLista wiadomości: role, content, reasoning_content.
toolsDefinicje narzędzi jako tekst JSON lub null.
hybrid_formatCzy rozmowa należy do wybranych 10%.
reasoning_profileon: wszystkie odpowiedzi mają reasoning; off: żadna; mixed: część. Opis zawartości, a nie globalne polecenie dla rozmowy.
v10_row_sha256SHA-256 kanonicznego JSON oryginalnego rekordu v10.
record_id, source_idIdentyfikatory zachowane z v10.
source_dataset, source_file, source_row, source_splitPochodzenie zachowane z v10, niezależne od pozycji po przetasowaniu.
category, source_metadataDostępne kategorie i pozostałe metadane źródłowe, także składowych RP.

Profil rozmów: 897 258 on, 304 440 off, 130 637 mixed. Profil mixed nie oznacza ubytku reasoning.

Do treningu służą wiadomości oraz ewentualnie zdekodowane definicje narzędzi. Pozostałe pola nie powinny być doklejane do tekstu.

Wczytanie i trening

python
from datasets import load_dataset

data = load_dataset("parquet", data_files={
    "train": "./poziomka-fun-rp-v11/train/*.parquet",
    "validation": "./poziomka-fun-rp-v11/validation/*.parquet",
})

Należy używać dołączonego chat_template.jinja zarówno przy treningu, jak i inferencji. Sam wybór datasetu nie ustawia szablonu w trenerze. Lokalny prepare_poziomka_sft.py przyjmuje --chat-template poziomka-fun-rp-v11/chat_template.jinja.

Przy treningu: add_generation_prompt=False. Szablon renderuje reasoning każdej wiadomości niezależnie od enable_thinking; nigdy nie usuwa historycznego reasoning. Obsługuje bloki generation do maskowania straty, domyślnie dla asystenta, z opcjonalnym loss_roles. Przed przekazaniem tools do szablonu należy zdekodować tekst JSON. Przy osobnej tokenizacji wyrenderowanego tekstu należy użyć add_special_tokens=False.

Dołączony tokenizer zachowuje słownik 32 000 tokenów oraz ustawienia EOS=4, PAD=2. Nie dodano tokenów. Szablon obsługuje strukturalne wywołania narzędzi, ale v11 nie dodaje takich przykładów do v10; schemat wiadomości nadal nie zawiera tool_calls.

Weryfikacja i odtworzenie

report.json opisuje budowę oraz pełny odczyt kontrolny wynikowych rekordów. Dla każdego rekordu sprawdzono odtworzenie v10 przez SHA-256, poprawność transformacji i kolejności. Sprawdzono skład podziałów i globalną unikalność identyfikatorów. summary.json zawiera liczniki, w tym liczbę dodanych pustych prefiksów.

Odtworzenie oryginału wymaga usunięcia dokładnie jednego dodanego pustego prefiksu z odpowiedzi bez reasoning w rozmowach z hybrid_format=True, a następnie pominięcia trzech nowych pól. W lokalnym projekcie realizuje to restore w scripts/build_v11.py.

Testy obejmują zachowanie całego tekstu źródłowego, zgodność renderingu zwykłych rozmów z v10, prefiksy generacji dla mieszanych tur, maskowanie straty i mały eksport z przetasowaniem. Nie przeprowadzono treningu modelu ani pełnego audytu jakości treści źródłowych. Warunki użycia danych należy ustalać na podstawie licencji poszczególnych źródeł.