BiBiER / config.toml
farbverlauf's picture
CPU
92da7ef
# ---------------------------
# Настройки корпусов данных
# ---------------------------
[datasets.meld]
base_dir = "E:/MELD"
csv_path = "{base_dir}/meld_{split}_labels.csv"
wav_dir = "{base_dir}/wavs/{split}"
[datasets.resd]
base_dir = "E:/RESD"
csv_path = "{base_dir}/resd_{split}_labels.csv"
wav_dir = "{base_dir}/wavs/{split}"
[synthetic_data]
use_synthetic_data = false
synthetic_path = "E:/MELD_S"
synthetic_ratio = 0.005
# ---------------------------
# Список модальностей и эмоций
# ---------------------------
modalities = ["audio"]
# emotion_columns = ["neutral", "happy", "sad", "anger", "surprise", "disgust", "fear"]
emotion_columns = ["anger", "disgust", "fear", "happy", "neutral", "sad", "surprise"]
# ---------------------------
# DataLoader параметры
# ---------------------------
[dataloader]
num_workers = 0
shuffle = true
prepare_only = false
# ---------------------------
# Аудио
# ---------------------------
[audio]
sample_rate = 16000 # Целевая частота дискретизации
wav_length = 4 # Целевая длина (в секундах) для аудио
save_merged_audio = true
merged_audio_base_path = "saved_merges"
merged_audio_suffix = "_merged"
force_remerge = false
# ---------------------------
# Whisper и текст
# ---------------------------
[text]
# Если "csv", то мы стараемся брать текст из CSV, если там есть
# (поле text_column). Если нет - тогда Whisper (если нужно).
source = "csv"
text_column = "text"
whisper_model = "base"
# Указываем, где запускать Whisper: "cuda" (GPU) или "cpu"
whisper_device = "cpu"
# Если для dev/test в CSV нет текста, нужно ли всё же вызывать Whisper?
use_whisper_for_nontrain_if_no_text = true
# ---------------------------
# Общие параметры тренировки
# ---------------------------
[train.general]
random_seed = 42 # фиксируем random seed для воспроизводимости (0 = каждый раз разный)
subset_size = 100 # ограничение на количество примеров (0 = использовать весь датасет)
merge_probability = 0 # процент склеивания коротких файлов
batch_size = 8 # размер батча
num_epochs = 75 # число эпох тренировки
max_patience = 10 # максимальное число эпох без улучшений (для Early Stopping)
save_best_model = false
save_prepared_data = true # сохранять извлеченные признаки (эмбеддинги)
save_feature_path = './features/' # путь для сохранения эмбеддингов
search_type = "none" # стратегия поиска: "greedy", "exhaustive" или "none"
path_to_df_ls = 'Phi-4-mini-instruct_emotions_union.csv' # путь к датафрейму со смягченными метками - Qwen3-4B_emotions_union или Phi-4-mini-instruct_emotions_union
smoothing_probability = 0.0 # процент использования смягченных меток
# ---------------------------
# Параметры модели
# ---------------------------
[train.model]
model_name = "BiFormer" # название модели (BiGraphFormer, BiFormer, BiGatedGraphFormer, BiGatedFormer, BiMamba, PredictionsFusion, BiFormerWithProb, BiMambaWithProb, BiGraphFormerWithProb, BiGatedGraphFormerWithProb)
hidden_dim = 256 # размер скрытого состояния
hidden_dim_gated = 128 # скрытое состояние для gated механизмов
num_transformer_heads = 16 # количество attention голов в трансформере
num_graph_heads = 2 # количество голов в граф-механизме
tr_layer_number = 5 # количество слоев в трансформере
mamba_d_state = 16 # размер состояния в Mamba
mamba_ker_size = 6 # размер кернела в Mamba
mamba_layer_number = 5 # количество слоев Mamba
positional_encoding = false # использовать ли позиционное кодирование
dropout = 0.15 # dropout между слоями
out_features = 256 # размер финальных признаков перед классификацией
mode = 'mean' # способ агрегации признаков (например, "mean", "max", и т.д.)
# ---------------------------
# Параметры оптимизатора
# ---------------------------
[train.optimizer]
optimizer = "adam" # тип оптимизатора: "adam", "adamw", "lion", "sgd", "rmsprop"
lr = 1e-4 # начальная скорость обучения
weight_decay = 0.0 # weight decay для регуляризации
momentum = 0.9 # momentum (используется только в SGD)
# ---------------------------
# Параметры шедулера
# ---------------------------
[train.scheduler]
scheduler_type = "plateau" # тип шедулера: "none", "plateau", "cosine", "onecycle" ил и HuggingFace-стиль ("huggingface_linear", "huggingface_cosine" "huggingface_cosine_with_restarts" и т.д.)
warmup_ratio = 0.1 # отношение количества warmup-итераций к общему числу шагов (0.1 = 10%)
[embeddings]
# audio_model = "amiriparian/ExHuBERT" # Hugging Face имя модели для аудио
audio_model = "audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim" # Hugging Face имя модели для аудио
audio_classifier_checkpoint = "best_audio_model_2.pt"
text_classifier_checkpoint = "best_text_model.pth"
text_model = "jinaai/jina-embeddings-v3" # Hugging Face имя модели для текста
audio_embedding_dim = 256 # размерность аудио-эмбеддинга
text_embedding_dim = 1024 # размерность текст-эмбеддинга
emb_normalize = false # нормализовать ли вектор L2-нормой
max_tokens = 95 # ограничение на длину текста (токенов) при токенизации
device = "cpu" # "cuda" или "cpu", куда грузить модель
# audio_pooling = "mean" # "mean", "cls", "max", "min", "last", "attention"
# text_pooling = "cls" # "mean", "cls", "max", "min", "last", "sum", "attention"
[textgen]
# model_name = "deepseek-ai/DeepSeek-R1-Distill-Llama-8B" # deepseek-ai/deepseek-llm-1.3b-base или любая другая модель
# model_name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" # deepseek-ai/deepseek-llm-1.3b-base или любая другая модель
max_new_tokens = 50
temperature = 1.0
top_p = 0.95