はじめに
以前、Git LFSの制限によって、モデルを縮小した話をした。
その後、紆余曲折あり、そこそこ長い時間を経て、進捗があったので、書き残しておこうと思う。
タイトルに対する答えを先に言っておくと『できる』。
もちろん 無料 で。
経緯
前述したモデルを使ったWEB アプリのUIを少しいじりたいと思い、HTMLとCSSを書き換えてGitHubへプッシュをした。
そこで、また Git LFS問題が起きることとなった。
現在、私は以前使っていたAIチャットボットとは違うAIチャットボットを使っている。(なんとなく気が合うから)
なので、今回は以前と違うAIチャットボットに対して、この問題を投げかけてみた。プロンプトとしては、 ただエラーコードを投げただけ 。
だいぶ時間が経っていたので自信がなかったので、以前と同じ問題が起きているのだということを確認したかっただけだったのだが、今使っているAIチャットボットはより親切に回答してくれた。
エラーの説明だけではなく、解決策が3点。
候補1. LFSを使うのをやめる
候補2. 外部ストレージを使う(推奨)
候補3. GitHub LFSを追加購入
候補1については、使わないとプッシュできないサイズのモデルがあるため、除外。候補3についても、あくまで無料の範囲で良いレベルなので除外。
(そもそも候補1と3については、以前に実行または検討した物である。)
ここで初めての話題が、候補2だ。
この手段、なんとなくある気はしていたが、きっと難しいのだろうと思って調べていなかった。しかし、今使っているAIチャットボット君とならやっていける気がしたので、やってみることにした。
どうやってやる?
結論から言おう。めちゃくちゃ簡単だった。
GoogleDriveにモデルを移して、.py
ファイルを少し書き換え、requirements
にほんの少し追記するだけ。
なんで今までやらなかった?ってレベルだ。存在の気配を感じていたなら、サクッと調べてやっておけばよかった。
具体的には?
-
Google Driveに
.h5
ファイルを移動する
※ファイルはURL共有で閲覧可能なように設定しておく -
コマンドラインで以下を実行
pip install gdown
-
.pyファイルの最初に以下のコードを追記する
import gdown model_path = "model.h5" if not os.path.exists(model_path): url = "https://drive.google.com/uc?id=..." gdown.download(url, model_path, quiet=False)
-
requirements
ファイルに以下を追記するgdown
-
GitHubにプッシュ
-
おわり。
サクサクとAIチャットボット君が吐き出してくれて、とりあえず試してみたら、すぐにできた。
あまりにもあっけないので、自分の言葉でちゃんと解説を残しておこうと思う。
コード解説
# デプロイの時に動くよ
import gdown # Google Driveをpythonで扱うためのライブラリ
model_path = "model.h5" # 扱いたいファイル名はmodel.h5
if not os.path.exists(model_path): # デプロイした時にmodel.h5ファイルがなかった場合に動いてね
url = "https://drive.google.com/uc?id=..." # ファイルの在処はここ!
gdown.download(url, model_path, quiet=False) # model.h5って名前でダウンロードしてきてね
いや、解説しても「以上!」って感じがすごい……
めちゃくちゃ頑張ってモデル縮小したけど、大きいままでできたのね……
結論
Git LFSが使えなくても、無料で大きいモデルを使ってアプリ開発できる!
ファイルをクラウド上に置いておけるのは、ローカルのメモリ的にもありがたい。
そして、今回はGoogle Driveに慣れているのでこれで実行したが、他にも無料でできる同じ対応はあるようだ。
結局、手を動かしてみないと知識はつかないという事を学んだ。
「やれるかも?」はだいたいやれる。
チワワっぽい犬を猫と判定してしまうモデルを、近いうちに差し替えようと思う。当初の目的だった、UIの改善もしようね。