Gradioでもう誰でも見れるデモ機械学習の社会実装勉強会第17回Henry2022/11/26
View Slide
人にデモを見せたい■ 機械学習を使ったシステムを開発するにあたって、以下のような進捗共用が少なくない● データ解析手法を変えた場合の解析結果● モデル構造を変えた場合の推論結果● 新しいデータに対するEDA● ……■ ニーズ● 粒度の高い細かめのステップでデモを見せたい(大げさでない)● インタラクティブなデモを見せたい■ ペインポイント● 相手にアクセスしてもらうためには、どこかにデプロイしないといけない● 再現可能な環境を用意し、相手に準備してもらう2
Gradioでインタラクティブなデモ■ 二層のインタラクティブネス● ブラウザでインタラクティブに扱える● 自分が用意したデモを、他人が簡単にURLでアクセスできる■ ブラウザでインタラクティブ● https://gradio.app/● Pythonで作れるデータサイエンス・機械学習用のミニアプリ3
他人が簡単にアクセスできるデモ■ パラメータ一つを設定するだけで、シェア可能!● gr.Interface(classify_image, "image", "label").launch(share=True)■ これで、http://xxx.gradio.app のようなURLが生成される■ このURLにアクセスすることで、ローカルPCで動かされているGradioアプリにアクセスすることになる● たとえ公開IPなど設定されていなくても!■ これの実現方法をこれから説明する4
SSHを用いたリモートフォワード■ 外部ネットワークから内部ネットワークにアクセスしたいというニーズ■ 通常、SSHで使うポートフォワーディングはローカルフォワードと呼ばれて、SSHコネクションと同方向のアクセスしかできない■ しかし、リモートフォワーディングを使えば、片方の通信が確立された、逆方向のアクセスもできる5http://redhatlinux.kt.fc2.com/cont/ssh+pp3.gif
SSHを用いたリモートフォワード■ ローカルPC 192.168.11.3■ (Gradioの)サーバー xxx.xx.xxx.xx■ ローカルPCで、以下のコマンドを実行● ssh -R 8501:xxx.xx.xxx.xx:22 192.168.11.3■ これでサーバーからローカルPCに逆方向で通信するトンネルができる■ サーバーへのアクセスが、ローカルPCでのアプリへにリダイレクトされる6
Gradioでの実現方法■ 表はパラメータ一つで制御■ gradio/tunneling.pyにcreate_tunnel関数が実装される● paramikoライブラリーを使用7
まとめ■ Gradioでシェアできるデモ■ SSHのリモートフォワード■ セキュリティなどのリスクを考慮して、長い期間でデモを見せたいときは、AWS App Runnerでデプロイするのがおすすめ8