日々精進

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

2016-11-01から1ヶ月間の記事一覧

sshでログインしようとすると「ssh_exchange_identification: read: Connection reset by peer」エラー

IT

原因はsshdが起動されてないことだった。sshdを起動すると直った。 参考: unix.stackexchange.com

Linuxのユーザ一覧を表示する方法

IT

cat /etc/passwd を実行するとユーザ一覧が見える。catで見るのか。専用のコマンドとかあっていいと思うけど。。 各行の情報の詳細は以下参照。 eng-entrance.com

dockerコンテナにsshを使わずログインするにはdocker execを使う

IT

docker exec -it influxdb bash のようなコマンドを実行するとログイン出来る。 コンテナにsshdが入ってないことも多いので最初はこれで入って色々することが多い。 参考: qiita.com

シェルスクリプトから標準エラー出力に出力する方法

IT

echo 'stderr1' >&2 のように書く。 今まで全部標準出力に出してたけどちゃんと出し分けよう。。 参考: qiita.com

Deep LearningやるならNVIDIA RTX 2080 Tiが良さそう

AI

Tesla V100などDeep Learning用GPUは100万ぐらいするのでゲーミングGPUよりずっと性能高いんだろうなと思ってたけど 以下の記事によると意外と差が無かった。 gigazine.net RTX 2080 Tiすごいお得じゃん。。Deep Learning用物理マシンを買うならRTX 2080 Ti…

Flaskで開発サーバを起動する場合はflask_script.Managerを使うといい

AI

開発時にflaskサーバを起動する方法はいくつかある。例えば、 ・Flaskサーバのデバッグ構成を作成してそれを実行する pleiades.io ・flask cli経由で起動する。つまり、flask runを実行しデバッガはpython Remote Debug構成を作ってサーバ起動後にattachする…

社内Proxy環境でCharlesを使う場合はExternal Proxyの設定をする

IT

Charlesが社内Proxyを経由してインターネットにアクセスするようにしないといけない場合は External Proxyの設定をする。 Charlesほんと便利。 参考: www.fwoabw.info

Pythonから送信したリクエストをCharlesで見る

IT

Charlesはhttp://localhost:8888をListenするので、以下の設定をすればリクエストがCharlesを経由するようになり リクエストの中身が見える。 proxy = urllib.request.ProxyHandler({'http': 'localhost:8888'}) opener = urllib.request.build_opener(proxy…

Pythonのurllib.requestがProxyを使わないようにする

IT

windows環境ではインターネットオプションで設定してあるProxyの情報を自動的に使うようになっているっぽい。 そのせいでlocalhostへのリクエストが社内Proxyに投げられておりエラーになっていた。 以下のようにNO_PROXY環境変数を設定するとProxyを使わない…

docker buildすると「Sending build context to Docker daemon」で何十GBもファイルをコピーする

IT

以下の対応によってDockerfileを置いているフォルダの一つ上の階層がbuild contextになったのだが、 docker buildを実行するとbuild contextの中のファイルをすべてimageにコピーしようとするっぽい。 anton0825.hatenablog.com そこにいらないファイルが大…

docker buildすると「COPY failed: Forbidden path outside the build context」エラー

IT

Dockerfileより上の階層のファイルはコピーできないらしい。 が、そうしたいこともあるのでDockerfileと同じフォルダに以下のスクリプトを置いて実行するようにした。 cwd=`dirname "${0}"` cd ${cwd}/../ docker build -t server01:001 -f ./server/Dockerf…

boto3でファイルをアップロードすると「Your proposed upload exceeds the maximum allowed size」エラー

IT

原因は一回のPUTリクエストでアップロードできる容量が最大5GBのため。 MultipartUploaderを使ってアップロードすると解決できる・・・はず(まだ試してません) 参考: qiita.com MultipartUploaderのサンプルコード: gist.github.com

IntelliJ系のIDEで.gitignoreでignoreしているはずのファイルの差分が出る

IT

Version ControlのWindowとかに差分が出て、なぜ・・・となった。原因はそのファイルがStagingにaddされているため。 Stagingから除くと差分も出なくなる。 IDE上だとStagingされてるかどうか表示されないのでなかなか気付けなかった。。

ブラウザで洋書を楽に読む方法

IT

O'Reilly MediaのSubscriptionServiceに長年入っているが、このサービスはブラウザで洋書の技術書が読めるので、最近Google翻訳を使うとすごく楽に読めることに気付いた。 www.oreilly.com 以下のChrome拡張を入れて、拡張機能のアイコンをクリック>このペ…

IAMロールを設定できるようにする方法

IT

IAMグループにDeveloperグループを作り、PowerUserAccessポリシーをアタッチして使っていたが これだけではIAMロールをEC2インスタンスに設定できなかった。(IAMロールを設定する箇所でアクセス許可がないというエラーメッセージが出る) 以下の公式ドキュ…

Pythonでディレクトリを丸ごとS3にアップロードする

AI

