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.
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
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.
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ątkucontentdodano 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:
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.
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
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
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ł.
