クラウドエンジニアのノート

情報技術系全般,自分用メモを公開してます。

AWS Glue での Spark のパフォーマンス (実行時間) を改善したい

はじめに 準備 データ 計測関数 CSV vs Parquet Parquet 参考 読み取り速度比較 データ作成 読み取り 読み取って Filter 処理した際の速度比較 データサイズ比較 csv gzip はどれくらい? まとめ Glue DynamicFrame vs Spark DataFrame データ読み取り速度比…

Git で間違った Author 情報で remote repository に commit を push しちゃったとき

はじめに コミットの修正 rebase 複数ある場合 Force push 参考 はじめに git log でちゃんと確認したはずが、GitHub へ push したときに committer が間違っていることに気が付きました。 今度からは push 前にローカルで git log --pretty=full を見て確認…

VS Code Remote Development (Dev Containers) で dind (Docker in Docker) する方法

VS code remote development で dind する設定 devcontainer.json に設定を一行追記するだけで OK だった。 devcontainer.json "features":{ "ghcr.io/devcontainers/features/docker-in-docker:2": {} }, 以下に dev containers の feature がいろいろあっ…

自宅IPを固定せず、Raspberry Piで自宅VPNを実現する

はじめに VPN構成 構築 クラウド側 インスタンス作成 docker, docker-composeインストール 実行 自宅ネットワーク側(ラズパイ側) ビルドーツール softether bridge Setting 実行 停止 自動起動 はじめに 個人的な話ですが、アイルランドに引っ越しました。…

Suphx: Mastering Mahjong with Deep Reinforcement Learning

メタ情報 著者 発表 リンク スライド Zennメモ 説明 感想 メタ情報 著者 Junjie Li (Microsoft Research Asia) Sotetsu Koyamada (Kyoto University) Qiwei Ye (Microsoft Research Asia) Guoqing Liu (University of Science and Technology of China) Chao…

GPUクラスタの使用状況をログインノードから一発で確認するシェルスクリプト

はじめに cluster-smi 使用方法 技術的な話 シンボリックリンク 並列化 なぜシェルスクリプト? はじめに うちの研究室にはGPUクラスタがありますが、各GPUノードの使用率を見るには、各GPUノードにsshしてnvidia-smiをしなければいけません。 これでは不便…

MacでNTFS(windows)を書き込み可能でマウントする方法

はじめに 外付けHDDを探す マウント マウント先を作成 デフォルトのマウントをアンマウント NFTS読み書き可でマウント Finderで表示 アンマウント 参考 はじめに Windowsでフォーマットした外付けSSDをMacに差したら、なんと読み取り専用でマウントされまし…

Decision Transformer: Reinforcement Learning via Sequence Modeling

