macOS のシェルで並列処理
気持ち
- macOS のシェルで並列処理をしたい.
- CPUの同時利用数は制限したい
- コマンドの使い方をなるべく覚えたくない(忘れるので)
やったこと
GNU parallel を使う. これはいろんなことができるらしいが,細かいことは絶対に覚えられないので面倒でもユニバーサルに対応できる次の方法で対応する
まずやりたい処理を次のようにファイル ( cmd.txt
) に書き出す.
cmd1 ; cmd2; cmd3 # cmd1 ~ 3 をひとまとめにし,直列で動かしたい. cmd4; ccmd 5 cmd6; cmd 7
各行がひとつの処理のまとまりである.
以下のコマンドで,「同時に2ジョブ ( -j 2
) までを走らせ,まとまり単位で並列に処理する.まとまりの中では,直列に処理する」ことができる
cat cmd.txt | parallel -j 2 -u
-u
は,出力を parallel で貯めないでリアルタイム垂れ流すオプション(cmd1, cmd2 の結果の行が混在することになる.嫌なら,-u を外す)
もちろんcat を使いたくないなら,echo でも同じことができる
echo """ cmd1 ; cmd2; cmd3 cmd4; ccmd 5 cmd6; cmd 7 """ | parallel -j 2 -u
GCE上でWordPressを立ててhttps接続できるようにする
前提
GCE上でWordPress
- Marketplace にあるので,作る
- 固定IP化しておく(IP を エフェメラルから静的に変える)
https接続
- ドメインのAレコードを固定IPに向ける
- letsencrypt.jp の手順に従ってインストール
- http を https に転送するかきかれるので,そのようにした
- 自動化する Let's Encryptを使ってSSL証明書を自動更新する(AWS/Amazon Linux/Apache) - Qiita
- debian だと諸々のパスやコマンド名変える必要ある
- 結局
/etc/cron.d/letsencrypt
に23 * * 5 root path-to-certbot-auto renew --post-hook "/etc/init.d/apache2 graceful"
と書いて,/etc/init.d/cron
をリスタートした
MacBook (Retina, 12-inch, 2017) で 4K@60Hz の外部ディスプレイを使う
MacBook (Retina, 12-inch, 2017) で 4K@60Hz の外部ディスプレイを使いたい.使えた.
課題整理 Mac で 4K ディスプレイ、5K ディスプレイ、Ultra HD TV を使う - Apple サポート
- 4K@60Hz は DisplayPort でしか出力できない
HDMI では 4Kは30 Hzまで
usb-c ポートは1つしかないので,アダプタは Mac への電源供給と DP 出力を同時にこなせるものである必要がある.
やり方
アダプタを買う
- 4K, 60Hz, 電源供給に対応しているもの.
- 今回はこれを買った.
Cable Matters USB Type C 変換アダプター ハブ DisplayPort/LAN/2xUSB/Power Delivery (給電) 対応
- 出版社/メーカー: Cable Matters
- メディア: エレクトロニクス
- この商品を含むブログを見る
DP のケーブルを準備する(なかったら買う)
つなげる
補足
- MacBook (2015 以降) は同じ方法でいけると思う
- Cable Matters USB Type C 変換アダプター ハブ DisplayPort/LAN/2xUSB/Power Delivery (給電) 対応 は仕様書には書いていないけれどHDCP対応でした.Netflix やら Amazon Prime の動画が HD で見られます.
重なりが激しく点数がおおい複数色 scatter はあとでプロットされたほうが優勢に見えちゃう問題
重なりが激しく点数がおおい複数色 scatter はあとでプロットされたほうが優勢に見えちゃう問題というのがあるが,kdeplot で線を細めにするとなんとかなるかもしれない.
python - Seaborn pairplot off-diagonal KDE with two classes - Stack Overflow
import seaborn as sns import matplotlib.pyplot as plt iris = sns.load_dataset("iris") g = sns.PairGrid(iris, hue="species", hue_kws={"cmap": ["Blues", "Greens", "Reds"]}) g = g.map_diag(sns.kdeplot, lw=3) g = g.map_offdiag(sns.kdeplot, lw=1) plt.show()
parquet-cpp
pandas の df (というか series) でカラムをフィルターするには isin
isin
というのが強いっぽい
value_list = ['a', 'abc', 'panda'] df[df['col_name'].isin(value_list)]
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')] # ^ means start of string
これは意味分かるけど syntax どうなってるんだろう.str が Series のメンバオブジェクトであり,親か生の配列へのポインタをもってるってことかしら?
str アクセサと呼ばれているらしい.
メモ:Bosch Production Line Performance Competition で使われたアルゴリズム
から抜粋してメモ.
1. Ankita Mangal & Nishant Kumar
カテゴリカル変数が 2k 個と多く,
one-hot representation してそのまま学習は辛い
→ Follow the Regularized Leader (FTRL) algorithm (何これ) を使って,
2k 個のカテゴリカル変数の代わりに,カテゴリカル変数から予測される確率の予測値を使う
(2k 次元を一気に削減できてしまっているが,なんでこんなことして良いんだろうか)
そのあと xgboost で 200個の変数を選び,最後に 200 変数の問題を xgboost で解く.
2. Abhinav Maurya
anomaly detection だから supervised learning だと思うと very imbalanced.
Gradient Boosting Machine を使うのだが,正例,負例の imbalance を解消するために
weight を Bayesian optimization でいい感じにする.
※ 今回は Matthew’s Correlation Coefficient (MCC) をスコアとして競っていたので,MCC を直接測って Bayesian optimization した.
MCCって何か知らないけど1次元だし Bayesian opt で問題はきっとないんだろう.
3. Bohdan Pavlyshenko
あんまり何言ってるかよくわからなかった. - logistic regression で見るべき特徴量を調べた - "Using Bayesian model, it is possible to receive the statistical distribution of model parameters, which can be used in the risk assessment analysis" (?) - パラメタとサンプルを変えて xgboost 予測結果を複数 (say, N) 出し, N カラムを特徴量として linear model or Baysian model (ここでいうbayesian model って何だろう) を作る