goo blog サービス終了のお知らせ 

理乃美

ソフトとハードと論理の覚え書き

Tesla K80でFramePackを試みるが玉砕

2025-05-04 23:42:55 | AI
近頃話題の動画生成AIのFramePack。Tesla K80で動かせるかやってみた。

OSはWindows 11なので、githubにはお手軽な One-Click packageがある。ただし、名前(framepack_cu126_torch26.7z)が示すようにCUDA 12.6用である。
Tesla K80はCUDA 11までしかサポートされていない。run.batを走らせると、「RuntimeError: The NVIDIA driver on your system is too old (found version 11040) うんぬん」というエラーで止まってしまう。

そこでpytorchなどをcuda11で用意してみた。python 3.10.16のpython仮想環境を用意し、githubからコードを取得

git clone https://github.com/lllyasviel/FramePack.git

次のようにCUDA  11用のcuDNNやpytorchをインストール

cd FramePack
python -m pip install nvidia-cudnn-cu11
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt

これで、demo_gradio.pyを走らせるとWebサーバーが立ち上がり、ブラウザで開くと(http://localhost:7860) GUI画面が開くところまでは進む。
ところが、動画生成を指示すると RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH のエラーで止まってしまう。


demo_gradio.pyを眺めてみると、dtype=torch.float16 のような記述がある。Keplerは半精度をサポートしていないからなと float16 -> float32 に書き換えて試してみたが、そんなことで通るほど甘くはなかった。
autoencodersのパラメータを変えればスピードやVRAM容量は犠牲になっても動作させられるのではと想像するが、そこまでの技術力がないのであきらめるとする。残念。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTX A2000で動画生成した

2025-05-03 16:27:32 | AI
6GBしかVRAMのないRTX A2000で話題のFramePackを使い問題なくAI動画生成ができた。
OSはWindows 11。メインメモリは16G。2台あるFHDディスプレイの1台はRTX A2000に、もう1台はCPU内蔵グラフィクスにつながっている。
githubからWindows向けのOne-Click pakage (.7zファイル)をダウンロードして適当なところに解凍。そこにあるrun.batをターミナル/DOS窓で走らせればGUIのWeb画面が開く。githubのREADMEのSanity Checkの章にあるImage-to-5-secondsの説明通りに操作して(といっても、画像を張り付けてpromptに文書を書くだけ)、Start Generationボタンを押せば、動画が生成される。

注意点は、
1. run.batを走らせても十数秒は無応答。ハングしたように見えるが慌てずに待つ。
2. 生成中でも、生成が終わったように見えるので注意。
3. 時間指定(Total Vide Length)がバグっている。5秒を指定して、できるのは4秒。
4. スリープ、休止状態へのタイムアウトは止めておく。

生成スピードは、githubのREADMEにある Image-to-5-secondsの例で最初の1秒が 16.24秒 39.27s/it で、そこに表示されている以外にも時間がかかるからトータルで1時間半程度か。(長すぎるので時間は計っていない。)  
GUIの作りこみはいまいちで、生成終了がわかりづらい。GUI画面に生成された動画が現れたら生成終了だと思うだろうが、実は途中経過を表示しているだけ。右上のNext Latensが消えて、Start Generationボタンが有効に戻るまで待つべし。
開始前の画面

開始してしばらくした画面
動画が表示されるが、まだ処理の途中
やっと終了


なお、Total Vide Lengthは初期値の5秒だが、生成される動画は4秒。githubのREADMEにある「Image-to-5-seconds」で生成例として貼ってある動画が4秒なので作者が気づいていないバグであって、私の環境の問題ではない。

いやぁ、AIの進化スピードはすごい。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GPTでジオン公国のワインを講釈してみる

2024-07-25 01:02:49 | AI
引き続いて、Generative Deep Learning [1] の 9章 Transformers のサンプル (gpt.ipynb)[2]を実行。
これは、種々のワインのレビュー文をGPTモデルで学習して、ワインのレビュー文章を生成してみるというもの。
fitにかかった時間は、GPU (RTX A2000)を使って7分ほどだった。
生成される文章は例えば、「wine review : germany」と与えて、その先を生成させると「wine review : germany : mosel : riesling : smoke and mineral tones lend a savory tone to this intensely fruity riesling . it ' s intensely concentrated with flavors of sweet tangerine and orange , but it ' s a lip - smackingly juicy , full - bodied riesling .」といった文章が生成される。
生成の経緯を見るとwine review : germany : の続きはワインの銘柄が来る場所で単語選びにも germany が重視された結果 mosel が選ばれている。
その先に進んで、smoke and の続きを選ぶ場合は smokeを重視しているが、smoke and mineral の次を選ぶ場合は wine review であることや germany も考慮しての選択となっている。

以前に実行したLong Short Term Modelでは、これまで全体として何を語ってきたのかを示すlong term の情報と今を語りかけているのかを示すshort term の情報を常に同じ重さで扱って単語を綴っている。そのためだろう、生成している文章が長くなってくると次第に文章がおかしくなってゆく。
Transformerでは、位置の情報を組み合わせることで、直前の言葉から流れのままに綴るところとそもそも何を語っているのかに立ち戻って言葉を選ぶところが組み合わせれ、生成する文章が長くなっても破綻しにくいと理解した。

さてサンプルでは、ドイツ産のほかに US産やイタリア産ワインのレビュー文を生成させているが、架空のジオン公国産 についてレビュー文を生成させたらどうなるだろうか。試した結果はこのとおり。産地としては歴史が浅いのだなあ(w)

wine review : zeon : [UNK] : cabernet sauvignon : this is a bold , ripe and full - bodied expression of the variety ' s characteristically cabernet sauvignon . aromas of blackberry , plum and cassis , with a touch of wood smoke and spice , while the wine is still young and needs time to open up . drink from 2018 .

なお、[UNK] は学習データ中にあった未知語. ここはワインの名称が来るとところだが、どの単語も尤度が低すぎた結果として 未知語が選ばれてしまったのだろう。だが、その後に cabernet sauvignonが改めて選ばれて、カベルネ・ソーヴィニヨン を軸にレビュー文が組み立てられたようだ。

[1] Generative Deep Learning, 2nd Edition by David Foster, Released May 2023, Publisher: O'Reilly Media, Inc. ISBN: 9781098134181
[2] https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Denoising Diffusion Modelsはスケジュールの良し悪しが胆!?

2024-07-02 00:19:41 | AI
引き続いて、Generative Deep Learning [1] の 8章 Diffusion Models のサンプル (ddm.ipynb)[2]を実行。

このような画像を学習するのに、fitにかかった時間は、RTX A2000 (6GB) をGPUに使って1時間38分ほどかかった。
最初はこんなところだが、
Epoch 8になるとこの様になんとなくそれっぽい画像を生成し、
Epoch 19では、ここまでの画像を生成するようになった。
Epoch 50の学習終了で、最終的にはこのようなリアルな画像が生成できるようになった。

Denoisingで画像が改善されてゆく過程の例がこちら。
また、内挿で連続的に変化する画像を生成した例がこちら。

と、ここまではサンプルをそのまま実行しただけ。
この章では、ノイズを載せるプロセスで、linear, cosine, offset cosine の三つのスケジュールが紹介されていて、前記はoffset cosine での結果。
サンプルコードには、linearやcosineのコードもあるようなので、試してみた。
まずは、linear を試してみた。最初 (Epoch 2)がこんななのは当然として、

それが、最後のEpoch 50でもこんな感じのまま。
TensorBoardでみたepoch_n_loss がこのようなので、まったく学習が働いていないわけではないはずなのだが。
次に、cosine を試してみる。
cosineの場合、Epoch 8になるとこのように何らかの画像らしきもを生成するようになるが、
そこから先は、Epoch 50になっても大して向上していない。
最終的に生成できるようになった画像がこちら


linear や cosineのスケジュールでも結果を出すにはどうすればよいだろうか。このサンプルでは64ステップだが、ステップ数を増やして細かく学習させたらどうだろうか。ということで、BATCH_SIZEを 128にして cosineで試してみたのがこちら。学習に6時間14分を費やして、最終的に生成するようになった画像だが、あまり改善した印象はない。
さてここで、n_lossの視点で比較整理してみるとこうなる。生成する画像では実感できないものの、ステップ数を増やすことでn_lossは確実に改善される。128からもっと増やせばlinearやcosineでもよい結果を出せるのだろうが.. 6GBしかメモリを積んでいないRTX A2000 ではここが限界。CPUのみの方で実行すればもっと増やせるだろうが、実行時間がねぇ...
なお、この図でX軸 (epoch数)は対数表示であることに注意。この感じからすると、10 epochもやれば結果は見えたようなもの、かな。


実際にやってみて思ったのだが、筋のよいアイディアを思いついたとしても、そこから先、実際に良い結果を出せるところまでがまた長いなと。一つすごい成果が出た後にわらわらと後追いが出てくるが、これは、実際にできたのが居るのだから私だってできるはずと頑張った、という事なのかもしれない。

[1] Generative Deep Learning, 2nd Edition by David Foster, Released May 2023, Publisher: O'Reilly Media, Inc. ISBN: 9781098134181
[2] https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RealNVP を試す

2024-05-05 01:34:48 | AI
引き続いて、Generative Deep Learning [1] の 6章 Normalizing Flow Models のサンプル (realnvp.ipynb)[2]を実行。

6GBしか載っていないRTX A2000でも実行できて、fitに掛かった時間は1分55秒。
得られた変換と逆変換がこちら。


RealNVPは、データ空間のうち興味のある部分は拡大し興味の無い部分は縮小する可逆な変換を学習することで、latent空間の任意の点を選ぶことが興味のある部分の中の任意の点を選ぶことになるような手段を得ることだと理解した。
Variational autocodersのところでKL divergenceを使ってlatent空間がスカスカにならないよう工夫したが、それに近いところがあるのだろうか。だが私には今のところ使い所がピンと来ない。

[1] Generative Deep Learning, 2nd Edition by David Foster, Released May 2023, Publisher: O'Reilly Media, Inc. ISBN: 9781098134181
[2] https://github.com/davidADSP/Generative_Deep_Learning_2nd_Edition

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする