wsl-oracle 安装 omlutils

wsl-oracle 安装 omlutils

  • 1. 安装 cmake 和 gcc-c++
  • 2. 安装 omlutils
  • 3. 使用 omlutils 创建 onnx 模型

1. 安装 cmake 和 gcc-c++

sudo dnf install -y cmake gcc-c++

2. 安装 omlutils

pip install omlutils-0.10.0-cp312-cp312-linux_x86_64.whl

不需要安装 requirements.txt,特别是里面有torch==2.2.0+cpu,会卸载掉支持 GPU 的 torch。

--extra-index-url https://download.pytorch.org/whl/cpu
torch==2.2.0+cpu

3. 使用 omlutils 创建 onnx 模型

安装 sentencepiece

pip install sentencepiece

修复omlutils部分代码使其支持支持大于1GB,是tokenizer是XLMRobertaTokenizer的模型。

vi /home/oracle/miniconda/envs/learn-oracle23c/lib/python3.12/site-packages/omlutils/_pipeline/steps.py--- beforesize_threshold = quant_limit if is_quantized else 0.99e9
------ aftersize_threshold = quant_limit if is_quantized else 0.99e9 * 5
--- after
vi /home/oracle/miniconda/envs/learn-oracle23c/lib/python3.12/site-packages/omlutils/_pipeline/steps.py--- beforedef validateBertTokenizer(self,tokenizer):supportedTokenizer=[transformers.models.bert.BertTokenizer, transformers.models.distilbert.DistilBertTokenizer,transformers.models.mpnet.MPNetTokenizer]cls=tokenizer.__class__if(cls not in supportedTokenizer):raise ValueError(f"Unsupported tokenizer {cls}")
------ afterdef validateBertTokenizer(self,tokenizer):supportedTokenizer=[transformers.models.bert.BertTokenizer, transformers.models.distilbert.DistilBertTokenizer,transformers.models.mpnet.MPNetTokenizer,transformers.models.xlm_roberta.tokenization_xlm_roberta.XLMRobertaTokenizer]cls=tokenizer.__class__if(cls not in supportedTokenizer):raise ValueError(f"Unsupported tokenizer {cls}")
--- after
vi /home/oracle/miniconda/envs/learn-oracle23c/lib/python3.12/site-packages/omlutils/_onnx_export/tokenizer_export.py--- before
TOKENIZER_MAPPING = {transformers.models.bert.BertTokenizer: SupportedTokenizers.BERT,transformers.models.clip.CLIPTokenizer: SupportedTokenizers.CLIP,transformers.models.distilbert.DistilBertTokenizer: SupportedTokenizers.BERT,transformers.models.gpt2.GPT2Tokenizer: SupportedTokenizers.GPT2,#transformers.models.llama.LlamaTokenizer: SupportedTokenizers.SENTENCEPIECE,# transformers.models.mluke.MLukeTokenizer: SupportedTokenizers.SENTENCEPIECE,transformers.models.mpnet.MPNetTokenizer: SupportedTokenizers.BERT,# transformers.models.roberta.tokenization_roberta.RobertaTokenizer: SupportedTokenizers.ROBERTA,# transformers.models.xlm_roberta.XLMRobertaTokenizer: SupportedTokenizers.SENTENCEPIECE,
}
------ after
TOKENIZER_MAPPING = {transformers.models.bert.BertTokenizer: SupportedTokenizers.BERT,transformers.models.clip.CLIPTokenizer: SupportedTokenizers.CLIP,transformers.models.distilbert.DistilBertTokenizer: SupportedTokenizers.BERT,transformers.models.gpt2.GPT2Tokenizer: SupportedTokenizers.GPT2,#transformers.models.llama.LlamaTokenizer: SupportedTokenizers.SENTENCEPIECE,# transformers.models.mluke.MLukeTokenizer: SupportedTokenizers.SENTENCEPIECE,transformers.models.mpnet.MPNetTokenizer: SupportedTokenizers.BERT,# transformers.models.roberta.tokenization_roberta.RobertaTokenizer: SupportedTokenizers.ROBERTA,transformers.models.xlm_roberta.XLMRobertaTokenizer: SupportedTokenizers.SENTENCEPIECE,
}
---

