日々精進

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

Base64.decodeで「java.lang.IllegalArgumentException: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value. Expected the discarded bits to be zero.」エラー

IT

原因はBase64.decodeに渡した文字列が4で割り切れない文字数になっているため。 Base64は64種類の文字でバイナリデータを表現しているため、1文字が6bitに相当する。なので4文字=24bitを1セットとしてエンコードする。 エンコードするデータが24bitで割り切…

SageMaker Pipelinesでprojectを作成しようとすると、「Error getting the details of Service Catalog Provisioning Parameters. Error message: ValidationException: Access denied while assuming the role sagemaker」エラー

AI

新しいプロジェクトを以下の手順に従って作成しようとしたが、「次のページでは、プロジェクト名と簡単な説明を入力し、「Create Project」を選択します。」の手順で「Create Project」ボタンが非活性になっておりクリックできず困った。 catalog.us-east-1.…

WSL2を起動するとwindowsが超重くなったがVmmemの使用メモリ量を減らすと軽くなった

IT

WSL2をインストールし、起動するとVmmemというプロセスが10GBぐらいメモリを確保してしまい、windowsがめちゃくちゃ重くなった。 以下を参考に、.wslconfigというファイルを作るとVmmemのメモリ消費量が減り、重くなる減少は解決出来た。 devlights.hatenabl…

EBSの容量が足りなくなったら、容量を増やすのではなく新しいボリュームを追加した方が良い

IT

理由は、ボリュームサイズを増やすのは割と簡単にできるが減らすのは面倒だから。(特にルートボリューム) 減らす手順は以下。 blog.e2info.co.jp 最初から、ルートボリュームは少なめにしておき、データボリュームを別途追加してデータはそちらに置くよう…

PyCharmで「Cannot connect to remote host: net.schmizz.sshj.transport.TransportException: Connection reset」エラー

IT

PyCharmのSSH Configurationで設定を入力し、「Test Connection」をクリックすると掲題のエラーが出た。 原因は以下 * ローカルでdockerコンテナを起動し、ホストの2222ポートをコンテナの22ポートにmappingしていた * 同時にEC2インスタンスにもsshで接続し…

spring bootのバージョンを2.6系に上げるとspringfoxがエラーを吐くようになる問題

IT

spring bootのバージョンを2.6系に上げるとspringfoxがエラーを吐くようになる。エラーメッセージは以下。 org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.…

Pandasで読み込むカラムを絞るのと、データ型の最適化で処理が速くなった

AI

DataFrameの処理を高速化する時に、以下を行うと100倍ぐらい速くなった。パフォーマンスチューニングの時はまずこれらをやるといいかも。 pd.read_csvで読み込む時に必要なカラムだけ読み込む さらにdtypeも指定してメモリ使用量を削減する 参考: qiita.com

tensorflowでEstimatorを使って学習する時はtf.set_random_seedを自分で呼んではいけない

AI

注意:tensorflow 1.15.2で確認したので最新版では以下の話は違うかも知れません すべてのradom seedを固定する関数を作ってそれを呼ぶようにしていたが、学習の再現性がなく困っていた。 Estimatorのコードを読んでみると、なんとEstimatorの中に以下のコー…

dpkg -i cuda-keyring_1.0-1_all.debの後でapt updateを実行すると「E: Conflicting values set for option Signed-By regarding source」エラー

AI

nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04をベースにDockerImageをビルドしようとしたら、エラーが出たので以下を参考に直そうとしたら今度は掲題のエラーが発生。 www.nemotos.net 掲題のエラーメッセージの全文は以下。 E: Conflicting values set for o…

multiprocessing.Poolで並列処理をすると、子プロセスで例外が発生した場合エラーメッセージがでない

IT

multiprocessing.Poolでも、apply_asyncを使って子プロセスを起動している場合は子プロセスで発生した例外を親プロセスに伝えられる。詳細は以下参照。 conta.hatenablog.com 自分はmapを使っていたので同様のことができず困った。しかも、子プロセスで例外…

Object Detection APIの学習はeval_config.num_visualizationsを0にすると速くなる

AI

タイトル通りで、この対応を入れると学習時間が15時間→5時間になった。 github.com 何も考えずバリデーションデータ数と同じ値にしていたのがまずかった。。

concurrent.futuresで並列処理をすると、親プロセス終了時に「Error in atexit._run_exitfuncs OSError: handle is closed」エラー

IT

原因は以下。 子プロセスを管理しているオブジェクトはfull gcが実行されるまで生きている 親プロセスが終了すると子プロセスを管理しているオブジェクトは子プロセスに停止命令を送る その時には子プロセスはすでに終了しているので「handle is closed」が…

yieldと通常のreturnは併用できない

IT

同じ関数の中で、ifで分岐してこの場合はgeneratorとして使う、この場合は普通に値を返す、ということはできないらしい。 ja.stackoverflow.com しょうがないのでgeneratorがほしい場合とそうでない場合で共通の部分を関数に抽出して残りの部分をそれぞれ別…

同じ条件で前処理を実行してもアノテーションの順序が変わってしまう問題

AI

原因は前処理の一部に実行の度に結果が変わってしまう部分があったため。random seedは固定していたがそれでもだめなところがあった。 それは、以下のようにglobでファイルを取得している箇所。 for p in Path("/path/to").glob("*"): ... Dockerコンテナにs…

SageMakerでトレーニングジョブが「AlgorithmError: , exit code: 137」「InternalServerError: We encountered an internal error. Please try again.」エラー

AI

exit code 137の場合、OOMが原因という情報があった。詳細は以下参照。 goody-jp.com 137はSIGKILLによってプロセスがKILLされたことを意味するので、OOM以外が原因の場合もあるが、今回はほぼ同じコードで学習データのみ変更してこのエラーが出たのでOOMが…