メタ情報 著者 発表 リンク スライド Zennメモ 説明 感想 メタ情報 著者 Lili Chen (UC Berkeley) Kevin Lu (UC Berkeley) Aravind Rajeswaran (Facebook AI Research) Kimin Lee (UC Berkeley) Aditya Grover (Facebook AI Research) Michael Laskin (UC Be…

Kaggle SETI 59th solution

はじめに SETIコンペについて Pipeline Augmentation Test Time Augmentation (TTA) Resizing Network 学習 モデル その他試したこと 感想 はじめに コンペ途中リークが発覚し、データセットリセットがあるなど波乱のコンペでした。 また、今回も@kambe さん…

Kaggle Coleridge 52nd solution

はじめに Coleridgeコンペについて validationの分け方 Pipeline Shorten sentence Classifier MLM Jaccard filter 試したこと 感想 第4位の解法 当時のアイディア はじめに 今回Kaggleに参加して初めてメダルを取ることができました。 Public scoreでは全然…

pytorchのモデルをスクリプトごと違うGPUで実行したいとき

はじめに 解決方法 はじめに Pytorchのnn.Moduleはto()とかcuda()でテンソルを違うGPU番号へ移すことができますが、すべてのテンソルが移ってくれるわけではありません。 nn.Moduleの実装のすべてを移さなくてはいけないのです。これはだるい。 解決方法 方…

kaggle datasets api 使い方

はじめに 初期化 追加アップロード(バージョニング) 単一ファイルの場合 フォルダ階層になっている場合 dir-mode 参考 はじめに kaggle datasets apiの使い方が少し癖あったので、備忘録 初期化 最初にフォルダを初期化してあげる必要があります。 フォル…

MASTERING ATARI WITH DISCRETE WORLD MODELS (DreamerV2) 解説

メタ情報 著者 発表 リンク スライド Zennメモ 説明 感想 メタ情報 著者 Danijar Hafner (Google Research) Timothy Lillicrap(DeepMind) Mohammad Norouzi (Google Research) Jimmy Ba(University of Toronto) 発表 ICLR 2021 リンク Paper: https://arxiv.…

オンプレGPU環境でmlfowのサーバを立てる

はじめに 立て方 guiで削除したrunsを完全削除したい はじめに 機械学習モデルを複数で開発するときがあるとおもいます。 しかしデフォルトだと、各ユーザのフォルダにmlrunsフォルダが作成されており、自分で実行した分しか見られません。 そこでdocker-com…

MLFlowの使い方

はじめに MLFlowの3本の柱 MLFlow Tracking 最小サンプル 複数の実験を管理したい Experiments Runs Tags log_param argparseをまるごと記録したい log_metric x軸をtimeじゃなくてstepで記録したい log_metricの履歴のcsvが欲しい log_artifact フォルダま…

OpenCVで点線を描画する

C++

はじめに 点線を描画する関数 はじめに OpenCVには点線を描画する関数がありません。 すごしググると以下のようにcv::LineIteratorを使う方法がヒットしますが、これでは太さの指定ができません。 https://answers.opencv.org/question/180090/how-to-draw-a…

singularity sandboxが削除できないとき (Device or resource busy)

解決方法 lsofコマンドを使って、そのフォルダを使用してるプロセスをkillすれば良い コマンド lsof /path_to_sandbox 結果 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 269589 aaa rtd DIR 0,55 4096 397411169 path_to_sandbox run 269603 a…

強化学習の報酬のグラフを良い感じに書く

完成図 想定するデータ コード 説明 定数 例 完成図 報酬のグラフ こんな感じで2つのアルゴリズムを比較できるように作りました。もちろん、1つでも使えます。 (報酬が離散的すぎてやや例としては悪いですが…) 想定するデータ なんでも良いのですが、今回…

Pytorch Distributed Data Parallel(DDP) 実装例 (pytorch ddp vs huggingface accelerate)

はじめに 新しくhuggingface accelerateを用いたDDPの実装を加えました (2021/11/1) 学習コード DataParallel nn.DataParallelのソース DDP DDPのソース 実行コマンド DDPソース説明 DDP (accelerate) DDPのソース (accelerate) 実行コマンド DDP(accelerate…

はてなブログで技術ブログを書く

Web

はじめに テーマ はじめに Qiita、Zenn等の技術記事専門サイトもありますが、はてブロで始めたいという方におすすめの設定を紹介します。 テーマ 等ブログのテーマは公式のEpicです。 個人の主観前回ですが、これが一番見やすい気がします。 あと、デフォル…

Pythonでmultipart/form-dataの送受信

はじめに 送信 受信 AWSのLambda その他 はじめに 以下記事の通り、AWS上のLambdaを使って機械学習モデルのAPIを立てたのですが、 Pythonでmultipart/form-dataのパースが大変だったので共有します。 tmyoda.hatenablog.com 送信 requestsモジュールを使用す…

セグメンテーションするpytorch機械学習モデルをAWSへデプロイ(API Gateway, Lambda, ECR)

はじめに 独り言 構成 コンテナイメージの作成 フォルダ構成 Dockerfile POST, Responseスキーム app.py ローカルでテスト Lmabdaのロギング ECRにプッシュ Lambda関数作成 API Gatewayの作成 POSTテスト 感想 参考 はじめに pythonを使った機械学習モデルは…

Beating the World’s Best at Super Smash Bros. Melee with Deep Reinforcement Learning (2017)

動画 1Pが人間のエキスパート 2Pが強化学習エージェント 論文紹介 https://arxiv.org/abs/1702.06230 スマブラDXを強化学習して、エキスパートに勝利した論文です。 DX大好きなので読んでみました。 しかしQ学習が非定常性な相手であるself-playに向かないっ…

Emergent Complexity via Multi-Agent Competition (ICLR 2018)

論文紹介 https://arxiv.org/abs/1710.03748 競争的な環境におけるSelf playに関する論文を読んだメモです。 zennのスクラップという機能を使ってみました。 zennのメモ Emergent Complexity via Multi-Agent Competition (ICLR 2018) しばらくスクラップをO…

EfficientDetのsingle-machine model parallelを実装して、D8(D7x)を学習させる

はじめに 実装したリポジトリ 実装解説 バックボーン NMS まとめ はじめに 魚群コンペ記事の第二弾です。 tmyoda.hatenablog.com EfficientDetの良さそうなリポジトリを見つけ、このリポジトリをコンペに使おうと思いました。 github.com しかし、EfficientD…

mAP(mean Average Precision)を手っ取り早く上げるには

はじめに 結論 理由 mAPの算出方法 APの算出方法 例 mAPを上げるには はじめに signateの物体認識コンペ(魚群検知)に参加したので、そのときに得た知見をいくつか共有したいと思います。(複数記事に分ける予定) signate.jp 新記事公開しました。(21.02.1…

singularityでcuda+pytorchのコンテナの作り方

はじめに 構成 使い方 実行方法 sandbox作成 shellに入る .defファイル はじめに tmyoda.hatenablog.com この記事の亜種です。 singularityは--nvを付ければホストのGPUをマウントするので、本来はホストのcudaを使いますが、harmo2とharmo5のcudaバージョン…

singularityでubuntu20.04+python(+pipenv)環境を構築

はじめに 構成 使い方 実行方法 sandbox作成 shellに入る .defファイル はじめに pythonは仮想環境が豊富なので、わざわざコンテナ化する必要ある?って思っていましたが、 いざGPUクラスタ上で動かすときに環境構築ハマったので、そのとき作成したpythonを…

docker, singularityでtzdata等の対話が必要なモジュールのインストールで止まるとき Please select the geographic area in which you live.

解決方法(非推奨) 解決方法 singularityをdefからbuildしていたのですが、以下ような画面でインストールが止まってました。 Configuring tzdata ------------------ Please select the geographic area in which you live. Subsequent configuration quest…

pysparkの使い方に慣れるためにirisデータセットをいじってみる

はじめに 環境構築 サンプル集 読み込み カラム確認 統計量 スライシング ランダムサンプリング 列の追加 ユーザ定義関数 グルーピング groupBy→aggで集計 groupBy→pivotで縦横変換 一意の識別子を付ける DFのJOIN 列を取り出す 参考文献 はじめに pysparkを…