Рефакторинг: единообразие оформления кода (пробелы, кавычки, пустые строки), без изменения логики по всему проекту.

This commit is contained in:
Sergey Penkovsky
2025-10-06 22:57:19 +03:00
parent 332cad6159
commit 712278e33c
49 changed files with 2324 additions and 2004 deletions

View File

@@ -10,17 +10,17 @@ from .configs import TRAIN_TEXTS, PATHS
def load_training_data(split_ratio: float = 0.8) -> Tuple[List[str], List[str]]:
"""
Загружает данные для обучения и разделяет на train/validation.
Args:
split_ratio: Доля данных для обучения
Returns:
Tuple: (train_texts, val_texts)
"""
train_size = int(len(TRAIN_TEXTS) * split_ratio)
train_data = TRAIN_TEXTS[:train_size]
val_data = TRAIN_TEXTS[train_size:]
return train_data, val_data
@@ -28,13 +28,13 @@ def ensure_directories():
"""Создает необходимые директории если они не существуют."""
directories = [
"checkpoints",
"checkpoints/gpt-bpe",
"checkpoints/gpt-bpe",
"checkpoints/hf-bpe-tokenizer",
"checkpoints/hf-trained",
"checkpoints/hf-trained-proxy",
"logs"
"logs",
]
for directory in directories:
os.makedirs(directory, exist_ok=True)
@@ -42,33 +42,34 @@ def ensure_directories():
def get_model_paths(experiment_type: str = "llm_only") -> dict:
"""
Возвращает пути для конкретного типа эксперимента.
Args:
experiment_type: Тип эксперимента ('llm_only' или 'hf_integration')
Returns:
dict: Словарь с путями
"""
base_paths = PATHS.copy()
if experiment_type == "hf_integration":
base_paths.update({
"model": base_paths["hf_model"],
"tokenizer": base_paths["hf_tokenizer"]
})
base_paths.update(
{"model": base_paths["hf_model"], "tokenizer": base_paths["hf_tokenizer"]}
)
else: # llm_only
base_paths.update({
"model": base_paths["gpt_bpe_model"],
"tokenizer": base_paths["bpe_tokenizer"]
})
base_paths.update(
{
"model": base_paths["gpt_bpe_model"],
"tokenizer": base_paths["bpe_tokenizer"],
}
)
return base_paths
def print_experiment_info(experiment_name: str, config: dict):
"""
Выводит информацию о запускаемом эксперименте.
Args:
experiment_name: Название эксперимента
config: Конфигурация эксперимента
@@ -85,35 +86,35 @@ def print_experiment_info(experiment_name: str, config: dict):
def save_experiment_results(results: dict, filepath: str):
"""
Сохраняет результаты эксперимента в файл.
Args:
results: Словарь с результатами
filepath: Путь для сохранения
"""
import json
with open(filepath, 'w', encoding='utf-8') as f:
with open(filepath, "w", encoding="utf-8") as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"✅ Результаты эксперимента сохранены: {filepath}")
def load_experiment_results(filepath: str) -> dict:
"""
Загружает результаты эксперимента из файла.
Args:
filepath: Путь к файлу с результатами
Returns:
dict: Загруженные результаты
"""
import json
if not os.path.exists(filepath):
return {}
with open(filepath, 'r', encoding='utf-8') as f:
with open(filepath, "r", encoding="utf-8") as f:
return json.load(f)
@@ -121,42 +122,39 @@ class ExperimentLogger:
"""
Логгер для экспериментов.
"""
def __init__(self, experiment_name: str):
self.experiment_name = experiment_name
self.metrics = {}
def log_metric(self, name: str, value: float):
"""Логирует метрику."""
if name not in self.metrics:
self.metrics[name] = []
self.metrics[name].append(value)
print(f"📈 {name}: {value:.4f}")
def log_step(self, step: int, loss: float, **kwargs):
"""Логирует шаг обучения."""
print(f"📊 Step {step}: loss={loss:.4f}", end="")
for key, value in kwargs.items():
print(f", {key}={value:.4f}", end="")
print()
def log_epoch(self, epoch: int, train_loss: float, val_loss: float = None):
"""Логирует завершение эпохи."""
print(f"🎯 Epoch {epoch}: train_loss={train_loss:.4f}", end="")
if val_loss is not None:
print(f", val_loss={val_loss:.4f}", end="")
print()
def save_logs(self, filepath: str):
"""Сохраняет логи эксперимента."""
import json
logs = {
"experiment_name": self.experiment_name,
"metrics": self.metrics
}
with open(filepath, 'w', encoding='utf-8') as f:
logs = {"experiment_name": self.experiment_name, "metrics": self.metrics}
with open(filepath, "w", encoding="utf-8") as f:
json.dump(logs, f, ensure_ascii=False, indent=2)
print(f"✅ Логи эксперимента сохранены: {filepath}")