Skip to content

Latest commit

 

History

History
94 lines (71 loc) · 2.6 KB

File metadata and controls

94 lines (71 loc) · 2.6 KB

План действий

Шаг 1: Остановить обучение

# Ctrl+C в терминале с обучением

Шаг 2: Сохранить модель как final

Trainer уже сохранил чекпоинт 255000. Нужно взять его и сделать "final" версию, от которой будет стартовать фаза 2.

cd /mnt/work/audetv/go/src/github.com/terratensor/book2bert-v2
source venv/bin/activate

python3 << 'EOF'
from transformers import BertForMaskedLM
from simple_sp_tokenizer import SimpleSPTokenizer
import os

# Путь к последнему чекпоинту
checkpoint_path = "models/bert-base-ru-phase1_128/checkpoint-255000"
final_path = "models/bert-base-ru-phase1_128-final"

# Создаём директорию
os.makedirs(final_path, exist_ok=True)

# Загружаем модель из чекпоинта
print(f"Loading model from {checkpoint_path}...")
model = BertForMaskedLM.from_pretrained(checkpoint_path)
print("Model loaded!")

# Загружаем токенизатор
tokenizer = SimpleSPTokenizer("models/tokenizer/final/32k/sp_32k.model")

# Сохраняем как final
model.save_pretrained(final_path)
tokenizer.save_pretrained(final_path)

print(f"Model saved to {final_path}")
print("Ready for Phase 2!")
EOF

Шаг 3: Собрать датасет для фазы 2 из ВСЕХ книг

go run cmd/build-chunks-phased/main.go \
    --cleaned data/cleaned \
    --tokenizer http://localhost:8091 \
    --output data/bert_full \
    --workers 16 \
    --val-ratio 0.02 \
    --all-books \
    --phase 2

Шаг 4: Обновить пути в train_bert_progressive.py

В PHASE_CONFIGS[2] указать новый путь:

2: {
    "phase_name": "phase2_256",
    "train_file": "data/bert_full/phase2_256_train.txt",
    "val_file": "data/bert_full/phase2_256_val.txt",
    # ...
}

Шаг 5: Запустить фазу 2

torchrun --nproc_per_node=2 train_bert_progressive.py --phase 2 2>&1 | tee phase2_256.log

Фаза 2 автоматически загрузит веса из phase1_128-final!

Вот так это работает в коде:

def load_model_from_phase(load_path, tokenizer):
    if load_path and os.path.exists(load_path):
        model = BertForMaskedLM.from_pretrained(load_path)  # ← загружает из final
        return model

А в конфиге фазы 2 указано:

2: {
    "load_from": "models/bert-base-ru-phase1_128-final",  # ← вот этот путь
}