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

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.lryc.cn/news/319093.html

相关文章:

  • Python类属性和对象属性大揭秘!
  • 北斗卫星在桥隧坡安全监测领域的应用及前景展望
  • 如何通过堡垒机JumpServer使用VisualCode 连接服务器进行开发
  • 【Linux】进程优先级
  • Fair Data Exchange:区块链实现的原子式公平数据交换
  • 详解优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器
  • Vue3+TS+Vite 找不到模块“@/components/xxx/xxx”或其相应的类型声明
  • Vue3-响应式基础:单文件和组合式文件
  • DVWA-File Upload文件上传
  • python之word操作
  • Linux下新增有root权限的用户
  • RPC通信原理(一)
  • 修改/etc/resolve.conf重启NetworkManager之后自动还原
  • Web前端依赖版本管理最佳实践
  • 多线程进阶
  • 总结linux常用命令
  • C++ 枚举
  • Vue2在一个页面内动态切换菜单显示对应的路由组件
  • 执行任务赚积分C卷(JavaPythonC++Node.jsC语言)
  • 接口测试之文件下载
  • 算法思想总结:双指针算法
  • python中的zip函数
  • Element 选择季度组件
  • 4.MongoDB中16个常用CURD
  • Tomcat数据源笔记
  • Spring-Kafka笔记整理
  • 已解决org.apache.hadoop.hdfs.protocol.QuotaExceededException异常的正确解决方法,亲测有效!!!
  • GitHub打不开的解决方案(超简单)
  • Unity开发一个FPS游戏之二
  • STM32F103 CubeMX 使用USB生成鼠标设备