質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Google Cloud Run

Google Cloud Runは、GCPで提供されるフルマネージドのサーバーレスプラットフォームです。コンテナ型アプリの構築、デプロイを容易に行うことが可能です。

Q&A

解決済

1回答

276閲覧

Pytorch起因と思われるInternal Server Errorを解消したい

yasuuu

総合スコア9

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Google Cloud Run

Google Cloud Runは、GCPで提供されるフルマネージドのサーバーレスプラットフォームです。コンテナ型アプリの構築、デプロイを容易に行うことが可能です。

0グッド

0クリップ

投稿2023/11/29 03:43

編集2023/11/29 03:44

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 物体検知機能を動作するようにする

前提

『Python FlaskによるWebアプリ開発入門』を読み進めています。
この中で作成した物体検知アプリをデプロイし、きちんと動くか確認しているのですが、画像をアップロードし、物体検知を実行したところで、「500 Internal Server Error」になってしまいます。

Google Cloud Runのログを確認したところ、下記のエラーが出ているようで、これが原因か?と思っているのですが、その解消法が分かりません。

どなたか分かりそうでしたら、アドバイスいただきたいですmm

発生している問題・エラーメッセージ

AttributeError: Can't get attribute 'Conv2dNormActivation' on <module 'torchvision.ops.misc' from '/usr/local/lib/python3.9/site-packages/torchvision/ops/misc.py'> Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app response = self.full_dispatch_request() File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request rv = self.handle_user_exception(e) File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1484, in full_dispatch_request rv = self.dispatch_request() File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1469, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) File "/usr/local/lib/python3.9/site-packages/flask_login/utils.py", line 290, in decorated_view return current_app.ensure_sync(func)(*args, **kwargs) File "/usr/src/apps/detector/views.py", line 113, in detect tags, detected_image_file_name = exec_detect(target_image_path) File "/usr/src/apps/detector/views.py", line 264, in exec_detect model = torch.load(Path(current_app.root_path, "detector", "model.pt")) File "/usr/local/lib/python3.9/site-packages/torch/serialization.py", line 592, in load return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args) File "/usr/local/lib/python3.9/site-packages/torch/serialization.py", line 851, in _load result = unpickler.load() AttributeError: Can't get attribute 'Conv2dNormActivation' on <module 'torchvision.ops.misc' from '/usr/local/lib/python3.9/site-packages/torchvision/ops/misc.py'>

該当のソースコード

ソースコード

試したこと

デプロイして公開する前のアプリについて、再度試しに物体検知を実行してみたところ、正常にできました。なので、デプロイしているものだけに問題が生じているのでは?(デプロイしたことによって何か起こっている)と思っています。

補足情報(FW/ツールのバージョンなど)

pip list
Package Version


alembic 1.12.1
black 23.10.1
blinker 1.6.3
certifi 2023.7.22
charset-normalizer 3.3.2
click 8.1.7
coverage 7.3.2
dnspython 2.4.2
email-validator 2.1.0.post1
filelock 3.13.1
flake8 6.1.0
Flask 2.3.3
Flask-DebugToolbar 0.13.1
Flask-Login 0.6.3
Flask-Mail 0.9.1
Flask-Migrate 4.0.5
Flask-SQLAlchemy 3.1.1
Flask-WTF 1.2.1
fsspec 2023.10.0
greenlet 3.0.1
idna 3.4
iniconfig 2.0.0
isort 5.12.0
itsdangerous 2.1.2
Jinja2 3.1.2
Mako 1.2.4
MarkupSafe 2.1.3
mccabe 0.7.0
mpmath 1.3.0
mypy 1.6.1
mypy-extensions 1.0.0
networkx 3.2.1
numpy 1.26.2
opencv-python 4.8.1.78
packaging 23.2
pathspec 0.11.2
Pillow 10.1.0
pip 23.2.1
platformdirs 3.11.0
pluggy 1.3.0
pycodestyle 2.11.1
pyflakes 3.1.0
pytest 7.4.3
pytest-cov 4.1.0
python-dotenv 1.0.0
requests 2.31.0
setuptools 65.5.0
SQLAlchemy 2.0.23
sympy 1.12
torch 2.1.0
torchvision 0.16.0
typing_extensions 4.8.0
urllib3 2.1.0
Werkzeug 2.3.7
WTForms 3.1.1

python3 -V
Python 3.11.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PondVillege

2023/11/29 05:20

デプロイしたアプリとそうでない動作確認済みの環境でのバージョン違いが原因の可能性として挙げられます 差分を示せたりしますか?
yasuuu

2023/11/29 06:51

ありがとうございます。 動作確認済みの環境でのバージョンは、上記の「補足情報」に記載の内容で良いでしょうかね? また、デプロイしたアプリの方のバージョン、というのは、どのように見ることができるのか分かりますでしょうか...?mm
PondVillege

2023/11/30 04:25

当方Google Cloud Runを使ったことないので,デプロイした方のバージョン確認方法は存じ上げません, しかし,環境の違いで動く/動かないがあるというのは大方バージョン違いが原因なので,具体的には動く方に擦り合わせるような対策を取ることになります(もしくは今回で言えばメソッドが消されているようなので代用を探るなど). ログを確認できるということであれば,ライブラリ1つ1つに対して,例えば今回怪しいtorchvisionに対して print(torchvision.__version__) としてみるなどで標準出力にバージョンを出させることができると思います.
yasuuu

2023/11/30 07:40

なるほどです。ありがとうございます。 ちょっと確認してみます!
yasuuu

2023/12/03 07:59

torchとtorchvisionのバージョンを上記に合わせたら、正常に動作しました!ありがとうございました。
guest

回答1

0

自己解決

torchとtorchvisionのバージョンを上記に合わせた。
dockerfileにてバージョンを変更。

投稿2023/12/03 07:59

yasuuu

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問