Google Colab V100环境下libcublas.so.11缺失报错求助
问题描述
在Google Colab的V100 GPU高内存模式下开发LLM项目,此前代码运行正常。自2023年12月15日torch v2.1.2发布后,出现报错:
RuntimeError: Library libcublas.so.11 is not found or cannot be loaded
尝试回退至之前可用的torch==2.1.1和torchaudio==2.1.1版本,问题仍未解决。错误触发于遍历faster-whisper返回的segments_raw时。
依赖列表
git+https://github.com/pyannote/pyannote-audio git+https://github.com/huggingface/transformers.git@v4.34.1 openai==0.28 ffmpeg-python pandas==1.5.0 tokenizers==0.14 torch==2.1.1 torchaudio==2.1.1 tqdm==4.64.1 EasyNMT==2.0.2 psutil==5.9.2 requests pydub docxtpl faster-whisper==0.10.0 git+https://github.com/openai/whisper.git
导入模块
from faster_whisper import WhisperModel from datetime import datetime, timedelta from time import time from pathlib import Path import pandas as pd import os from pydub import AudioSegment import numpy as np from sklearn.cluster import AgglomerativeClustering from sklearn.metrics import silhouette_score import requests import torch import pyannote.audio from pyannote.audio.pipelines.speaker_verification import PretrainedSpeakerEmbedding from pyannote.audio import Audio from pyannote.core import Segment import wave import contextlib import psutil import openai from codecs import decode from docxtpl import DocxTemplate
报错代码片段
def EETDT(audio_path, whisper_model, num_speakers, output_name="diarization_result", selected_source_lang="eng", transcript=None): """ 使用Whisper分割音频片段并生成转录文本。 语音识别基于OpenAI Whisper模型,说话人分离模型及流水线来自pyannote-audio audio_path : str -> wav文件路径 whisper_model : str -> small/medium/large/large-v2/large-v3 num_speakers : int -> 音频中的说话人数量(设为0时由函数自动判断) output_name : str -> 输出文件的期望名称 selected_source_lang : str -> 语言代码 """ audio_name = audio_path.split("/")[-1].split(".")[0] model = WhisperModel(whisper_model, compute_type="int8") time_start = time() if(audio_path == None): raise ValueError("错误:未输入视频文件") print("输入文件:", audio_path) if not audio_path.endswith(".wav"): print("提交的音频不是wav格式,开始转换...") audio = AudioSegment.from_file(audio_path) audio_suffix = audio_path.split(".")[-1] new_path = audio_path.replace(audio_suffix,"wav") audio.export(new_path, format="wav") audio_path = new_path print("已转换为wav格式:", new_path) try: # 获取音频时长 with contextlib.closing(wave.open(audio_path,'r')) as f: frames = f.getnframes() rate = f.getframerate() duration = frames / float(rate) if duration < 30: raise ValueError(f"音频时长需超过30秒,当前时长:{duration}") print(f"音频文件时长: {duration}") # 转录音频 options = dict(language=selected_source_lang, beam_size=5, best_of=5) transcribe_options = dict(task="transcribe", **options) segments_raw, info = model.transcribe(audio_path, **transcribe_options) # 转换为原openai格式 segments = [] i = 0 full_transcript = list() if type(transcript) != type(pd.DataFrame()): for segment_chunk in segments_raw: # <-- 此处触发错误 chunk = {} chunk["start"] = segment_chunk.start chunk["end"] = segment_chunk.end chunk["text"] = segment_chunk.text full_transcript.append(segment_chunk.text) segments.append(chunk) i += 1 full_transcript = "".join(full_transcript) print("使用fast-whisper完成音频转录") else: for i in range(len(transcript)): full_transcript.append(transcript["text"].iloc[i]) full_transcript = "".join(full_transcript) print("已输入预转录的音频文本") except Exception as e: raise RuntimeError("视频转音频出错") # 代码无法离开try块
解决方案
1. 清理环境残留依赖
回退torch版本后,旧的CUDA缓存可能未清理,执行:
!pip uninstall -y torch torchaudio torchvision !pip cache purge
2. 安装匹配CUDA版本的torch
Colab V100对应CUDA 11.8,指定源安装:
!pip install torch==2.1.1 torchaudio==2.1.1 torchvision==0.16.1 --index-url https://download.pytorch.org/whl/cu118
3. 修复libcublas.so.11缺失
直接安装对应系统库:
!apt-get update && apt-get install -y libcublas11
4. 升级兼容版依赖
- faster-whisper 0.10.0与torch2.1.x存在兼容问题,升级至稳定版:
!pip install faster-whisper==0.11.1
- 重新安装pyannote-audio确保兼容性:
!pip install git+https://github.com/pyannote/pyannote-audio --force-reinstall
5. 代码调整
将compute_type="int8"改为compute_type="float16"(int8在部分CUDA环境下需额外配置,float16更稳定):
model = WhisperModel(whisper_model, compute_type="float16")
内容的提问来源于stack exchange,提问作者P0sitive
相关产品推荐
相关产品推荐

