whisper v3 finetune 中文乱码问题的解决方案
最近学习了一下whisper的微调,主要是参考了github上的夜雨飘零大神项目。但是在操作中遇到了微调中文的时候出现了乱码的情况。以下是我这边对于微调过程中中文出现乱码情况的解决方案。
出现情况如下图所示:
系统环境
NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
使用conda创建的虚拟环境,第一次安装时,直接安装的最新版本的第三方库,也正是因此训练出现了问题。再仔细查看了该项目的isse后,发现大佬们也有这个问题,是通过降低库的版本实现的。
注意:transformer要使用源码进行安装
在transformer官网上找到4.36版本。拉取到我自己的服务器上,进行源码安装。
由于 peft 上没有v0.6.3.dev 版本,故下载了v0.7.0版本
以上两个库我这边都是使用源码进行安装的。
再安装完这两个库以后,再按需安装其他库。
我这边的虚拟环境的库以及对应的版本如下:
Package Version Editable project location ------------------------ ------------ --------------------------------------------------------------- accelerate 1.1.1 aiohappyeyeballs 2.4.4 aiohttp 3.11.9 aiosignal 1.3.1 anyio 4.6.2.post1 async-timeout 5.0.1 attrs 24.2.0 audioread 3.0.1 av 14.0.0 bitsandbytes 0.41.3 certifi 2024.8.30 cffi 1.17.1 charset-normalizer 3.4.0 click 8.1.7 coloredlogs 15.0.1 ctranslate2 4.5.0 dataclasses 0.6 datasets 3.1.0 decorator 5.1.1 dill 0.3.8 evaluate 0.4.3 exceptiongroup 1.2.2 faster-whisper 1.1.0 filelock 3.16.1 flatbuffers 24.3.25 frozenlist 1.5.0 fsspec 2024.9.0 huggingface-hub 0.26.3 humanfriendly 10.0 idna 3.10 Jinja2 3.1.4 jiwer 3.0.5 joblib 1.4.2 lazy_loader 0.4 librosa 0.10.2.post1 llvmlite 0.43.0 MarkupSafe 3.0.2 mpmath 1.3.0 msgpack 1.1.0 multidict 6.1.0 multiprocess 0.70.16 networkx 3.2.1 numba 0.60.0 numpy 2.0.2 nvidia-cublas-cu12 12.4.5.8 nvidia-cuda-cupti-cu12 12.4.127 nvidia-cuda-nvrtc-cu12 12.4.127 nvidia-cuda-runtime-cu12 12.4.127 nvidia-cudnn-cu12 9.1.0.70 nvidia-cufft-cu12 11.2.1.3 nvidia-curand-cu12 10.3.5.147 nvidia-cusolver-cu12 11.6.1.9 nvidia-cusparse-cu12 12.3.1.170 nvidia-nccl-cu12 2.21.5 nvidia-nvjitlink-cu12 12.4.127 nvidia-nvtx-cu12 12.4.127 onnxruntime 1.16.3 packaging 24.2 pandas 2.2.3 peft 0.7.0 #对应的安装的源码文件所在路径 pip 24.2 platformdirs 4.3.6 pooch 1.8.2 propcache 0.2.1 protobuf 5.29.1 psutil 6.1.0 pyarrow 18.1.0 pycparser 2.22 pydub 0.25.1 python-dateutil 2.9.0.post0 pytz 2024.2 PyYAML 6.0.2 RapidFuzz 3.10.1 regex 2024.11.6 requests 2.32.3 safetensors 0.4.5 scikit-learn 1.5.2 scipy 1.13.1 setuptools 75.1.0 six 1.17.0 sniffio 1.3.1 SoundCard 0.4.3 soundfile 0.12.1 soxr 0.5.0.post1 starlette 0.41.3 sympy 1.13.1 tensorboardX 2.6.2.2 threadpoolctl 3.5.0 tokenizers 0.15.2 torch 2.5.1 tqdm 4.67.1 transformers 4.36.0 #对应的安装的源码文件所在路径 triton 3.1.0 typing_extensions 4.12.2 tzdata 2024.2 urllib3 2.2.3 wheel 0.44.0 xxhash 3.5.0 yarl 1.18.3 zhconv 1.4.3
至此环境准备完毕,可以按照项目内的数据格式和要求进行准备数据了。我这边finetune后的结果是正常的。如下:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体