DEVGRU

プログラミングと競馬予想について書きます

大きなテキストファイルをSCPするときは-Cをつけると速い

機械学習用のEC2インスタンスにファイル転送する際、大きなJSONファイルをSCPすると非常に時間がかかっていた。

しかし、オプション1つつけるだけでかなり早くなった。

つけたオプションは -C。以下のように使う。

scp -C from host:/to

実際手元で試してみたら、以下のように違いが出た。

-C なし 43MB   1.1MB/s   00:40
-C あり 43MB   9.8MB/s   00:04

おおよそ10倍の差がついた。

EC2インスタンスは時間課金なので、この差は大きいだろう。

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services エンタープライズ基盤設計の基本

Amazon Web Services エンタープライズ基盤設計の基本

AWS EC2の深層学習用インスタンスのJupyter Notebookでtqdmを使えるようにする

機械学習で非常に時間のかかる処理をするとき、AWS の EC2 インスタンスを立ててその上で実行している。

AMIは深層学習用のインスタンスを用いている。

aws.amazon.com

Jupyter Notebookもプリインされている。

また、時間のかかる処理を可視化するのに便利なパッケージ tqdm があり、これも重宝している。

github.com

tqdm は Jupyter Notebookもサポートしているが、上記AMIで動かすのには一苦労あった。

結論から言えば、以下が必要だった。

conda install -c conda-forge ipywidgets nodejs jupyterlab tqdm
jupyter nbextension enable --py widgetsnbextension --sys-prefix
jupyter labextension install @jupyter-widgets/jupyterlab-manager

まず、最新版の ipywidgets , nodejs, それに tqdm をインストールする。筆者はJupyter Labを使うためそれも導入している。

次に、 ipywidgets を有効化する。これによってインタラクティブな機能が使えるようになる。

最後に、jupyterlab exntensions を有効化する。

そして、以下のようなコードでtqdmが動くようになる。

from tqdm.autonotebook import tqdm

for _ in tqdm(range(1, 100)):
  # なにか重い処理
  ...

こんな感じでプログレスバーが表示される。

f:id:katoken-0215:20190329234600p:plain

参考:

ensekitt.hatenablog.com


独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

みんなのPython 第4版

みんなのPython 第4版

Pandas で 日付の入っているカラムを年でフィルタする

競馬情報で特定の年以降のレースを絞り込むときの便利な書き方がわかったので紹介する。

dateカラム(datetime型)が2019年以降のデータを選ぶには、ストレートにするとこのような感じになる。

import datetime

data[data.date <= datetime.datetime(2019, 1, 1)]

しかし、これはコード量的にも視覚的にもイマイチわかりにくい。

以下のように書くと、分かりやすくなる。

data.query('date >= 2019`)

もし、2019年2月1日以降なら以下のように記述できる。

data.query('date >= 20190201')

ただし、このようには書けないようだ。

data.query('date >= 201902')

Pythonデータ分析/機械学習のための基本コーディング!  pandasライブラリ活用入門 (impress top gear)

Pythonデータ分析/機械学習のための基本コーディング! pandasライブラリ活用入門 (impress top gear)

  • 作者: Daniel Y. Chen,福島真太朗,吉川邦夫
  • 出版社/メーカー: インプレス
  • 発売日: 2019/02/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

pandasクックブック ―Pythonによるデータ処理のレシピ―

pandasクックブック ―Pythonによるデータ処理のレシピ―

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

  • 作者: Wes McKinney,瀬戸山雅人,小林儀匡,滝口開資
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/07/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習