2023年1月23日月曜日

OpenAI Whisperを使った文字起こしアプリの作成(2) - UbuntuへのWhisperの実装

 Market PlaceにあるPyTorch - Ampere Optimized Frameworkのコンピュート・インスタンスを作成し、OpenAI Whisperインストールしてみます。

Oracle Linux 9のときより3/4くらいの処理時間になりましたが、思ったよりは速くなりませんでした。インストール作業については2回のコマンド実行で終了するため、はるかに簡単です。

イメージの紹介にはNative FP16 data format supportとあるのですが、Whisperを動かすとFP16ではなくFP32を使うと表示されます。FP16を使うようにできれば、もっと速くなるかもしれません。

PyTorch - Ampere Optimized Frameworkのページを開き、Get Appをクリックします。


Oracle Cloudのアカウントが取得済みという前提です。

If you have an Oracle Cloud Infrastructure accountCommercial Marketを選択します。

Sign Inをクリックします。


インスタンスの起動をクリックします。


インスタンスの作成が開きます。

イメージはPyTorch - Ampere Optimized Frameworkが選択されています。

ShapeChange Shapeをクリックし、4OCPU24GBメモリに変更します。



SSHキーの追加としてキー・ペアを自動で生成を選択し、秘密キーの保存をクリックします。

作成するコンピュート・インスタンスに接続する際に使用する秘密キーのファイルが、ダウンロードされます。


コンピュート・インスタンスが作成されたら、ユーザーubuntu(opcではなく)にてSSH接続します。

ssh -i 秘密キーファイル ubuntu@パブリックIPアドレス

ffmpegをインストールします。

sudo apt install ffmpeg

ubuntu@mywhisper2:~$ sudo apt install ffmpeg

Reading package lists... Done

Building dependency tree       

Reading state information... Done

The following additional packages will be installed:

  fontconfig fontconfig-config fonts-dejavu-core libaacs0 libaom0 libass9

  libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7

  libavformat58 libavresample4 libavutil56 libbdplus0 libbluray2 libbs2b0

  libcaca0 libcairo-gobject2 libcairo2 libcdio-cdda2 libcdio-paranoia2

  libcdio18 libchromaprint1 libcodec2-0.9 libdatrie1 libdc1394-22


[中略]


After this operation, 1222 MB of additional disk space will be used.

Do you want to continue? [Y/n] y

Get:1 http://iad-ad-1.clouds.ports.ubuntu.com/ubuntu-ports focal/universe arm64 libaom0 arm64 1.0.0.errata1-3build1 [823 kB]


[中略]


Processing triggers for libc-bin (2.31-0ubuntu9.9) ...

Processing triggers for libgdk-pixbuf2.0-0:arm64 (2.40.0+dfsg-3ubuntu0.4) ...

ubuntu@mywhisper2:~$ 



OpenAI Whisperをインストールします。

pip install git+https://github.com/openai/whisper.git

ubuntu@mywhisper2:~$ pip install git+https://github.com/openai/whisper.git

Collecting git+https://github.com/openai/whisper.git

  Cloning https://github.com/openai/whisper.git to /tmp/pip-req-build-0dh8mhlx

  Running command git clone -q https://github.com/openai/whisper.git /tmp/pip-req-build-0dh8mhlx

Collecting ffmpeg-python==0.2.0

  Downloading ffmpeg_python-0.2.0-py3-none-any.whl (25 kB)

Requirement already satisfied: more-itertools in /usr/lib/python3/dist-packages (from openai-whisper==20230117) (4.2.0)


[中略]


Successfully installed ffmpeg-python-0.2.0 filelock-3.9.0 future-0.18.3 huggingface-hub-0.11.1 openai-whisper-20230117 regex-2022.10.31 tokenizers-0.13.2 transformers-4.25.1

ubuntu@mywhisper2:~$


インストールされたwhisperをPATHに含めます。

export PATH=/home/ubuntu/.local/bin:$PATH

whisperを実行してみます。Oracle Linux 9の作業で使用したtest.m4aを使用します。

time whisper test.m4a --language ja --model large

ubuntu@mywhisper2:~$ time whisper test.m4a --language ja --model large

/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.13) or chardet (3.0.4) doesn't match a supported version!

  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "

/home/ubuntu/.local/lib/python3.8/site-packages/whisper/transcribe.py:79: UserWarning: FP16 is not supported on CPU; using FP32 instead

  warnings.warn("FP16 is not supported on CPU; using FP32 instead")

[00:00.000 --> 00:09.000] こんにちは 初めてウィスパーを インストールしてみました これで試してみます


real 1m43.685s

user 3m54.785s

sys 1m13.933s

ubuntu@mywhisper2:~$ 


Oracle Linux 9にインストールしたときよりも若干速くなりましたが、Up to 5xと書かれていたほどではないようです。2分22秒が1分43秒になりました。

2023年5月16日追記

OpenAIのGitHubのディスカッションでAmpere A1のインスタンスでFP16が使われないのはなぜか?というissueが登録されています。回答として、Makefileの修正が提案されています。

Makefileを修正した結果、huge speedupがあった、とのこと。

続く