显示标签为“OpenSource Product”的博文。显示所有博文
显示标签为“OpenSource Product”的博文。显示所有博文

2024年5月6日星期一

AI故障排除:Failed to initialize NVML: Driver/library version mismatch

nvidia-gpu

故障描述

在使用 GPU 开发和训练AI程序时,可能会遇到这样的问题,nvidia-smi 命令识别 GPU 昨天好好的,今天就突然出错了

$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch

这个问题的原因是 NVIDIA 驱动库的版本与系统内核模块不一致。要修复这个问题,需先删除当前的 nvidia 驱动程序,并重新安装正确的 NVIDIA 驱动程序版本就可以解决。

修复步骤

检查内核版本

检查显卡驱动程序使用的内核版本

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  535.171.04  Tue Mar 19 20:30:00 UTC 2024
GCC version:  gcc version 11.2.0 (Ubuntu 11.2.0-19ubuntu1)

NVRM版本内核模块为 535.171.04,系统内核为22.04

删除 NVIDIA 驱动

运行以下命令,删除包括 nvidia-common 在内的所有 NVIDIA 软件包。

$ sudo apt purge nvidia-* 
$ sudo apt purge libnvidia-*

执行完毕后,在使用以下命令检查是否还有遗留

$ dpkg -l | grep -i nvidia

查找可用的驱动版本

使用Ubuntu自带的驱动管理工具 ubuntu-drivers devices 来查询当前版本Ubuntu推荐的驱动。

$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:09.0 ==
modalias : pci:v000010DEd00001EB8sv000010DEsd000012A2bc03sc02i00
vendor   : NVIDIA Corporation
model    : TU104GL [Tesla T4]
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-470 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-535 - distro non-free recommended
driver   : nvidia-driver-545 - distro non-free
driver   : nvidia-driver-535-server - distro non-free
driver   : nvidia-driver-450-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

输出结果如上,一行中出现了“recommended”二字,说明系统推荐了这个驱动,即nvidia-driver-535。

安装正确的驱动程序

要安装推荐的驱动程序,请运行以下命令。

$ sudo apt install nvidia-driver-535

另外,您还可以执行以下命令来自动安装推荐版本的驱动程序。此时,机器上会自动安装上述推荐版本的驱动程序。

$ sudo ubuntu-drivers autoinstall

重新启动系统

重新启动计算机以使更改生效。

$ sudo reboot

验证问题是否修复

重启后输入以下命令测试驱动安装。如下图所示,可以看到推荐版本的驱动安装成功。

$ nvidia-smi

nvidia-smi

2024年4月17日星期三

字幕生成新招 如何将 OpenAI Whisper 应用于视频字幕制作

上一篇文章 <<走进 OpenAI Whisper 开源语音识别技术>> 介绍了如何使用 whisper 做音频识别,同时可以生成 音轨文件,本章将介绍如何使用生成的 音轨文件 做视频字幕。

1. 准备

2. 使用 FFmpeg 与 SRT 文件做视频烧录

先看一下 srt 文件内容,可以发现是标准的音轨文件,段、时间与内容

1
00:00:00,000 --> 00:00:03,840
you know, meeting with startups and there's not a startup right now out there that is not applying

2
00:00:03,840 --> 00:00:09,200
these AI generative models, these large language models to every interesting problem of the sun.

使用如下 FFmpeg 命令将原视频与 srt 文件烧录到一起

$ ffmpeg -i 9s.mp4 -vf "subtitles=9s.srt" -c:v libx264 -preset medium -c:a copy output.mp4

最后得到带字幕的视频,如下:

注意,上面的是烧录操作,意味着字幕添加到视频中后,字幕就改不了了,除非重新操作

3. 使用播放器VLC加载VTT文件

视频文件与字幕文件分离,可以随时更改字幕文件。这里不局限于使用 VLC 播放器,大部分播放器都支持加载字幕文件。

如果字幕文件与视频文件在同一目录,且名称一样,后缀不一样,如 9s.mp4 与 9s.vtt,播放器会自动加载字幕,srt 文件也适用。

手动加载字幕的前提是视频与字幕文件名称不一样,或者不在同一位置,此时需要手动加载。

20240426153303

4. 结论

尽管有很多成熟的产品可以实现视频字幕,大部分视频编辑软件可以实现更为强大的能力,这里纯属个人好奇使用,不做他论。

走进 OpenAI Whisper 开源语音识别技术

openai-whisper.webp

OpenAI 在 GitHub 上发布的 Whisper 是一个自动语音识别(ASR)系统。Whisper 是一个端到端的深度学习模型,它对音频片段进行处理,并预测对应的文本输出。

Whisper 个人觉得是目前免费做语音识别最好的系统,使用它的理由:

  1. 免费,开放源代码,意味着可以自由使用,包括商业化。
  2. 在数据训练的大模型基础上,识别任务上变现出色,背景噪音的情况下,也有稳定的表现。
  3. 语言识别模型可自由选择下载,意味着可以离线使用,只要你的机器硬件足够高,识别速度是非常快的。
  4. 多语言能力以及翻译能力,支持多种语言的音频,同时也支持翻译成英文,目前仅支持英文
  5. 可以作为命令行工具使用,也提供相关的 python 接口可供编程的能力

