高橋かずひとのプログラミング、その他、備忘録。

日々調べてたことや、作ってみたものをメモしているブログ。 お決まりの断り文句ですが、このブログに書かれている内容は個人の見解であり、所属する組織の公式見解ではありません。チラ裏。

onnx2tf で高速なTFLiteモデルに変換🏃

onnx2tf です。
onnx-tensorflowじゃないです👻

PINTOさんが開発されているツールで、
ONNXファイルをTensorFlow/TensorFlow-Lite形式に変換するツールです。
どうもonnx-tensorflowで変換をかけると、
無駄に大量のTransposeが挿入される(何か機械的な変換で冗長なことしてる?)ようで、
それらの解決を目的の一つとして開発されているようです。

そして、onnx2tfPINTOさんの最適化の知見が
盛り込まれたツールで、onnx-tensorflowで変換したモデルよりも、
20~30%近く高速なモデルが出来上がります。
※当然、モデルの構造にもよりますが🦔

以下はYOLOX-NanoをTensorFlow-Liteに変換したもので、
onnx-tensorflowを利用した場合だと推論時間383ms、
onnx2tf を利用した場合だと推論時間258ms(約67%)とかなり高速化されています。

以下は別のモデルで、変換前の動画は添付していませんが、およそ20%ほど早くなっています。

github.com

NiceGUI お試し👀

NiceGUI は、 Pythonベースの UI フレームワークで、Webブラウザで表示するタイプのやつです。

Streamlit は、おまじないが多く、それらを解決するために作成したようです。

JustPyをラッピングする形で実現されているようです(JustPyは低レイヤーの処理が多いらしい🦔


リファレンスとUIパーツのイメージは、以下のドキュメントから見れます👀

NiceGUI:API Documentation and Examples

 

お試しで画像ビューアを作ってみています👻

 

Mubert-Text-to-Music での音楽生成お試し🦔

イラスト生成AIが盛り上がったと思ったら、次は音楽生成ですね。

進歩のスピードが速くて驚きます。ホントに。

 

お試しした感想は、クオリティは高いけどプロンプトで狙った通りの雰囲気出すの難しいなー。て感じです。

そもそもソースコード的には、プロンプトからタグを生成(タグは3個?)、そのタグを元に音楽を生成と言う手順を踏んでいるようでした。

プロンプトの情報がごっそり要約と言うか、抜け落ちているわけなのですが👻

 

おおもとのノートブックは以下のリポジトリです。

https://mubert.com/」でサインインして(Googleアカウントの認証が楽だと思う)、Colaboratoryで「Mubert_Text_to_Music.ipynb」を読み込んで、「Get personal access token in Mubert and define API methods」欄にサインインに使用したメールアドレスを入れて、上からポチポチしていけば動きました👻

github.com

 

Informative Drawingsでラフスケッチ風イラストへ変換👀

Informative Drawingsの味見をしています。

以下のような変換が出来るモデルです。

左上:元画像、右上:Anime Style

左下:OpenSketch Style、右下:Countour Style

 

 

 

GPUは必要ですが、Webカメラ入力で動作させてみました。

それなりに動いていますね🦔

 

ソースコードは以下にコミットしています👻

github.com




 

ONNX Runtime:CUDNN error executing cudnnAddTensor() の処置(2022年10月13現在)

どこにもメモった形跡が無いので、改めてメモ👀

kazuhito00.hatenablog.com

上記のモデルをONNXでGPU推論しようとすると以下のようなエラーが出ます。

onnxruntime.capi.onnxruntime_pybind11_state.Fail: 
[ONNXRuntimeError] : 1 : FAIL : Non-zero status code returned while running FusedConv node. Name:'Conv__1075' 
Status Message: CUDNN error executing cudnnAddTensor(Base::CudnnHandle(), &alpha, Base::s_.z_tensor, Base::s_.z_data, &alpha, Base::s_.y_tensor, Base::s_.y_data)

(これはONNX Runtimeのバグ?で、そのうち直すと予告されている挙動のようですが。。。)

ひとまず動かすだけなら、グラフ最適化オプションをベーシックに指定し直すと動きます🦔

# Load model
session_option = onnxruntime.SessionOptions()
session_option.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_BASIC

onnx_session = onnxruntime.InferenceSession(
    model_path,
    sess_options=session_option,
    providers=['CUDAExecutionProvider', 'CPUExecutionProvider'],
)

類似Issueはちょいちょい出ているようですね。 たぶん最近だとこのあたり👻 github.com

ThinkPad X1 Extreme Gen5購入

前回ThinkPad X1 Extremeを購入してから約3年と9か月たちました。

特に不調とかは無いのですが、そろそろ新しいのが欲しくなったので購入🦔

また4年くらいは使えるスペックを。と思いカスタマイズしました。

 

 

ThinkPadのカスタマイズモデルは、注文~発送~納品までに延期したり早くなったり振り回されるのが常なので、今回も日時を記録しています。

2022/9/1 :注文。この時点での納品見込みは3ヶ月以上先。

2022/9/2:決済承認。

2022/9/9:「ご注文製品目安納期のご案内」メールが届く。この時点での納品予定日は10/05。※想定より全然早い

2022/9/15:「ご注文商品 出荷のご案内」メールが届く。この時点での納品予定日は10/14。※やっぱり伸びた

2022/09/27:届く。


ちなみにこの時の心情です↓

まだまだ受け入れる気持ちになってなかったので開封すらしていません😇