资讯动态

sentence-transformers CrossEncoder 推理加速实战:PyTorch 精度与编译调优、ONNX/OpenVINO 导出、优化与量化

发布时间:2026/9/20 18:12:10 来源:尧图企业网站定制
sentence-transformers CrossEncoder 推理加速实战PyTorch 精度与编译调优、ONNX/OpenVINO 导出、优化与量化【免费下载链接】sentence-transformersState-of-the-Art Embeddings, Retrieval, and Reranking项目地址: https://gitcode.com/gh_mirrors/se/sentence-transformers本文围绕 CrossEncoder 推理加速官方文档 展开系统讲解 CrossEncoder 模型在 PyTorch、ONNX、OpenVINO 三种推理后端下的加速手段从 fp16/bf16 半精度加载与torch.compile编译到 ONNX 图优化O1–O4与动态 int8 量化再到 OpenVINO 静态量化。读完后你将掌握每个后端对应的安装方式、导出命令、model_kwargs关键参数、产物命名规则并能基于官方基准测试数据为自己的硬件做出后端选型。1. 三种推理后端总览Sentence Transformers 为 CrossEncoder 提供三种推理后端各自针对不同的硬件与场景做了优化见 效率文档后端定位安装方式典型加速手段PyTorch默认CrossEncoder 的默认后端基础安装fp16/bf16 半精度、torch.compileONNX灵活且高效的模型加速器pip install sentence-transformers[onnx]或[onnx-gpu]图优化 O1–O4、动态 int8 量化OpenVINO面向IntelCPU 的模型优化pip install sentence-transformers[openvino]静态 int8 量化三个后端的可选依赖在 pyproject.toml 中定义onnx [optimum-onnx[onnxruntime]]、onnx-gpu [optimum-onnx[onnxruntime-gpu]]、openvino [optimum-intel[openvino]2.0.0]即 ONNX 后端依赖 Optimum ONNX RuntimeGPU 版使用 onnxruntime-gpuOpenVINO 后端依赖 Optimum Intel。在源码层面后端选择在CrossEncoder.__init__的backend参数上收口取值为Literal[torch, onnx, openvino]见 cross_encoder/model.pypredict()内部通过self(features, **kwargs)走模型__call__从而保证model.compile()对前向传播生效见 _inference。2. PyTorch 后端默认路径与 GPU 加速PyTorch 是 CrossEncoder 的默认后端。不指定device时框架会在cuda、mps、cpu中自动选择当前可用的最强设备。最基础的用法如下from sentence_transformers import CrossEncoder model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2) query Which planet is known as the Red Planet? passages [ Venus is often called Earths twin because of its similar size and proximity., Mars, known for its reddish appearance, is often referred to as the Red Planet., Jupiter, the largest planet in our solar system, has a prominent red spot., Saturn, famous for its rings, is sometimes mistaken for the Red Planet. ] scores model.predict([(query, passage) for passage in passages]) print(scores)注意predict对单标签模型默认应用nn.Sigmoid激活get_default_activation_fn而 ONNX/OpenVINO 导出的图只包含分类头之前的部分因此在库外自行调用导出图时需要手动补上相同的激活函数如 Sigmoid才能与库内结果一致。2.1 半精度fp16 与 bf16Float32fp32是torch的默认精度float16fp16是半精度格式可以在 GPU 上以极小的精度损失换取推理加速。初始化时通过torch_dtype指定或对已加载模型调用model.half()from sentence_transformers import CrossEncoder model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, model_kwargs{torch_dtype: float16}) # 或者model.half() query Which planet is known as the Red Planet? passages [ Venus is often called Earths twin because of its similar size and proximity., Mars, known for its reddish appearance, is often referred to as the Red Planet., Jupiter, the largest planet in our solar system, has a prominent red spot., Saturn, famous for its rings, is sometimes mistaken for the Red Planet. ] scores model.predict([(query, passage) for passage in passages]) print(scores)Bfloat16bf16与 fp16 类似但相比 fp32 保留了更多原始精度from sentence_transformers import CrossEncoder model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, model_kwargs{torch_dtype: bfloat16}) # 或者model.bfloat16() query Which planet is known as the Red Planet? passages [ Venus is often called Earths twin because of its similar size and proximity., Mars, known for its reddish appearance, is often referred to as the Red Planet., Jupiter, the largest planet in our solar system, has a prominent red spot., Saturn, famous for its rings, is sometimes mistaken for the Red Planet. ] scores model.predict([(query, passage) for passage in passages]) print(scores)2.2 Flash Attention可以开但不推荐Flash Attention 可以通过model_kwargs{attn_implementation: flash_attention_2}启用安装方式pip install kernels或pip install flash-attnfrom sentence_transformers import CrossEncoder model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, model_kwargs{torch_dtype: float16, attn_implementation: flash_attention_2}, )但官方文档明确指出目前不建议在 CrossEncoder 上使用使 Flash Attention 在 Sentence Transformer 和 Multi-Vector Encoder 上大放异彩的“自动输入去填充unpadding”只对特征抽取任务生效因为分类头classification head与展平flattened输入不兼容。官方基准测试显示在未去填充的情况下纯内核替换kernel swap在长文本上与 fp16 打平在短文本上则慢 20%45%覆盖全部四个受测 reranker。因此建议直接去掉attn_implementation使用普通 fp16。2.3 torch.compile编译加速及其边界条件model.compile()定义于 base/model.py参数原样转发给torch.compile用编译包裹模型前向。收益与模型规模、硬件强相关模型越大收益越明显小模型在快速 GPU 上收益甚微甚至略慢因为其推理时间被分词和 Python 开销主导。务必在自己的模型、硬件与输入上实测。它与上面的 fp16/bf16 选项可以组合使用from sentence_transformers import CrossEncoder model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, model_kwargs{torch_dtype: bfloat16}) model.compile(dynamicTrue) query Which planet is known as the Red Planet? passages [ Venus is often called Earths twin because of its similar size and proximity., Mars, known for its reddish appearance, is often referred to as the Red Planet., ] pairs [(query, passage) for passage in passages] scores model.predict(pairs)关键参数与注意事项dynamicTrue启用动态形状使一张编译图可以处理可变序列长度减少输入长度变化带来的重复编译recompilation。追求最大加速时使用modereduce-overhead它通过 CUDA graphs 消除 batch size 为 1 时主导耗时的每个 kernel 的启动开销。model.compile(modereduce-overhead)但 CUDA graphs 按输入形状逐形捕获图因此要求形状稳定。预测时通过processing_kwargs把每个输入填充到接近典型长度的固定长度scores model.predict(pairs, processing_kwargs{text: {padding: max_length, max_length: 256}})max_length是短输入被填充到的固定长度长输入也会被截断到该值该参数可选默认为 tokenizer 的model_max_length。两个常见陷阱来自官方文档若把填充目标设成很大的model_max_length例如 8192每次调用都要处理完整长度结果比不编译还慢CUDA graphs 会复用输出缓冲区凡是跨调用保留的张量都要先clone默认的convert_to_numpyTrue已把结果拷贝出 GPU是安全的编译是惰性的基准测试或上线服务前先用代表性输入预热warm up。3. ONNX 后端转换、图优化与动态量化使用 ONNX 后端需要带onnx或onnx-gpuextra 安装分别对应 CPU 与 GPU 加速pip install sentence-transformers[onnx-gpu] # 或 pip install sentence-transformers[onnx]加载时指定backendonnx即可转换为 ONNX 并运行from sentence_transformers import CrossEncoder model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx) query Which planet is known as the Red Planet? passages [ Venus is often called Earths twin because of its similar size and proximity., Mars, known for its reddish appearance, is often referred to as the Red Planet., Jupiter, the largest planet in our solar system, has a prominent red spot., Saturn, famous for its rings, is sometimes mistaken for the Red Planet. ] scores model.predict([(query, passage) for passage in passages]) print(scores)如果模型路径或仓库中已经存在 ONNX 模型Sentence Transformers 会自动直接加载否则会在首次加载时自动导出为 ONNX 格式。3.1 model_kwargs 关键参数与自动导出判定所有经model_kwargs传入的关键字参数都会转发给 Optimum 的ORTModelForSequenceClassification.from_pretrained任务映射见 backend/load.pyCrossEncoder 走sequence-classification分支。几个值得注意的参数provider加载模型使用的 ONNX Runtime 执行提供者例如CPUExecutionProvider。从源码看若未指定会默认取ort.get_available_providers()[0]即当前环境可用的最高优先级 provider如 TensorRT CUDA CPU见 load.py。file_name要加载的 ONNX 文件名。未指定时默认为model.onnx或子目录下的onnx/model.onnx。该参数主要用于指定优化或量化后的模型文件。export布尔开关指定是否导出模型。若不提供当仓库或目录中尚不存在 ONNX 模型时自动置为True。自动导出的判定逻辑集中在 backend_should_export优先检查export参数 → 检查根目录 → 检查onnx/子目录若目录里存在多个.onnx文件而你没有指定file_name会给出警告并默认加载onnx/子目录中的文件。提示强烈建议把导出的模型保存下来避免每次运行代码都重新导出。本地模型调用model.save_pretrained(...)Hub 模型调用model.push_to_hub(...)# 本地模型 model CrossEncoder(path/to/my/model, backendonnx) model.save_pretrained(path/to/my/model) # 或来自 Hugging Face Hub 的模型 model CrossEncoder(Alibaba-NLP/gte-reranker-modernbert-base, backendonnx) model.push_to_hub(Alibaba-NLP/gte-reranker-modernbert-base, create_prTrue)这与源码行为一致加载器导出成功后会通过 backend_warn_to_save 打印保存建议且_save_pretrained被包装为固定写入onnx/子目录见 load.py。3.2 用 export_optimized_onnx_model 做 ONNX 图优化ONNX 模型可以用 Optimum 进行优化CPU 与 GPU 都能获益。入口函数 export_optimized_onnx_model 把优化结果保存到你指定的目录或模型仓库参数如下model以 ONNX 后端加载的 Sentence Transformer、Sparse Encoder 或 Cross Encoder 模型源码会检查model.transformers_model是否为ORTModel实例否则抛ValueErroroptimization_configO1、O2、O3或O4对应AutoOptimizationConfig的优化等级也可以传入OptimizationConfig实例。四个等级的定义见 optimize.pyO1基础通用优化O2基础 扩展通用优化加上 transformers 特定融合O3O2 基础上增加 GELU 近似fast Gelu approximationO4O3 基础上使用混合精度fp16仅限 GPU。model_name_or_path保存优化模型文件的路径若要推送到 Hugging Face Hub 则填仓库名push_to_hub可选是否推送到 Hubcreate_pr可选推送时是否创建 pull request适合对仓库没有写权限的场景file_suffix可选附加到模型文件名的后缀。未指定时使用优化等级字符串如O3若传入的是非字符串等级配置则使用optimized。以O3 优化为例基础与扩展通用优化 transformers 特定融合 fast Gelu 近似。Hub 模型场景——优化只做一次from sentence_transformers import CrossEncoder, export_optimized_onnx_model model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx) export_optimized_onnx_model( modelmodel, optimization_configO3, model_name_or_pathcross-encoder/ms-marco-MiniLM-L6-v2, push_to_hubTrue, create_prTrue, )在 PR 合并之前可以通过revision从 PR 分支加载验证from sentence_transformers import CrossEncoder pull_request_nr 2 # NOTE: 改成你的 pull request 编号 model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx, model_kwargs{file_name: onnx/model_O3.onnx}, revisionfrefs/pr/{pull_request_nr}, )PR 合并之后直接加载from sentence_transformers import CrossEncoder model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx, model_kwargs{file_name: onnx/model_O3.onnx}, )本地模型场景——优化只做一次from sentence_transformers import CrossEncoder, export_optimized_onnx_model model CrossEncoder(path/to/my/mpnet-legal-finetuned, backendonnx) export_optimized_onnx_model( modelmodel, optimization_configO3, model_name_or_pathpath/to/my/mpnet-legal-finetuned )优化完成后的加载方式from sentence_transformers import CrossEncoder model CrossEncoder( path/to/my/mpnet-legal-finetuned, backendonnx, model_kwargs{file_name: onnx/model_O3.onnx}, )文件命名规则可直接在源码中印证save_or_push_to_hub_model 中 ONNX 产物统一为model_{file_suffix}.onnx并放入onnx/子目录上传/保存。3.3 用 export_dynamic_quantized_onnx_model 做 int8 动态量化ONNX 模型可以量化到 int8 精度以提升CPU上的推理速度。入口函数 export_dynamic_quantized_onnx_model 与优化函数类似但量化方式是动态量化与静态量化不同它不需要校准数据集。参数如下model以 ONNX 后端加载的模型quantization_configarm64、avx2、avx512或avx512_vnni对应AutoQuantizationConfig的量化配置也可以传入QuantizationConfig实例model_name_or_path保存路径或 Hub 仓库名push_to_hub/create_pr可选同优化函数file_suffix可选未指定时默认使用qint8_quantized从源码看传入字符串配置时会拼成{dtype}_{配置名}例如qint8_avx512_vnni见 quantize.py。官方文档实测四种默认量化配置arm64、avx2、avx512、avx512_vnni在其 CPU 上带来的加速大致相当。以avx512_vnniint8 量化为例Hub 模型场景——量化只做一次from sentence_transformers import CrossEncoder, export_dynamic_quantized_onnx_model model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx) export_dynamic_quantized_onnx_model( modelmodel, quantization_configavx512_vnni, model_name_or_pathsentence-transformers/cross-encoder/ms-marco-MiniLM-L6-v2, push_to_hubTrue, create_prTrue, )PR 合并前注意量化产物文件名带配置后缀from sentence_transformers import CrossEncoder pull_request_nr 2 # NOTE: 改成你的 pull request 编号 model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx, model_kwargs{file_name: onnx/model_qint8_avx512_vnni.onnx}, revisionfrefs/pr/{pull_request_nr}, )PR 合并后from sentence_transformers import CrossEncoder model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, backendonnx, model_kwargs{file_name: onnx/model_qint8_avx512_vnni.onnx}, )本地模型场景——量化只做一次from sentence_transformers import CrossEncoder, export_dynamic_quantized_onnx_model model CrossEncoder(path/to/my/mpnet-legal-finetuned, backendonnx) export_dynamic_quantized_onnx_model( modelmodel, quantization_configavx512_vnni, model_name_or_pathpath/to/my/mpnet-legal-finetuned )量化完成后的加载from sentence_transformers import CrossEncoder model CrossEncoder( path/to/my/mpnet-legal-finetuned, backendonnx, model_kwargs{file_name: onnx/model_qint8_avx512_vnni.onnx}, )4. OpenVINO 后端CPU 加速导出与静态量化OpenVINO 通过把模型导出为 OpenVINO 格式来加速CPU推理。需要带openvinoextra 安装pip install sentence-transformers[openvino]转换与运行方式from sentence_transformers import CrossEncoder model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, backendopenvino) query Which planet is known as the Red Planet? passages [ Venus is often called Earths twin because of its similar size and proximity., Mars, known for its reddish appearance, is often referred to as the Red Planet., Jupiter, the largest planet in our solar system, has a prominent red spot., Saturn, famous for its rings, is sometimes mistaken for the Red Planet. ] scores model.predict([(query, passage) for passage in passages]) print(scores)同样地模型路径或仓库中已有 OpenVINO 模型则直接加载否则自动转换。库外自行使用导出的 OpenVINO 图时需要手动应用激活函数如 Sigmoid才能得到与库内一致的结果。model_kwargs中的参数会转发给 Optimum Intel 的OVBaseModel.from_pretrained任务映射见 load_openvino_model。值得注意的参数file_name要加载的模型文件名。未指定时默认为openvino_model.xml或子目录下的openvino/openvino_model.xml。可用于指定优化或量化后的模型export布尔开关未提供时若仓库/目录中没有 OpenVINO 模型则自动置为True。与 ONNX 相同强烈建议保存导出结果# 本地模型 model CrossEncoder(path/to/my/model, backendopenvino) model.save_pretrained(path/to/my/model) # 或来自 Hugging Face Hub 的模型 model CrossEncoder(Alibaba-NLP/gte-reranker-modernbert-base, backendopenvino) model.push_to_hub(Alibaba-NLP/gte-reranker-modernbert-base, create_prTrue)源码中 OpenVINO 的_save_pretrained固定写入openvino/子目录见 load.py。4.1 用 export_static_quantized_openvino_model 做 int8 静态量化OpenVINO 模型可通过 Optimum Intel 量化到 int8 以提速。入口函数 export_static_quantized_openvino_model 执行的是训练后静态量化PTQ, Post-Training Static Quantization与 ONNX 的动态量化不同它需要校准数据集来标定量化常数无需重新训练模型。参数如下model以 OpenVINO 后端加载的模型quantization_config可选量化配置。None表示默认 8-bit 量化也可以传字典或OVQuantizationConfig实例model_name_or_path保存路径或 Hub 仓库名dataset_name可选校准数据集名称未指定时默认使用glue的sst2子集dataset_config_name可选数据集的具体配置dataset_split可选数据集切分如train、testcolumn_name可选用于校准的数据列名push_to_hub/create_pr可选同前file_suffix可选未指定时默认qint8_quantized。校准细节可以直接在源码中确认quantize.py预处理把输入按paddingmax_length、max_length384、截断方式分词默认数据集nyu-mll/glue的sst2配置、train切分、sentence列校准样本数默认取quantization_config.num_samples否则 300 条且dataset_name、dataset_config_name、dataset_split、column_name四个参数要么全部指定、要么全部不指定否则抛ValueError。以静态量化到 int8 为例。Hub 模型场景——量化只做一次from sentence_transformers import CrossEncoder, export_static_quantized_openvino_model model CrossEncoder(cross-encoder/ms-marco-MiniLM-L6-v2, backendopenvino) export_static_quantized_openvino_model( modelmodel, quantization_configNone, model_name_or_pathcross-encoder/ms-marco-MiniLM-L6-v2, push_to_hubTrue, create_prTrue, )PR 合并前OpenVINO 量化产物为openvino/openvino_model_qint8_quantized.xml注意 XML 头文件 二进制权重文件成对存在from sentence_transformers import CrossEncoder pull_request_nr 2 # NOTE: 改成你的 pull request 编号 model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, backendopenvino, model_kwargs{file_name: openvino/openvino_model_qint8_quantized.xml}, revisionfrefs/pr/{pull_request_nr}, )PR 合并后from sentence_transformers import CrossEncoder model CrossEncoder( cross-encoder/ms-marco-MiniLM-L6-v2, backendopenvino, model_kwargs{file_name: openvino/openvino_model_qint8_quantized.xml}, )本地模型场景——量化只做一次from sentence_transformers import CrossEncoder, export_static_quantized_openvino_model from optimum.intel import OVQuantizationConfig model CrossEncoder(path/to/my/mpnet-legal-finetuned, backendopenvino) quantization_config OVQuantizationConfig() export_static_quantized_openvino_model( modelmodel, quantization_configquantization_config, model_name_or_pathpath/to/my/mpnet-legal-finetuned )量化完成后的加载from sentence_transformers import CrossEncoder model CrossEncoder( path/to/my/mpnet-legal-finetuned, backendopenvino, model_kwargs{file_name: openvino/openvino_model_qint8_quantized.xml}, )产物命名同样可在 save_or_push_to_hub_model 中印证OpenVINO 产物为openvino_model_{file_suffix}.xml且.xml与.bin两个文件会被成对重命名并保存/上传。5. 基准测试与选型建议官方对 GPU 与 CPU 上不同后端的基准结果如下每个后端在每组模型/数据集下运行到其最佳 batch size柱状图展示的是相对 PyTorch fp32 的中位加速比。5.1 测试方法说明摘要速度比各后端在 batch size 递增直至吞吐下降或显存/内存耗尽时测得峰值比较的是峰值对峰值在最大 batch size 时仍在爬升的列主要是 Flash Attention 后端按保守值展示。硬件RTX 3090 GPU、i7-13700K CPU。GPU 结果于 2026 年 7 月在 WSL2Linux torch 2.12 环境下复测以补充 Flash Attention 后端CPU 结果为原始基准数据。加速比只能在单张图内部比较Linux 复测使小模型的 fp32 基线本身变快压缩了其加速比。数据集GPU 测试 2000 样本、CPU 测试 1000 样本包括 stsb短句对平均约 39 字符、natural-questionsquery 约 47 字符 answer 约 620 字符以及 imdb 两个变体截断到前 100 字符的短文本以及重复 4 次的约 1.7 万字符长文本。模型cross-encoder/ms-marco-MiniLM-L6-v222.7M 参数、BAAI/bge-reranker-base278M、mixedbread-ai/mxbai-rerank-large-v1435M、BAAI/bge-reranker-v2-m3568Mbatch size 从 2 到 256 不等。质量比以 PyTorch fp32默认后端与精度为参照在 NanoBEIR 集合的 MS MARCO 与 NQ 子集上按余弦相似度计算 NDCG10经由 CrossEncoderNanoBEIREvaluator 评估。受测后端torch-fp32、torch-fp16、torch-bf16、torch-fp16-fa2/torch-bf16-fa2半精度 FlashAttention-2注意输入去填充不适用于序列分类任务因此只度量注意力内核替换本身、onnx、onnx-O1/O2/O3、onnx-O4float16 O4、onnx-qint8avx512_vnni 动态量化、openvino、openvino-qint8。5.2 关键结论跨模型、数据集与 batch size 的激进平均掩盖了一些细节模式例如 ONNX 在小 batch size 下表现更强ONNX 和 OpenVINO 在部分组合下甚至可能略慢于 PyTorch因此官方建议用你自己的模型和数据实测再选型Flash Attention 后端不推荐用于 CrossEncoder没有输入去填充仅特征抽取可用时它在所有测试点都达到或低于普通 fp16与原始基准相比ONNX 的加速比降到大致打平0.91.1x导出的图是静态的无法继承让 fp32 基线大幅变快的 torch 运行时改进GPU 上 fp16 现在是更优的默认选择大模型 reranker 上半精度仍有 23x 收益以半精度存储的检查点如以 fp16 存储的 mxbai-rerank-large-v1自 transformers v5 起会默认以该 dtype 加载即无需任何配置就运行在 fp16 速度基准测试中的 fp32 基线是强制的真 fp32CPU 上要完全避免半精度torch-fp16与torch-bf16在 CPU 上只有约 0.17x 的“加速比”。5.3 后端选型决策流程官方文档给出的选型流程图原文为 mermaid此处保留其逻辑用文字复述一遍GPU→ 直接用 PyTorch 后端 model_kwargs{torch_dtype: float16}CPU 且能接受轻微性能/精度下降→openvino-qint8即第 4.1 节的静态量化产物CPU 且不能接受下降、是 Intel CPU→ 普通openvinoCPU 且不能接受下降、非 Intel CPU→onnx-O3即第 3.2 节的 O3 优化产物。注意以上只是基准测试的一般性建议实际表现因模型与数据而异务必用你自己的模型与数据实测各后端再决定。6. 图形界面一键导出、优化与量化除了 API 方式还有一个配套的 Hugging Face Space 提供了图形界面用于把模型导出、优化或量化为 ONNX 或 OpenVINO见 导出侧边栏 中的官方 Spacesentence-transformers/backend-export。适合不熟悉export_optimized_onnx_model/ 两个量化函数参数的场景在界面里选模型、后端、优化/量化配置即可完成同样的操作。7. 小结与延伸阅读GPU 推理默认 PyTorch 后端 fp16/bf16 是首选torch.compile(modereduce-overhead)叠加固定长度 padding 可进一步压缩 batch1 的 kernel 启动开销但需要稳定输入形状与预热Flash Attention 对 CrossEncoder 目前不建议使用。CPU 推理可接受精度下降时用 OpenVINO 静态 int8 量化否则 Intel CPU 用 OpenVINO非 Intel CPU 用 ONNX O3 优化或 avx512_vnni 动态量化并坚持 fp32半精度在 CPU 上会显著变慢。工程实践导出/优化/量化都是重操作务必把产物落盘save_pretrained或提交到 Hubpush_to_hub/create_prrevisionrefs/pr/{n}预合并验证产物命名遵循onnx/model_{后缀}.onnx与openvino/openvino_model_{后缀}.xml(.bin)规则。想进一步确认实现细节可阅读backend/load.pyONNX/OpenVINO 加载与自动导出、backend/optimize.py 与 backend/quantize.py优化与量化函数、backend/utils.py导出判定、保存与 Hub 上传逻辑、cross_encoder/model.pypredict/rank的 batch 与设备处理以及 tests/cross_encoder/test_backends.py 中各后端的回归测试。【免费下载链接】sentence-transformersState-of-the-Art Embeddings, Retrieval, and Reranking项目地址: https://gitcode.com/gh_mirrors/se/sentence-transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价