K2环境配置
1. conda create -n icefall python=3.8
2. conda activate icefall
3. conda install -c k2-fsa -c pytorch -c conda-forge k2 python=3.8 cudatoolkit=11.6 pytorch=1.12.1 torchaudio=0.12.1
4. conda install torchaudio -c pytorch
5. pip install git+https://github.com/lhotse-speech/lhotse
6. git clone https://github.com/k2-fsa/icefall
这个没用:export DYLD_LIBRARY_PATH=$CONDA_PREFIX/lib/python3.8/site-packages:$DYLD_LIBRARY_PATH
这个管用:export PYTHONPATH=/home/work/wangyaru05/workspace/E2E/GIT/icefall:$PYTHONPATH
conda create -n icefall -c k2-fsa -c pytorch -c conda-forge k2 python=3.8 cudatoolkit=11.6 pytorch=1.12.0 torchaudio=0.12.0 tensorboard
conda activate icefall
pip install lhotse
git clone https://github.com/k2-fsa/icefall
cd icefall
pip install -r requirements.txt
export PYTHONPATH=/home/work/wangyaru05/workspace/E2E/GIT/icefall:$PYTHONPATH
错误解决方法:
- 如果import k2报下面的错误,则执行下面的conda install命令
Traceback (most recent call last):
File “”, line 1, in
File “/root/anaconda3/envs/wenet/lib/python3.8/site-packages/k2/init.py”, line 23, in
from _k2 import DeterminizeWeightPushingType
ImportError: /root/anaconda3/envs/wenet/lib/python3.8/site-packages/torch/lib/…/…/…/…/libstdc++.so.6: version `GLIBCXX_3.4.30’ not found (required by /root/anaconda3/envs/wenet/lib/python3.8/site-packages/k2/lib/libk2context.so)
conda install -c conda-forge gcc=12.1.0
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: ‘/root/anaconda3/envs/wenet/lib/python3.8/site-packages/numpy-1.23.5.dist-info/METADATA’
解决方法:
转到 site-packages,
删除所有numpy**文件夹。
重新安装
pip install numpy==1.23.5
优秀文章:https://www.bilibili.com/read/cv21513152/
新一代Kaldi包含Lhotse、k2、Icefall、sherpa,是有着良好的生态且专于ASR的开源项目,k2的模型较丰富,推理速度快准确度高、且支持并行解码。其中icefall主要用于各种模型的训练,eg非常详细,几乎包含数据预处理、训练、模型评估和预测,模型导出、量化,及转换onnx的所有步骤;而sherpa可以用于快速部署语音识别服务,开箱即用的方式,可以快速应用于项目生产。项目源码简洁干练,可读性强,从中亦能学到软件架构、设计模式、神经网络计算等知识。
那么如何使用docker快速部署新一代kaldi?
一、准备工作,首先对系统环境做基本了解:
宿主机系统windows10/11或linux/ubuntu20等,需要装有支持cuda10.1+显卡,以便进行模型训练和GPU推理(仅部署CPU推理服务,则不需要)。
在宿主机系统中安装nvidia-docker 。
在宿主机系统中安装nvidia cuda驱动,文中使用 CUDA 11.6/11.7。
可使用python3.7+,文中使用Python3.8(推荐python3.8+)。
文中使用nvidia/cuda:11.0-base基础镜像,也可以使用官方提供的其他更新版本的镜像。
Sherpa里websocket服务需要开启的端口:6006、6008(使用dockerx镜像部署,docker run的时候,需提前做好端口映射)。
若使用conda安装,可直接跳过docker的步骤,在conda的虚拟环境中安装好cuda+cudnn之后,执行步骤8及后续操作。
二、在docker中部署k2的具体操作步骤
1.拉取基础镜像
docker pull nvidia/cuda:11.0-base
测试:
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
2.使用基础镜像启动一个容器
docker run --restart=always -ti --gpus all --name k2_train -it -p 16008:6008 -p 16006:6006 -v /workspace:/workspace nvidia/cuda:11.0-base /bin/bash
3.进入容器
docker exec -it k2_train /bin/bash
4.安装依赖
apt-get update && apt-get install vim kmod gcc g++ python3.8 python3-distutils pip git git-lfs cmake
git lfs install
清除apt-get缓存
apt-get clean --dry-run
5.安装cudatoolkit,去掉驱动选项,然后Install:
sh cuda_11.6.2_510.47.03_linux.run
修改环境变量,并添加:
vim ~/.bashrc export PATH=/usr/local/cuda-11.6/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIBRARY_PATH:+:{LD_LIBRARY_PATH}}
使环境变量生效:
source ~/.bashrc
查看:
nvidia-smi nvcc -V
6.安装cudnn
tar -zxvf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz
cp cudnn--archive/include/cudnn.h /usr/local/cuda-11.6/include
cp -P cudnn--archive/lib/libcudnn /usr/local/cuda-11.6/lib64
chmod a+r /usr/local/cuda-11.6/include/cudnn*.h /usr/local/cuda-11.6/lib64/libcudnn*
查看cuDNN的信息:
cat /usr/local/cuda-11.6/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
(完成以上步骤,可建快照,以复用。)
7.安装torch(与cuda版本配套的torch)
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio===0.12.1+cu116 -f https://download.pytorch.org/whl/torch_stable.html
8.安装lhotse(只推理不训练,例如仅体验sherpa,可跳过此步骤)
pip install git+https://github.com/lhotse-speech/lhotse
9.安装icefall(只推理不训练,例如仅体验sherpa,可跳过此步骤)
cd /workspace
git clone https://github.com/k2-fsa/icefall
cd icefall
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
export PYTHONPATH=/workspace/icefall:$PYTHONPATH
10.安装kaldifeat
cd /workspace
git clone https://github.com/csukuangfj/kaldifeat.git
cd kaldifeat
python3 setup.py install
11.安装k2
cd /workspace
git clone https://github.com/k2-fsa/k2.git
cd k2
export K2_CMAKE_ARGS=“-DK2_BUILD_FOR_ALL_ARCHS=ON”
python3 setup.py install
12.安装sherpa
cd /workspace
git clone https://github.com/k2-fsa/sherpa
cd sherpa
python3 setup.py install
以上部署成功之后,使用sherpa可快速体验新一代kaldi。
作者:从孑开始 https://www.bilibili.com/read/cv21513152/ 出处:bilibili
conda安装k2
conda install -c k2-fsa -c pytorch -c conda-forge k2 python=3.8 cudatoolkit=11.3 pytorch=1.12.1
conda安装k2报错
Traceback (most recent call last):
File “”, line 1, in
File “/root/anaconda3/envs/wenet/lib/python3.8/site-packages/k2/init.py”, line 23, in
from _k2 import DeterminizeWeightPushingType
ImportError: /root/anaconda3/envs/wenet/lib/python3.8/site-packages/torch/lib/…/…/…/…/libstdc++.so.6: version `GLIBCXX_3.4.30’ not found (required by /root/anaconda3/envs/wenet/lib/python3.8/site-packages/k2/lib/libk2context.so)
解决方法:conda install -c conda-forge gcc=12.1.0
import k2
from icefall.utils import get_texts
from icefall.decode import get_lattice, Nbest, one_best_decoding
from icefall.mmi import LFMMILoss
from icefall.mmi_graph_compiler import MmiTrainingGraphCompiler
安装icefall ,需要clone安装,那如何在其他地方使用icefall呢? 需要添加python_path
export PYTHONPATH=/workspace/icefall:$PYTHONPATH
比如:export PYTHONPATH=/home/work/wangyaru05/workspace/E2E/GIT/icefall:$PYTHONPATH