boto3にディレクトリをアップロードする機能はないのでaws cliでやらないといけない。 os.system(f"aws s3 cp ./home/ec2-user/dirname s3://bucket/dirname --recursive") のような感じでrecursiveオプションをつければいいのだが リモート側もまるっとコピ…

KerasでもDatasetAPIを使って効率的にtrain/validationデータを読み込む方法

AI

TFRecordファイルを読み込んでfitメソッドに渡そうと思ったんだけど、これがなかなか情報がなく苦労した。。 TFRecordを読み込んでfitメソッドに渡すところは以下のGistを参考にしてできた。 Training Keras model with tf.data · GitHub InputLayerやcompil…

TensorFlowのTFRecordファイルの中身を確認する方法

AI

作成したTFRecordが想定通りのフォーマットで作られているかを確認したい場合。 tf.data.TFRecordDataset([filepath]) で読み込むと、多分データが必要になるまで読み込まないようになるのでデータを確認出来ず困る(tf.Session()でSessionを開始してsess.ru…

EC2インスタンスのサイズは途中で変更出来る

IT

インスタンスの停止中ならサイズを変更できる。知らなかった。。これ便利だなあ 参考: docs.aws.amazon.com

tf.stackとtf.parallel_stackの違い

AI

parallel_stackの方が引数の計算がまだ終わってない時にstackできるので速いが backpropagationができないという問題がある。 参考: www.tensorflow.org

画像のData Augmentationをする上での知見

AI

Augmentationを実行するコードは関数にして、以下のパターンで呼び出せるようにする Augmentationした画像をjpgファイルとして保存する。 これはAugmentation結果が想定通りかを確認するために使用する。 学習時に動的にAugmentationする。kerasならfitでな…

Linuxで環境変数を設定しようとすると「command not found」

IT

具体的には CUDA_VISIBLE_DEVICES=0,1,2,3 python test.py & を実行すると command not found と言われて困った。 コマンドはあってるはずなのに。。原因は「CUDA_VISIBLE_DEVICES」の部分をブラウザからコピペしてきたんだけど、 その時に変な文字コードも…

git fetchすると「error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol」または「error:1408F10B:SSL routines:ssl3_get_record:wrong version number」エラー

AI

最初は error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol というエラーが出ていたが、gitを再インストールしたら error:1408F10B:SSL routines:ssl3_get_record:wrong version number に変わった。 原因はremoteリポジトリが社内にある…

kerasでfitした時に「tensorflow.python.framework.errors_impl.InvalidArgumentError: Reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero」エラー

AI

直接の原因はエラーメッセージの通りemptyのTensorをreshapeしようとし、reshapeの引数に-1があったので reshape後のshapeが一意に決まらずエラーになったことだがなぜemptyのTensorをreshapeしようとしているのかはわからない。。 根本原因はよく分かって無…

SourceTreeはGitHubEnterpriseServerに対応していない

IT

昔はオンプレ環境用のGitHubサーバの名前はGitHub Enterpriseだった気がするんだけど、 今はGitHub Enterprise Serverというらしい。 github.com SourceTreeでGitHub Enterprise Serverのアカウントを作ろうとしても作れない。 これは昔から要望としてはある…

kerasで保存したモデルを読み込んでpredictすると「Reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero」エラーが発生する

AI

原因はmulti_gpu_modelを使った場合、multi_gpu_modelでwrapする前のモデルのsaveで保存しないといけないが、 wrap後のモデルのsaveを使っていたため。 ↓はダメな例 parallel_model = multi_gpu_model(model) ... parallel_model .save("path/to/save") ↓はO…

Pythonは実質シングルスレッド

AI

Pythonでもthreadingモジュールを使うとスレッドを作れるが、グローバルインタプリタロック というものが存在し、 このロックを取っているスレッドだけがPythonオブジェクトを操作したりできるので実質常に一つのスレッドしか動いてない。 並行処理したかっ…

KerasがGPUを使ってくれなくて困った問題

AI

原因は以下。 ・Kerasで複数GPU対応をした。そのとき、with tf.device("/cpu:0"): を追加してCPUでモデルを構築するようにした。 ・その時はmulti_gpu_modelを使って複数GPUで動いた気がしたが、その後1GPUマシンで動かしたところGPUを使わなくなっていた。…

TensorFlowが使うGPUを指定する

AI

export CUDA_VISIBLE_DEVICES="0" のように環境変数を設定するとTensorFlowが使うGPUを指定出来る。 番号は0から順に割り振られる。グリッドサーチをするときに各学習にGPUを一つずつ割り当てて並列化する場合などに使う。 参考: qiita.com

PythonでModuleNotFoundError: No module namedエラー

AI

原因はモジュールを探しに行くところの一覧に読み込みたいモジュールがある場所が入ってないため。 /home/ubuntu/root/common/aws.py を読みたい場合、 export PYTHONPATH="${HOME}/root:$PYTHONPATH" のようにPYTHONPATHにプロジェクトRootを追加するとそこ…