FlagEmbedding
FlagEmbedding copied to clipboard
Retrieval and Retrieval-augmented LLMs
modified some bugs or typo, and add 2 pip packages which are required to run llara models.
https://github.com/FlagOpen/FlagEmbedding/blob/274f4c055a3685e0296a1593fd822f63b98bbca9/FlagEmbedding/flag_models.py#L516 是否应该删除下划线以保持一致性
作者你好,我研读源码时发现一个比较疑惑的问题,想请教一下。 - 问题所在代码路径是这里: https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/reranker/modeling.py - 具体的问题出现在代码中,计算loss部分的: 计算loss时候所用代码为 ```python loss = self.cross_entropy(scores, self.target_label) ``` - 其中target_label: 代码初始化时,注册了一个target_label,是一个长为batch_size,且全为0,的一维tensor。 - scores是一个,size为(batch_size, train_group_size)的tensor - 我问题是需要确认以下理解是否有误: 这里整个过程是否是如此:输入为 (batch_size*train_group_size, seq_len )也即每个(query,doc)单独输入模型,输出一个logit其size为(batch_size*train_group_size,1)=> 对于每个query,将其所有相关的doc打包起来,间接认为是一个多分类的输出也即 scores的(batch_size, train_group_size)=> 认为第一个打包的query结果其标签都是0,也即我们的正样本pos,故而target_label 都为0...
看到bge-m3也有colbert的特性,是否可以在代码库中集成延迟交互与maxsim呢
rerank分值区间是多少呢?看到有负数也有大于1的。想设置一个阈值做判断处理
 20w条难负样本训练过程中损失出现有规律的震荡,求大佬解惑 训练参数: CUDA_VISIBLE_DEVICES=0,1,2,3,4 torchrun --nproc_per_node 5 --rdzv_id=100 --rdzv_backend=c10d --rdzv_endpoint=localhost:29501 \ -m FlagEmbedding.reranker.run \ --output_dir ./saves/bge-reranker-v2-m3/hn_ft0906_ \ --model_name_or_path /home/workspace/embedding-model/BAAI/bge-reranker-v2-m3 \ --train_data ./dataset/yoyo_finetune_data_minedHN_new.jsonl \ --learning_rate 1e-5 \ --fp16 \...
看到有转onxx等的建议,如果不使用
官方代码在训练时没有添加验证集指标,不太容易监测是否过拟合。经过尝试,增加`compute_metrics`也不行,`Trainer`的`evaluate`逻辑有点复杂走不到这里,最终还是得重构一下`evaluate`。下面分享一个很简单的重构供参考,训练过程中返回验证集的损失,只需正常添加`do_eval`、`eval_steps`、`evaluation_strategy`等参数就像。可以根据自己的需求完善验证的逻辑。 `trainer.py`里`class BiTrainer(Trainer):` ```python def evaluate( self, test_dataset: Optional[Union[Dataset, Dict[str, Dataset]]] = None, ignore_keys: Optional[List[str]] = None, metric_key_prefix: str = "eval", ) -> Dict[str, float]: losses = [] for inputs...
在微调BGE-M3时`grad_norm`总是比较大,在10~20左右,`max_grad_norm`也设成1了。数据大约1w条,私有的业务数据。部分参数如下: do_train=True, do_eval=True, train_data=data_path + "/train", val_data=data_path + '/val', evaluation_strategy="steps", eval_steps=0.1, learning_rate=lr, bf16=True, weight_decay=0.01, warmup_ratio=0.05, lr_scheduler_type='cosine', max_grad_norm=1, logging_first_step=True, num_train_epochs=num_train_epochs, per_device_train_batch_size=per_device_train_batch_size, per_device_eval_batch_size=1, gradient_accumulation_steps=gradient_accumulation_steps, dataloader_drop_last=True, normlized=True, shuffle_ratio=0.02, temperature=0.02, query_max_len=64, passage_max_len=1024, train_group_size=8, negatives_cross_device=True,...
2024-08-31 12:49:22,685] [INFO] [real_accelerator.py:203:get_accelerator] Setting ds_accelerator to cuda (auto detect) [2024-08-31 12:49:22,685] [INFO] [real_accelerator.py:203:get_accelerator] Setting ds_accelerator to cuda (auto detect) [2024-08-31 12:49:23,762] [INFO] [comm.py:652:init_distributed] cdb=None [2024-08-31 12:49:23,762] [INFO] [comm.py:683:init_distributed] Initializing...