由于工作需要,需要对embedding模型进行微调,我调用了几种方案,都比较繁琐。先记录一个相对简单的方案。以下内容并不一定正确,请刷到的大佬给予指正,不胜感激!!!

一.对BGE模型,如bge-large-zh 、bge-large-en

(初研) Sentence-embedding fine-tune notebook-LMLPHP

二.对sentensce embedding bert model ,如多语言模型 distiluse-base-multilingual-cased-v1

(初研) Sentence-embedding fine-tune notebook-LMLPHP

三.对于sentence embedding bert model 使用 towhee 进行微调,以下主要对这个方案进行阐述:

(初研) Sentence-embedding fine-tune notebook-LMLPHP

做微调之前需要准备微调样本数据,准备方式,我目前思考跟第二种方案是一样的。我偷懒,先验证代码可以跑通,所以用了example dataset

1. git clone 代码.

参考链接:

sentence-embedding/sbert - sbert - Towhee

(初研) Sentence-embedding fine-tune notebook-LMLPHP

2.  配置python环境

3.运行微调代码(其实就是继续训练原有模型)

修改微调核心代码如下:

if __name__ == '__main__':
    PROJ_DIR = '/data2/04_embedding/finetune/sentence-embedding/'
    sys.path.append(os.path.join(PROJ_DIR, 'sbert'))
    from sentence_transformers import util
    # op = STransformers(model_name='nli-distilroberta-base-v2')
    op = STransformers(model_name='distiluse-base-multilingual-cased-v1')
    # Check if dataset exsist. If not, download and extract  it
    sts_dataset_path = 'datasets/stsbenchmark.tsv.gz'

    if not os.path.exists(sts_dataset_path):
        util.http_get('https://sbert.net/datasets/stsbenchmark.tsv.gz', sts_dataset_path)

    training_config = {
        'sts_dataset_path': sts_dataset_path,
        'train_batch_size': 16,
        'num_epochs': 4,
        'model_save_path': './output'
    }
    op.train(training_config)

(初研) Sentence-embedding fine-tune notebook-LMLPHP

手动下载,并放到datasets目录下。

参考我的另一个记录:ImportError: attempted relative import with no known parent package-CSDN博客

微调结果:

(初研) Sentence-embedding fine-tune notebook-LMLPHP剩下的就是测试模型了(待续)。。。

01-20 08:08