创建 multilingual_e5_small.py,内容如下,

from omlutils import EmbeddingModel, EmbeddingModelConfig
print(f"start...")
config = EmbeddingModelConfig.from_template("text", max_seq_length=512)
em = EmbeddingModel(model_name="intfloat/multilingual-e5-small", config=config)
em.export2file("multilingual_e5_small", output_dir=".")
print(f"complete...")

创建 onnx 模型,

python multilingual_e5_small.py

程序执行完成后,会创建一个 multilingual_e5_small.onnx 文件。

(可选)升级transformers,

pip install -U transformers

完结!

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

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

相关文章

人工智能入门之旅:从基础知识到实战应用(三)

一、机器学习入门 1.机器学习基本概念 •监督学习、非监督学习、半监督学习和强化学习是机器学习中的主要学习类型,它们在解决不同类型的问题时具有不同的方法和应用场景: 监督学习(Supervised Learning): 监督学习是…

单个数据盘分区如何配置LVM

要在单个 磁盘上划分多个数据盘主分区并配置 LVM(Logical Volume Manager),你可以按照以下步骤进行操作: 1. 划分分区:使用 fdisk 或parted等其他磁盘分区工具,在单个磁盘上创建多个主分区。例如&#xff0…

备战蓝桥杯Day28 - 贪心算法

一、贪心算法 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构指的是…

【Python】查看指定目录(包括子目录)下指定年份的数量和占用量,附带windows可执行程序。

目录 安装依赖 代码 打包为可执行程序 如果你使用了Anaconda,请先切换环境!!! 安装依赖 pip install tqdm aiofiles 代码 新建一个find.py文件,将以下代码粘贴进去: import os import datetime f…

Linux下进行JavaEE开发-安装JDK、Tomcat、MySQL

目录 JDKTomcatMySQL JDK 安装JDK步骤: 1、创建目录mkdir /opt/jdk 2、将jdk压缩包通过xftp6上传到该目录 3、cd /opt/jdk 4、tar -zxvf jdk-8u151-linux-x64.tar.gz 5、mkdir /usr/local/java 6、mv /opt/jdk/jdk1.8.0_151 /usr/local/java 7、修改环境变量…

Leetcode刷题笔记——数组与字符串篇

Leetcode刷题笔记——数组与字符串篇 一、数组 第一题 Leetcode14:最长公共前缀:简单题 (详情点击链接见原题) 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 "" 当前…

深入学习和理解Java NIO的高级特性

学习使用Path、Paths和Files类来操作文件系统 在Java 7引入的NIO.2(New Input/Output 2)中,Path、Paths和Files类是处理文件系统操作的核心类。它们提供了一套强大的文件I/O操作接口,使得读写文件、访问文件属性、遍历文件目录等…

解锁基于LLMS的咒语:通过上下文学习重新思考对齐

