強弱と高低

Python3をメインに

産総研スパコン ABCI でFTPクライアントを使う

SFTP使いたい!

研究をしているときでも,結果やデータの送受信をリモートとローカルで行いたいと思うことは当然ありますよね.ABCIのストレージとSFTPをしたいときにどうするか?を自分のためしたことを書きます.

環境

設定内容

サイトマネージャーを開いて新しいサイトを追加します.

そして, - プロトコル: SFTP - ホスト: localhost - ポート:10022 ( 2. ABCIシステム利用環境 - ABCI Users Guide ) - ログオンタイプ:鍵ファイル - ユーザー: (自分のをユーザーを記入) - 鍵ファイル: (参照から秘密鍵(*1)を選択する)

これを記入したら接続(*2)でOK.

*1 : 秘密鍵は,Ubuntu 18.04 LTS側で作成したことを前提としている.このbash on windowsは,ホームディレクトリがCドライブのどこに対応するのか今もわかっていないため,/mnt/c 以下にフォルダを作ってそこに秘密鍵を置いている.セキュリティ的ニハー というのは妥協しました.

*2: 接続するときは,ポートフォワーディングしているのが前提.ポートフォワーディングはユーザーズガイドを参照されたい.

産総研スパコンABCIを使ってみた

ABCIとは

産業技術総合研究所東工大が提供し始めたスパコンである.
トップページの文言を引用すると, 次のとおり.

AI橋渡しクラウド(AI Bridging Cloud Infrastructure、ABCI)は、国立研究開発法人 産業技術総合研究所が構築・運用する、世界最大規模の人工知能処理向け計算インフラストラクチャです。2018年8月に本格運用開始しました。

https://abci.ai/ja/
橋渡しクラウド.... うん,そういう名前もアリだね,うん.

率直にいって

想像してたよりずっと使いやすい. 一番は,対話型のシェルが起動できることだろう. だいたいは, シェルスクリプトを投げて,実行を待つという,いわゆるバッチキュー型が多いと聞く. もちろんABCIでバッチキュー型も使えるが, 対話型のシェルが起動できるのもありがたい.

どう使うのか

次のような手順.とても簡単.

  1. インタラクティブノードへログイン
  2. (対話型なら)計算ノードへログイン
  3. 実行!

事務手続きについては省くとして, まずはインタラクティブノードへログインする. ここはいくら滞在していても無料. ただし,ここで計算を回すとBANになりそう(当然).

そして, 計算ノードへログインする. そして,スクリプトなりを実行する. とても使いやすい.

開発環境についても, インタラクティブノードで構築した環境を 対話型ノードへ引き継げる ので対話型ノードへログインしてすぐに使える.

もちろん, 「インタラクティブ実行型ジョブサービス」というのが, 対話型シェルであり, 「バッチ実行型ジョブサービス」というのがシェルスクリプトを投げて計算する方法である.

ストレージは?

各アカウントのホームディレクトリには, おおよそ200GB 割り当てられており, そこにデータは無理にしてもコードは置くことができる. チームのディレクトリを1TB単位で借りることができるので, それを主に利用することになりそうだ. チームのディレクトリへシンボリックリンクをはれば何も気にせずTB単位のストレージにアクセスできる.

計算ノードの使い勝手

インタラクティブノードへログインしてから, 更にこの計算ノードへログインする必要がある. 気になるのは, 対話型ノードで計算を開始したとき途中で離脱するにはどうするか?だ. 今のところインタラクティブノードでtmuxを起動して, そこから計算ノードへログインしている.

課金は,計算ノードへログインしている時間でとられるよりも, 計算を実行している間だけとられるようだ. ちなみに ls するだけでも1円とられた(汗). lsって高い....

おわりに

使い方がきになったら, ドキュメントを参照しましょう. dockerとか使えていいですね. python環境がインタラクティブノードと計算ノードで同じなのも良い点. バッチは使ってないので知らない.使ってみたら更新してみようかな.

portal.abci.ai

Keras2でカスタムレイヤー(自作の)の読み込みをする

Keras2でカスタムレイヤーを作った時

load_modelを単純にしようとすると,「そんなLayerは無い」と怒られる.

load_modelの引数を追加する

load_model(model_name, custom_objects={'AAA': AAA}) としてあげる.

FAQ - Keras DocumentationHandling custom layers (or other custom objects) in saved models に記載されている例のとおりにすると,

