当前位置: 首页 > news >正文

(初研) Sentence-embedding fine-tune notebook

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

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

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

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

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

1. git clone 代码.

参考链接:

sentence-embedding/sbert - sbert - Towhee

git clone https://towhee.io/sentence-embedding/sbert.git

2.  配置python环境

conda create -n sentence-embedding-3.9 python=3.9 -y

#进入代码根目录

pip install -r requirement.txt

pip install towhee

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  itsts_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)

python s_bert.py

发生下载数据集错误

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='sbert.net', port=443): Max retries exceeded with url: /datasets/stsbenchmark.tsv.gz (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f6bf717ad00>: Failed to establish a new connection: [Errno 101] Network is unreachable'))

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

发生相对包引用错误

You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ()`.
  warnings.warn(
Traceback (most recent call last):
  File "/data2/04_embedding/finetune/sentence-embedding/sbert/s_bert.py", line 281, in <module>
    op.train(training_config)
  File "/data2/04_embedding/finetune/sentence-embedding/sbert/s_bert.py", line 260, in train
    from .train_sts_task import train_sts
ImportError: attempted relative import with no known parent package

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

微调结果:

剩下的就是测试模型了(待续)。。。

相关文章:

  • Git学习笔记(第6章):GitHub操作(远程库操作)
  • Transformer详解(附代码实现及翻译任务实现)
  • TypeScript语法总结
  • 限流算法之流量控制的平滑之道:滑动时间窗算法
  • C生万物呀
  • Python 面向对象绘图(Matplotlib篇-16)
  • Vue 2生命周期已达终点,正式结束使命
  • [Python进阶] 正则表达式介绍
  • QT Model/View 设计模式中 selection 模型
  • 虚拟机下载docker
  • java 操作es 的基本操作
  • 10 个免费好用的图像压缩软件
  • 【PyTorch】PyTorch之Reduction Ops
  • 【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot
  • git 删除 submodule 子模块的步骤
  • 分享的文章《人生如棋》
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译] React v16.8: 含有Hooks的版本
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • create-react-app项目添加less配置
  • css的样式优先级
  • dva中组件的懒加载
  • Java多线程(4):使用线程池执行定时任务
  • Python语法速览与机器学习开发环境搭建
  • React的组件模式
  • SQL 难点解决:记录的引用
  • Swoft 源码剖析 - 代码自动更新机制
  • Xmanager 远程桌面 CentOS 7
  • 对象引论
  • 基于webpack 的 vue 多页架构
  • 删除表内多余的重复数据
  • 白色的风信子
  • 【干货分享】dos命令大全
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # include “ “ 和 # include < >两者的区别
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Java数据结构)ArrayList
  • (pojstep1.3.1)1017(构造法模拟)
  • (vue)页面文件上传获取:action地址
  • (分布式缓存)Redis持久化
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (三十五)大数据实战——Superset可视化平台搭建
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net 获取url的方法
  • .Net 知识杂记
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET关于 跳过SSL中遇到的问题
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • ?php echo ?,?php echo Hello world!;?
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [Angular 基础] - 数据绑定(databinding)