DataFrameにSeriesをappendするとintがfloatになる

AI

df = DataFrame() df = df.append(Series({"a": 1})) のような感じでappendすると、Seriesのa列はint型なのに、append後のdfのa列はfloat型になっている。。 以下によると、DataFrameインスタンスを生成する時に、列を定義してそのdtypeをintにすればいいら…

SageMakerで使う、ml.~系インスタンスタイプの上限緩和申請の出し方

AI

mlインスタンスタイプの上限緩和申請は他のサービスクォータの上限緩和申請とやり方が違っていてめんどくさい。。手順は以下。 サポートダッシュボードを表示 https://us-east-1.console.aws.amazon.com/support/home?region=us-east-1#/ Create Caseをクリ…

aws cliでS3からファイルをダウンロードする時、沢山あるファイルをzipにまとめるとダウンロードが30倍速くなった

IT

約15000ファイルの画像データセットを、普通にダウンロードした場合とzipに固めたものをダウンロードした場合でどの程度速度差があるのか計測してみた。 EC2インスタンスはg4dn.2xlarge。 普通にダウンロードした場合:300秒 zipに固めてからダウンロードし…

boto3でS3からファイルをダウンロード・アップロードするのを高速化する

IT

boto3のS3.Client.download_fileメソッドを使って大量のファイルをダウンロードすると、aws cliでダウンロードするよりかなり遅い。 boto3.amazonaws.com 理由はdownload_fileは同期処理なのに対してaws cliはマルチスレッド(ちゃんと調べてないのでマルチ…

PyCharmが重い問題

AI

いつもPyCharmを複数起動しているせいか、非常に重くてイライラしていたが、軽くする方法を見つけたのでメモ。 設定の「Upload changed files automatically to the default server」をAlwaysからNeverに変更するとかなり軽くなった。 手動でファイルをアッ…

TensorFlowで学習実行すると「Could not load dynamic library 'libcudart.so.10.0'」エラー

AI

原因はTensorFlowとCUDAとcuDNNのバージョンが一致していないため。 tensorflow-gpu==1.15.3ではCUDA10.0とcuDNN7を使わないといけない。 DockerHubから以下のコンテナをpullして使うとエラーが出ず、GPUを使って学習出来た。 nvidia/cuda:10.0-cudnn7-devel…

hydraを使うとgcログが出るようになってしまい鬱陶しい

AI

Facebook製のライブラリのhydraを使ってconfigファイルを読み込んでいたところ、gcログが標準出力に出るようになってしまい鬱陶しかった。 以下の設定で使っていたが、disable_existing_loggersをtrueにするとgcログが出なくなった。ググってもdisable_exist…

Windows環境でpip install pycocotoolsを実行すると「cl : コマンド ライン error D8021 : 数値型引数 '/Wno-cpp' は無効です。」エラー

AI

どうもコンパイラに渡すオプションが間違っているっぽい。恐らくpycocotoolsのインストール時にコンパイルを実行するが、そのコンパイラがpycocotoolsの作者の環境とユーザの環境で違うのが原因だろう。 以下を実行するとインストールできる。 pip install g…

Pythonでパスを"/opt"のように/始まりにして、windows環境でファイルを読み込むとC:/optのファイルが読み込まれる

AI

LinuxとWindow両方に対応する場合、パスの違いが問題になるが、Pythonだと掲題の通り自動的にCドライブのrootからパスをたどってくれるっぽい。(ドライブをどんな仕様で決めているかは不明なので、Dドライブで実行したらDドライブのrootからになるかも?) …

SageMaker ExperimentsでTracker.log_parametersを実行すると「{ClientError}An error occurred (SerializationException) when calling the UpdateTrialComponent operation: 」エラー

AI

原因はlog_parametersに渡したパラメータの値にnanがあったこと。nanをNoneに変換して回避した。

SageMaker PipelinesでProcessingStepが正しく完了しているはずなのにPipelineの実行結果がFailedになる

AI

原因はProcessingStepのproperty_filesで指定されたpathにファイルが見付からないこと。それを示すエラーメッセージが全くでないのでかなり困った・・ stepのOutputタブには以下のメッセージが表示されるが、これじゃわからない・・ This step failed. For m…

shell scriptで環境変数が未定義かどうかを判定する

IT

-z "${VAR}" とするのがメジャーだが、これでチェックするとset -euxo pipefailを設定して未定義変数を使用している場合、エラーになるようにしているとエラーで止まってしまう。 代わりに ${VAR:-"unset"} == "unset" とするとエラーにならない。 参考: ww…

TensorFlowのSerializeToStringは同じ重みファイルをインプットにしても毎回異なる文字列を生成する

AI

TensorFlow1.15で確認したが、tf.GraphDef.SerializeToStringは同じ重みファイルをインプットにしても毎回異なる文字列を生成する。 違いはフォーマット的なものであり、読み込んだら同じデータになるのだが、SerializeToString後の文字列をファイルに保存し…

Cmderが重すぎるのでConEmuに乗り換えしました

IT

タイトル通りだが、Cmderが重すぎてイライラするのでConEmuに乗り換えたら非常に快適になりました。 有料でいいから軽くて使い勝手のいいターミナルエミュレータがほしい。。

OpenSSH 8.8で、Ctrl+Cを押すと接続が切れる

IT

git for windows 2.35に付属しているOpenSSH 8.8を使ってsshでサーバにログインしたところ、Ctrl+Cを押すとssh接続が切断されてしまう。期待する動作は、サーバで実行中のプロセスにSIGINTを送ること。 git for windows 2.28.0に付属しているOpenSSH 8.3だと…