AttentionLayerを追加したとすると, load_model(model_name, custom_objects={'AttentionLayer': AttentionLayer}) としてあげるということ. 基本的に文字列を与える部分は, クラス名と同じになる.

ファイルを列方向に結合するpasteコマンド

テキストファイルを列方向に結合できるコマンド.
実際に,2つの文章を比較するときに必要になるコマンド.

大変便利なコマンドを知ったので,書かざるを得なかった.知らなかった.....

参考URL

pasteコマンドについて詳しくまとめました 【Linuxコマンド集】

pasteコマンドで横方向に複数ファイルを結合する | ITを使っていこう

pasteコマンド:複数のファイルを水平方向(横方向)に連結する - pwd-it:IT資格の勉強ブログ

2Lペットボトル水は送料込みでどこが最安値か知りたい

一人暮らしといえば

一人暮らしをしていると,水の問題は避けて通れません. 浄水器や,スーパーで採水する,を体験して一番自分の生活様式に 合致しているのが2Lペットボトル水だとわかった.そして気になるのが,値段である.

家まで届けてほしい

わがまま?いや,本音.毎日水を2本ずつドラッグストアで買う日々というのを1年やっていたが 重いし,営業時間が終わるころに帰宅する自分の生活とで耐えられなくなった. やはり週末家にいるときに宅配便で届けてほしいと感じるわけです.力にはある程度自身のあった自分でも 12キロをほぼ毎日両手に提げて,リュックを持って,,,はきつかった.

どこが安いのか

むしろこちらが聞きたい.タイトルで釣っているつもりは一切なく,純粋に聞きたい.

どこで宅配水を買ってきたか

自分が利用してきた宅配水(造語)は,ドラッグストアの配達,カクヤス,Amazonという遍歴がある.

  • ドラッグストアの配達:1本は安いが,送料が高い.結局1本あたり120円をこえてしまっていた.
  • カクヤス:カクヤスのPBの水は1本あたり90円以下で,5000円以上購入で送料無料!ただし,水の味が変...本当.
  • Amazon:現在購入している.プライム会員だし,定期お得便が使える.前は1本あたり80円くらいだったが,90円,100円と値上げの連続.そろそろ旨味がなくなってきた.

といったところ.どうしたものか.2L あたりが100円をきってくれると,助かる.

浄水器ではだめか?

維持管理が面倒.パッキンがカビた.フィルターがだめになったのに気づかずずっと飲んでお腹を壊した.ということがあったのでやめてしまった. まめなメンテナンスというのは得意じゃない.特に平日は朝は8時前に家を出て,帰宅が23時過ぎか終電前. 食器を洗って,キッチンをきれいにして寝る前に酒を一杯...という生活ではない.

新しい境地を所望している

自分で見つけられる宅配水は試してみた.もう残すは天啓のみ.なにかないですかね.

matplotlibでROC曲線を描画する(3. ROC描画編)

ROC曲線をpython3で描画したいと思ったときに,用意すればいいもの,コード,を説明する.今回は何をimport し, これの入力はなにか,を説明する.

1つの記事を大きくするするのは可読性が低くなるので分割する.

全体の流れ(今回は1)

  1. ROCやAUCを描画・計算するためのライブラリをimport する
  2. ROCを描画できるようにデータを用意する
  3. matplotlibでROC曲線を描画する

1,2,3のサンプルコードは次の通り

github.com

イメージは次の通り

from sklearn.metrics import roc_curve <--(1で説明済)
from sklearn.metrics import auc <--(1で説明済)

y_true = [用意してあげる]  <--(2で説明済)
y_score = [用意してあげる] <--(2で説明済)

fpr, tpr, th = roc_curve(y_true, y_score) <--(1で説明済)
auc_value = auc(fpr, tpr) <--(1で説明済)

描画()<--(今回はここを説明する)

コード

github.com

詳細はコードの中に書きました

こういう共有方法の方がコピーしやすいし, こちらも作成しやすいし, Win-winってやつではないでしょうか?


なぜこのエントリを書いたかというと, 自分が欲しいと思うエントリがなかったからです.

ROC Pythonで検索したときにmatplotlibによるplotの部分は記述されているものの, 何を引数として与えたらいいのか, roc_curveに入力するarrayを作るところが一番むずかしい,,,,という問題点を解決するのが最も役に立つROC曲線を描くエントリだと思うわけです.