日々精進

新しく学んだことを書き留めていきます

LightGBMで学習を実行すると「[LightGBM] [Fatal] categorical_feature is not a number,if you want to use a column name,please add the prefix "name:" to the column name」エラー

原因はハイパーパラメータとしてcategorical_column=[0]が設定されていたため。

KaggleのNotebookからコピーしてきたのだが、これはまずかったようだ。

categorical_columnはcategorical_featureの別名。categorical_featureの仕様的にはintでfeatureを指定してもいいようだが・・

categorical_column=[0]を削除したら直った。

参考: github.com

TensorFlowのSavedModelをOpenVINO IRに変換すると「UnicodeDecodeError: 'ascii' codec can't decode byte 0xfa in position 1: ordinal not in range(128)」エラー

Scaled YOLOv4 tinyのsaved_model.pbをIR形式に変換したら表題のエラーが発生。 原因はよく分からないが、学習時と変換時のTensorFlowのバージョンを合わせたら直った。 TensorFlowのバージョンによってsaved_model.pbの仕様が違うんだろうな。。 IR形式への変換はハマリどころが多くて辛い。

今回IR形式への変換で得たその他の知識は以下。

  • OpenVINOがインストールされた環境のDockerImageが公開されているのでそれを使うと環境構築が楽。

hub.docker.com

  • IRへの変換はmo.pyを実行して行うので、エラーが発生した場合はPyCharmからmo.pyをデバッグ実行するとエラーの原因分析がやりやすい

SageMaker Studioで「You were logged out of your account. Choose 'Sign In' to continue using this workplace.」が繰り返し表示される

現象は以下。SageMaker StudioにSSOログインしている場合しか起きないかも? * SageMaker Studioを開いた状態から、しばらく操作せずログアウト状態になる * Reloadボタンをクリックし、AWSコンソールに再ログインする * 別ウィンドウが開き、SSOログインしようとするができず、「You were logged out of your account. Choose 'Sign In' to continue using this workplace.」というメッセージが表示される。 * SIGN INボタンをクリックすると再度ログインしようとするがやはり失敗して同じメッセージが出て無限ループに陥る

解決手順は以下。 * Chromeの設定>閲覧履歴データの削除>詳細設定を開く * 「Cookieと他のサイトデータ」「キャッシュされた画像とファイル」「サイトの設定」を選択し、期間をこの現象が発生した時間を含む期間に設定し、「データを削除」ボタンをクリックする

この現象すごい困るから早く直して欲しい。。

コマンドプロンプトのコマンドは^を末尾に付けると改行できる

超長いコマンドを書いていたのでこのTipsのお陰でかなり見やすくなって助かりました。

こんな感じで改行できる。

python -m mo^
  --framework=tf^
  --data_type=FP16^
  --model_name=ssdlite_mobilenet_v3^
  --input_shape=[1,320,320,3]^
  --input=image_tensor^
  --output=detection_scores,detection_boxes,num_detections^
  --log_level=DEBUG^
  > C:\Users\hosokawa0589\Downloads\ssd.log 2>&1

あと、> out.log 2>&1を末尾に付けると標準出力と標準エラー出力をファイルに吐けて便利。

参考:

aprico-media.com

docs.microsoft.com

pip installで「ERROR: Could not install packages due to an OSError: [WinError 5] アクセスが拒否されました。」エラーが出た時に「pip install --user」は使わない方が良い

「ERROR: Could not install packages due to an OSError: [WinError 5] アクセスが拒否されました。」 というエラーメッセージでググるとpip install --userという風に--userオプションを付けると直るよという情報が見付かる。

私見では--userを付けるのは良くないと思う。理由は以下。

  • --userを付けると、user siteにインストールされる
  • user siteにインストールされたパッケージは他のconda仮想環境にも影響する
  • 例えば、user siteにnumpyをインストールしていて、conda仮想環境env1でnumpyを使ったコードを実行するとenv1にnumpyがインストールされていなくても動いてしまう
  • env1のyamlファイルをexportして他の人のPCでenv1環境を構築するとnumpyが入ってないのでnumpyを使ったコードを実行するとエラーになる

なのでanaconda promptを管理者権限で実行し、pip installを実行するのが良いと思う。

pip installl tensorflow時に「ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:」エラー

pip installl tensorflowを実行したら以下のエラーが出た。

ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'c:\\users\\< username>\\appdata\\local\\continuum\\miniconda3\\envs\\envname\\lib\\site-packages\\numpy-1.20.3.dist-info\\RECORD'

原因はnumpy-1.20.3.dist-infoフォルダはあるがその中にRECORDファイルがなかったため。 一度tensorflowをuninstallしたからそんな状態になったのかな? numpy-1.20.3.dist-infoフォルダを消してpip installl tensorflowを実行したら直った。

SageMakerのビルトインテンプレートを使用する権限が無い場合の対処法

SageMaker Immersion Dayの資料を見ながらデモを実行していたら、以下で躓いた。

sagemaker-immersionday.workshop.aws

上記サイトでは

プロジェクトページでは、事前に設定された SageMaker MLOps テンプレートを起動できます。 このラボでは、モデル構築、トレーニング、およびデプロイ用の MLOps テンプレート (MLOps template for model building, training, and deployment) を選択し、「Select project template」をクリックします。

と書かれているが、SageMaker MLOps テンプレートが画面に表示されない。「You are not authorized to use the Amazon SageMaker project templates.」と表示されているのでPermissionが無いっぽい。

以下を参考にPermissionを追加しようとしたが、「Enable SageMaker project templates for this account」と「Enable SageMaker project templates for Studio users」ともONになっていた。

github.com

なぜ・・・としばらく悩んだが、念の為「SageMaker Projects and JumpStart - optional」のページを開いてそのままSubmitボタンをクリックしたらPermissionが付与された。

実際の設定と「SageMaker Projects and JumpStart - optional」の画面のスイッチの表示が齟齬っていたっぽい。そんなことあるのか。。