(初研) 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博客

微调结果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416517.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04章【面向对象(上)】

文章目录 面向对象基本概念类与对象类和对象的定义格式对象与内存分析封装性构造方法this关键字值传递与引用传递对象的一对一关系static关键字main方法分析代码块单例设计模式对象数组与管理 面向对象基本概念 什么是面向对象&#xff1a; 面向对象是一种编程思想。面向对象…

Centos 7 单机部署 consul

一、下载安装 参考官网文档 Install | Consul | HashiCorp Developer 进入Centos 执行下面命令 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consul 这种方法安装完成…

calloc与realloc和malloc的区别以及new

目录 calloc、realloc 和 malloc 三个函数的区别在于 更详细的示例代码 交叉使用 内存泄漏 悬空指针 内存重叠 new 的语法 使用 new 运算符在堆上创建学生对象的示例 new和malloc都可以用于在堆上分配内存 calloc、realloc 和 malloc 是 C/C 中用于动态内存分配的函…

GPT应用开发:编写插件获取实时天气信息

欢迎阅读本系列文章&#xff01;我将带你一起探索如何利用OpenAI API开发GPT应用。无论你是编程新手还是资深开发者&#xff0c;都能在这里获得灵感和收获。 本文&#xff0c;我们将继续展示聊天API中插件的使用方法&#xff0c;让你能够轻松驾驭这个强大的工具。 插件运行效…

SpringBoot整合SSE

目录 1.SseController2. SseServiceSseServiceSseServiceImpl 3.SendMessageTask4.将定时任务加入启动类5.参考资料 1.SseController Slf4j RestController RequestMapping("sse") public class SseController {Autowiredprivate SseService sseService;RequestMappi…

近场与远场

一、近场与远场的区别 骚扰通过空间传输实质上是骚扰源的电磁能量以场的形式向四周空间传播。 场可分为近场和远场。 近场又称感应场。近场的性质与骚扰源的性质密切相关。 1、如果骚扰源是高电压&#xff0c;小电流的源&#xff0c;则近场只要是电场。如下图所示偶极子天线模…

力扣-202. 快乐数解析-弗洛伊德循环查找算法

题目链接 public static void Happy(int n) {int sum 0;int digit 0;for (int i 0; i < 20; i) {while (n ! 0) {digit n%10;sum digit*digit;n/10;}System.out.print(sum " ");n sum;sum 0;}} 使用代码测试一下每一代数字 n 2 : 4 16 37 58 89 145 42 …

web学习笔记(十六)

目录 HTML5新增标记汇总 1.新增语义化标签 2.新增音频和视频标签 2.1音频标签 audio 2.1视频标签 video 3.新增图像标签 4.新增表单元素和表单控件 5.新增应用程序标签&#xff08;使用率较低&#xff09; HTML5新增标记汇总 1.新增语义化标签 新增语义化标签能够便于…

【AJAX框架】AJAX入门与axios的使用

文章目录 前言一、AJAX是干什么的&#xff1f;二、AJAX的安装2.1 CDN引入2.2 npm安装 三、基础使用3.1 CDN方式3.2 node方式 总结 前言 在现代Web开发中&#xff0c;异步JavaScript和XML&#xff08;AJAX&#xff09;已经成为不可或缺的技术之一。AJAX使得网页能够在不刷新整个…

react native Gradle的原国外地址、本地下载、国内阿里腾讯镜像三种下载配置

一、国外地址&#xff1a;&#xff08;初始项目默认&#xff09; 下载地址&#xff1a;https://services.gradle.org/distributions/ 文件地址见下图&#xff1a; 注意&#xff1a;这个地址下载十次就有九次是连接超时&#xff0c;建议换另外两种方法 二、下载到本地&#x…

kubernetes工作负载-DamonSet

一、DemonSet的介绍 1、什么是DemonSet DaemonSet 控制器是用来保证在所有节点上运行一个 Pod 的副本当有节点加入集群时&#xff0c; 也会为他们新增一个 Pod。 当有节点从集群移除时&#xff0c;这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 简而言之…

【算法理论】期末复习-选填

算法的五个特征 1.有效性 算法必须在有限的时间能够完成&#xff0c;甚至用纸和笔完成 2.确定性 算法的每一步能够清楚的定义. 3.有限性 算法能够在有限的步骤完成 4.Input 算法有0个或者多个输入 5.Output 算法有一个或者多个输出 满足有效性&#xff0c;确定性&am…