windows下tokenizers-cpp编译

github地址
一、rust环境配置
参考
在这里插入图片描述

二、编译
1、修改cmakelists.txt,支持x86和64编译(tokenizers_c库,原始版本windows下只支持64位)

修改顶层CMakeLists.txt文件(77行),支持x86编译
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
  #set(TOKENIZERS_CPP_CARGO_TARGET x86_64-pc-windows-msvc)
  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
    set(TOKENIZERS_CPP_CARGO_TARGET i686-pc-windows-msvc)
    message(STATUS "Targeting 32-bit architecture")
  elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(TOKENIZERS_CPP_CARGO_TARGET x86_64-pc-windows-msvc)
    message(STATUS "Targeting 64-bit architecture")
  else()
    message(FATAL_ERROR "Unsupported architecture")
  endif()
endif()

2、生成项目以及编译lib

debug
    cmake .. -G "Visual Studio 16 2019" -A Win32 -DCMAKE_BUILD_TYPE=Debug
    cmake --build . --config Debug
    PS: vs2019 win32
release
    cmake .. -G "Visual Studio 16 2019" -A Win32 -DCMAKE_BUILD_TYPE=Release
    cmake --build . --config Release

PS:请采用控制台编译,不然tokenizers_c.lib不可控,可能与预期编译debug/release不匹配

三、demo编写

1、依赖库
ws2_32.lib;Userenv.lib;Ntdll.lib;Bcrypt.lib;

2、模型下
模型下载地址
PS:目前测试的模型,输入的中文逗号,输出都会被转换为英文逗号,所以比较加密后再解密时,数据肯定不一致

模型一:有多余数据(固定256)

模型二:此模型可选,无多余数据

模型三:此模型加载时间2s多

模型四:谷歌模型
PS:支持的不友好,输入:你好啊,欢迎来到中国,Nice to meet you
输出有[UNK]标识,Nice无法识别,导致加解密出来数据不一致

模型五:此模型和模型四差不多,但没模型四的问题
3、demo效果
在这里插入图片描述

<think>好的,我现在需要帮助用户解决在安装transformers时遇到的构建tokenizers包失败的问题。用户遇到的具体错误是Building wheel for tokenizers时出现subprocess-exited-with-error,exit code 1。根据提供的引用内容,我需要分析可能的原因并给出解决方案。 首先,查看用户提供的引用信息。引用[1]提到用户使用的是Python 3.10和transformers==4.6.0,而报错可能与环境配置有关。引用[2]和引用[3]指出在构建wheel时失败,可能与依赖项或构建工具相关。引用[4]提到可能由于numpy版本冲突,但用户的问题更可能与tokenizers的构建有关。引用[5]则提到32位和64位系统不兼容的问题,这可能是一个潜在因素。 接下来,我需要考虑常见的解决方案。首先,确保用户安装了Rust编译器,因为tokenizers是用Rust编写的,需要Rust来构建。然后,检查setuptools和wheel的版本是否过旧,更新这些工具可能会有帮助。另外,Python版本是否兼容,虽然用户用的是3.10,但可能需要确认是否支持。如果问题依旧,尝试从预构建的wheel安装,使用--no-build-isolation参数可能绕过某些构建问题。此外,系统依赖如gcc或clang是否安装也可能影响构建过程。最后,如果所有方法都失败,可以考虑使用Docker环境来避免本地配置的问题。 需要逐步列出这些可能的解决方法,并给出具体的命令示例。同时,注意用户可能对技术细节不熟悉,所以说明要尽量清晰,分步骤进行。此外,用户提到可能有版本冲突,所以需要提醒检查依赖版本,尤其是numpy或其他相关库。最后,确保引用正确的参考资料,比如引用[5]提到的系统位数问题,需要用户确认架构是否匹配。 总结可能的解决步骤: 1. 安装Rust编译器。 2. 更新setuptools和wheel。 3. 使用预构建的wheel。 4. 安装系统构建依赖项。 5. 指定--no-build-isolation参数。 6. 检查Python版本兼容性。 7. 使用Docker容器。 需要逐一解释这些步骤,并提供命令示例。同时,注意用户的环境是Windows还是Linux,引用[5]提到Windows上的64位问题,可能需要特别说明。但用户的问题中未明确系统,所以可能需要通用解决方案,并针对不同系统给出建议。 最后,生成相关问题,帮助用户进一步解决可能遇到的类似问题,如其他包构建失败或版本冲突。</think>### 解决 `subprocess-exited-with-error` 构建tokenizers失败问题 #### 问题分析 在安装`transformers`库时,构建`tokenizers`的wheel失败,通常与以下原因相关: 1. **缺少Rust编译器**:`tokenizers`依赖Rust编写的组件,需Rust环境支持[^1][^2]。 2. **Python工具链版本过低**:如`setuptools`或`wheel`版本不兼容[^4]。 3. **系统依赖缺失**:某些平台需要安装C/C++编译工具链(如`gcc`、`clang`)。 4. **Python版本兼容性问题**:Python 3.10与部分旧版库可能存在兼容性问题。 5. **架构不匹配**:例如在64位Python中尝试编译32位库[^5]。 --- #### 分步解决方案 ##### 1. 安装Rust编译器 ```bash # 安装Rust(Linux/macOS) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env # Windows:从https://rustup.rs/下载安装程序 ``` 完成后验证: ```bash rustc --version ``` ##### 2. 更新Python构建工具 ```bash pip install --upgrade pip setuptools wheel ``` ##### 3. 尝试安装预编译的wheel ```bash pip install tokenizers --no-binary :all: # 或强制使用预编译版本 pip install transformers --use-pep517 --no-cache-dir ``` ##### 4. 安装系统级编译依赖 - **Ubuntu/Debian**: ```bash sudo apt install build-essential python3-dev ``` - **Windows**:安装[Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) ##### 5. 指定不隔离构建环境 ```bash pip install tokenizers --no-build-isolation ``` ##### 6. 检查Python版本兼容性 尝试使用Python 3.8-3.9: ```bash # 使用虚拟环境(示例) python3.9 -m venv venv source venv/bin/activate pip install transformers ``` ##### 7. 使用Docker环境(跨平台) ```bash docker run -it python:3.9-slim pip install transformers ``` --- #### 验证安装 ```python from tokenizers import Tokenizer print(Tokenizer.from_pretrained("bert-base-uncased")) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值