下面介绍安装和基本使用方法

安装

$ pip install git+https://github.com/openai/whisper.git
$ sudo apt update && sudo apt install ffmpeg

这里安装了 whisper 的 python 库,同时也需要安装 ffmpeg,因为 whisper 在处理音频文件时,会用到 ffmpeg 来进行音频解码和转码。

使用

Whisper 安装好后,提供了两种使用方式,即 终端使用 和 编程使用。

这里准备了一个音频素材,从 youtube 下载了一段 bbc 的视频,使用 ffmpeg 做了音频提取得到了一个 9秒的音频片段。

关于如何使用 ffmpeg 提取音频,参考文章 音视频处理工具 FFmpeg 的 TOP 10 常用场景

视频链接 ????
音频链接 ????

编程使用

这里使用 medium 模型,模型大小不到2G,初次使用会下载此模型,下载的路径是 ~/.cache/whisper

import whisper

model = whisper.load_model("medium")
result = model.transcribe("dataset/9s.wav")
print(result["text"])
 You know, meeting with startups and there's not a startup right now out there that is not applying these AI Generative models these large language models to every interesting problem of the sun

这里只是简单输出语音识别后的文字,更多的API,如生成不同格式的文本,见官方文档

终端使用

whisper-help.webp

语音转文本

# 使用 medium 模型识别音频,生成 json、srt、tsv、txt、vtt 文件
whisper --model medium dataset/9s.wav

上面的命令会将识别的音频输出到控制台,同时生成带时间刻度的5个文本文件,当然也可根据自己的需求指定要生成的文件格式。

  • 9s.json json格式的文本
  • 9s.srt 文本文件格式,用于存储视频文件的字幕信息
  • 9s.tsv 用于存储表格数据,类似于 CSV
  • 9s.txt 简单文本
  • 9s.vtt 文本文件格式,用于存储视频文件的字幕信息

语音转文本(翻译)

# 带翻译功能,但目前只能讲目标语言翻译到"英文"
whisper --model medium dataset/9s.wav --task translate

结论

OpenAI Whisper 可以说应该是目前最好的 ASR,基于已训练的模型可以自动识别语音,同时支持翻译能力。如果产品级使用,还需要解决模型加载速度以及RT时长的问题。

Reference

2024年3月28日星期四

图片处理工具 ImageMagic 的 TOP 10 实用场景

imagemagic

ImageMagick 是一个功能丰富的命令行工具,它允许用户创建、编辑、合成和转换数字图像。它能够处理各种格式的图像,包括常见的JPEG、PNG、GIF、TIFF以及许多其他格式。此外,ImageMagick提供了强大的API,可供各种编程语言使用,使其成为自动化图像处理任务的理想选择。

请注意,从ImageMagick 7开始,convert命令已经被magick命令所替代。在新版本中,您可以通过直接使用magick命令来代替convert

1. 图像格式转换

对于 png、jpg 图片格式因为大小的问题而不利于网络传输,转成 webp 格式,调整下质量,去除元数据可以大大减少其体积

# png 转 webp,-strip 删除元数据,调整图像质量
$ magick input.png -strip -quality 80 output.webp

2. 调整图像大小

将图像的大小调整为800x600像素

$ magick input.jpg -resize 800x600 output.jpg

3. 裁剪图像

从原图中裁剪出300x300像素的区域,起始点为(100,100)

$ magick input.jpg -crop 300x300+100+100 output.jpg

4. 旋转图像

将图像顺时针旋转90度

$ magick input.jpg -rotate 90 output.jpg

5. 添加文字水印

在图像上添加文字水印

$ magick input.jpg -font Arial -pointsize 20 -draw "text 10,20 'Watermark'" output.jpg

6. 调整图像质量

调整JPEG图像的质量至75%

$ magick input.jpg -quality 75 output.jpg

7. 合并图像

# 水平合并两张图像
$ magick image1.jpg image2.jpg +append output.jpg
# 垂直合并两张图像
$ magick image1.jpg image2.jpg -append output.jpg

8. 色彩调整

提高图像的亮度

$ magick input.jpg -modulate 110,100,100 output.jpg

9. 创建GIF动画

从多张图像创建GIF动画

$ magick -delay 20 -loop 0 image1.jpg image2.jpg image3.jpg output.gif

10. 图像模糊

对图像应用高斯模糊效果

$ magick input.jpg -blur 0x4 output.jpg

总结

因为比较懒,同时也比较喜欢极客的做事方式,能不安装的软件就安装,用一条命令解决的事情,为什么要安装 GUI 界面程序完成。熟悉命令使用方式的同时,也能理解 ImageMagic 能做什么,生产型应用的集成使用 ImageMagic 能完成什么。

Retrieving Secret Values Using REST Services in Infisical

Infisical is the open source secret management platform that developers use to centralize their application configuration and secrets like...