一、写作动机: 最近的一项研究,LIMA,表明仅使用1K个示例进行SFT也可以实现显著的对齐性能,这表明对齐微调的效果可能是“表面的”。(知识和推理能力来源于预训练,而不是必须通过对齐微调获得的。&#xff…

计算机图形学学习(一)——线的绘制、三角形填充绘制

以下摘抄自本人的计算机图形学上机报告 实验内容及要求: 理解并掌握中点画线法、Bresenham算法、扫描线法和重心坐标法的基本原理和算法步骤。使用编程语言C实现上述算法,并编写相应的代码。对于直线绘制算法,要求能够绘制水平、垂直、斜向等…

Python助力:高效合并多个Word文档

目录 写在开头1 准备工作1.1 安装Python环境1.2 安装必要的库 2 理解Word文档的结构2.1 python-docx库的基本使用2.2 文档基本组成2.2.1 段落2.2.2 表格2.2.3 图片2.2.4 页眉和页脚 3 编写合并Word文档的脚本3.1 创建新的Word文档3.2 读取并合并文档内容3.2.1 合并段落3.2.2 合…

【消息队列开发】 实现内存加载

文章目录 🍃前言🌳实现思路🚩读取消息长度🚩读取相应长度的消息🚩进行反序列化🚩判定是否有效🚩加入有效消息🚩收尾工作🚩代码实现 ⭕总结 🍃前言 本次开发目…

未解决的问题:字符数组中元素的个数

情形1&#xff1a; #include<stdio.h> int main() {int arr_int1[10];int arr_int2[]{1,2,3,4,5};char arr_char1[10];char arr_char2[]"world";char arr_char3[]{h,e,l,l,o};int i;i0;while(arr_char2[i]!\0){i;}printf("%d\n",i);i0;while(arr_ch…

mediapipe最小编译、插件开发及demo

mediapipe最小编译、插件开发及demo 1.创建容器2.修改apt源3.安装依赖4.安装conda环境5.安装cmake6.安装bazel7.安装Opencv(非必须)8.下载 mediapipe 0.8.119.编译最简版本的mediapipe10.拷贝编译好的库和头文件11.sample插件的参数12.插件源码13.编译插件14.demo源码15.编译de…

C语言顺序、选择、循环结构与预处理

C语言程序设计&#xff0c;知识一遍过 &#x1f525;温馨提示&#x1f525;&#xff1a;使用电脑端阅读&#xff0c;获取更好体验&#x1f680; 【参考】C 语言教程 | 菜鸟教程 (runoob.com) 文章目录 C语言程序设计&#xff0c;知识一遍过顺序结构表达式语句字符的输入与输出格…

lwip优化任务优先级

在lwIP中&#xff0c;ethernetif_input线程负责接收和处理从以太网接口接收到的数据包&#xff0c;而tcpip主线程则负责处理lwIP协议栈中的各种事件和数据包。一般情况下&#xff0c;ethernetif_input线程的优先级应该设置为低于tcpip主线程的优先级。 这是因为在实时操作系统…

HarmonyOS ArkUI入门—HarmonyOS ArkUI来开发一个健康饮食应用

本文演示如果在DevEco Studio 3里面&#xff0c;用HarmonyOS的ArkUI来开发一个健康饮食应用。体验HarmonyOS 3最新API 9&#xff01; 获取HarmonyOS应用 HarmonyOS的ArkUI来开发一个健康饮食的ArkUI程序“ArkUIHealthyDiet”&#xff0c;基础代码已经有了[1]&#xff0c;个人…

20 OpenCV像素重映

文章目录 像素重映remap 重映算子代码示例 像素重映 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去&#xff0c;形成一张新的图像。 g(x,y)是重映射之后的图像&#xff0c;h(x,y)是功能函数&#xff0c;f是源图像 remap 重映算子 Remap…

Java项目:52 springboot基于SpringBoot的旅游网站的设计与实现013

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 旅游网站主要功能如下&#xff1a; 1.用户管理&#xff1a;注册、登录、退出、修改密码&#xff1b; 2.分类显示&#xff1a;显示旅游路线的分类&am…

MD5算法:密码学中的传奇

title: MD5算法&#xff1a;密码学中的传奇 date: 2024/3/15 20:08:07 updated: 2024/3/15 20:08:07 tags: MD5起源算法原理安全分析优缺点比较技术改进示例代码应用趋势 MD5算法起源&#xff1a; MD5&#xff08;Message Digest Algorithm 5&#xff09;算法是由MIT的计算机…

OpenHarmony教程指南—ArkTS时钟

简单时钟 介绍 本示例通过使用ohos.display 接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * Math.PI /…