virtualenv覚書
インストール
$ sudo apt install virtualenv
使い方(基本的な流れ)
1.仮想環境構築
・アプリ用にディレクトリを作成
・virtualenv
コマンドで仮想環境構築
user@host:~$ mkdir ~/testapp user@host:~$ cd ~/testapp user@host:~/testapp$ virtualenv ./
2.仮想環境に入る
・source bin/activate
を実行
・プロンプトの先頭に(testapp)が付与され、どの仮想環境かが示される
user@host~/testapp$ source bin/activate (testapp)user@host:~/testapp$
3.仮想環境上で作業する
以下の例ではnumpyインストールしてバージョンを表示
(testapp)user@host:~/testapp$ pip install numpy (testapp)user@host:~/testapp$ python >>> import numpy as np >>> np.__version__ '1.15.2' >>> CTL-D
4.仮想環境から抜ける
・deactivate
を実行
・プロンプトが通常の表示に戻る
(testapp)user@host:~/testapp$ deactivate user@host:~/testapp$
pythonのバージョンを指定する
- グローバル環境のpythonバージョンを確認
user@host:~/testapp$ python --version Python 2.7.15rc1
- デフォルトだとグローバル環境と同じバージョンになる
user@host:~/testapp$ virtualenv ./ user@host~/testapp$ source bin/activate (testapp)user@host:~/testapp$ python --version Python 2.7.15rc1
- pythonのバージョンを指定
--python=python3
のようにオプション指定する
-p python3
でも同じ。
user@host:~/testapp$ virtualenv --python=python3 ./ user@host:~/testapp$ source ./bin/activate (testapp)user@host:~/testapp$ python --version Python 3.6.5
環境
Ubuntu18.04 LTS
ー以上ー
Windows/Ubuntuディアルブートでの時刻ズレ
WindowsとUbuntu(linux)のディアルブート環境において現在時刻が9時間ずれることがあります。
現象
以下の手順で時刻がどのようにズレるか把握できます。
- 電源投入。BIOSでRTC(ハードウェアの時計)の現在時間があっていることを確認(日本標準時間/UTC+9)。合っていない時は手動で合わせる。
- Ubuntu起動。起動直後は+9時間されている。数十秒ぐらいで時刻が合う。(NTPで時刻更生された。)
- PC再起動。BIOSでRTC確認。−9時間されている。
- Win起動。−9時間されている。
- Winで時刻更生をかける。(手動で行う。Win10はデフォルトだと同期間隔が1周間と長い)
時計システムアイコンを右クリック⇛日付と時刻の調整⇛時刻を自動的に設定する を 「オン⇛オフ⇛オン」と1回オフにしてオンし直す。 - PC再起動。BIOSでRTC確認。現在時刻があっている。
原因
上記から、以下のことがわかる。
- WindowsはRTCをローカルタイム(UTC+9)とし扱い、逆にUbuntuはRTCを世界標準時間(UTC+0)として扱っている。
- WindowsもUbuntuもNTP時刻更生時にRTCに反映させている。
上記2の状態で、timedatectl
をみると、RTC in local TZ: no
となっている。つまり、RTCは世界標準時間として扱われている。
$ timedatectl Local time: 金 2018-10-05 15:43:01 JST Universal time: 金 2018-10-05 06:43:01 UTC RTC time: 金 2018-10-05 06:43:01 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
対策
どちらかに統一すれば解決なのですが、もともとPCはWindows向けに作られたものなので、その設計思想(DOS時代からのレガシー)に従いUbuntu側の設定を変えることにします。
# RTCをローカルタイムとして扱うように設定 $ timedatectl set-local-rtc 1 # 確認 $ timedatectl Local time: 金 2018-10-05 16:29:47 JST Universal time: 金 2018-10-05 07:29:47 UTC RTC time: 金 2018-10-05 16:29:47 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: yes
最後に、再起動してRTCの時間とWindowsの時間を確認。
環境
ー以上ー
ssh-keygen(sshキー)
OpenSSHのの備忘録です。
※ちなみにWin10からは標準でOpenSSHが使えるようになってます。
キーペアの作成
以下の例ではssh-keygenコマンドに
- -t rsa でRSA暗号化方式
- -b 4096 で鍵長4096ビット
- -C "Your Commen" でコメント指定
- -N "your_passphrase" でパスフレーズ指定
- -f ~/.ssh/your-sshkey でファイル名を指定
オプション指定をしています。
よくみるのは、RSA 2048bit 、コメント=自分のメアドでしょうか・・・
オプションを指定しなければインタラクティブに聞いてくるが、暗号は「 rsa 2048bit」、コメントは「user@host」になります。
<BR> # キーペア作成 $ ssh-keygen -t rsa -b 4096 -C "Your Comment" -N "your_passphrase" -f ~/.ssh/your-sshkey # 生成されたファイルを確認 # 拡張子なしが秘密鍵。拡張子.pubが公開鍵。 $ ls -l ~/.ssh -rw------- 1 user user 3326 Sep 24 08:21 your-sshkey -rw-r--r-- 1 user user 738 Sep 24 08:21 your-sshkey.pub
※ちなみに、プライベートキーの中身を見てみるとTXT形式(BASE64符号化)されているので、一般的にいう.pem
形式というやつですね。
フィンガープリントの表示(-l
オプション)
SHA256 / BASE64形式 ※デフォルト
$ ssh-keygen -l -f ~/.ssh/your-sshkey 4096 SHA256:0Lel8E/1NRdwkf4gxi7Nc1thjOprL+hbL71yRDYkA+I Your Comment (RSA)
MD5 / HEX 形式(-E
オプションで形式md5
を指定) ※昔はこれがデフォルトだった。
$ ssh-keygen -l -E md5 -f ~/.ssh/your-sshkey 4096 MD5:68:6a:3d:36:75:83:3d:5c:26:b8:f0:5c:de:5f:8a:bd Your Comment (RSA)
Visual表示は、-v
オプションを指定
$ ssh-keygen -l -v -f ~/.ssh/your-sshkey 4096 SHA256:0Lel8E/1NRdwkf4gxi7Nc1thjOprL+hbL71yRDYkA+I Your Comment (RSA) +---[RSA 4096]----+ | . .. ..+o| | ... o ....| | .Eo ..= =.o| | . + ++*.*+| | S +==.o.+| | .+=.. o| | oo+o o | | ..*.o. | | .oo.B+. | +----[SHA256]-----+
パスフレーズの確認
ssh-keygenコマンドに、
-yオプションだけでも、インタラクティブに聞いてくるのでOK.
$ ssh-keygen -y -f ~/.ssh/your-sshkey Enter passphrase:<パスフレーズ入力> ssh-rsa AAAAB3...... # 成功すると上記のように公開鍵が表示される。 # また終了ステータス(環境変数 $? でも確認できる) $ echo $? True # 失敗するとエラーメッセージがでる Load key "your-sshkey": incorrect passphrase supplied to decrypt private key $ echo $? False
パスフレーズの変更
ssh-keygenコマンドに、
- -p で、パスフレーズの変更を指定
- -P "old_passphrase" で古いパスフレーズを指定
- -N "new_passphrase" で新しいパスフレーズを指定
- -f ~/.ssh/your-sshkey でファイル名を指定
-p オプションだけでも、インタラクティブに聞いてくるのでOK。
$ ssh-keygen -p -P "old_passphrase" -N "new_passphrase" -f ~/.ssh/your-sshkey
暗号強度について
dsaは使っちゃダメとか、rsaももう古いとか、ed25519がよいなど聞きますが、暗号アルゴリズムとか苦手なのでよくわからないのが正直なところです。現VerのOpenSSHだとデフォルトでRSA 2048bitになっていて、実際に使われているのもよく見ます。少なくともこれ以下の鍵長だとまずそうですね・・・。 あと、以下のようなニュースもきになります。これ2年前ですね・・・。今もっと進んじゃってるのかな・・・ www.technologyreview.jp
Docker環境準備 〜 nvidia-docker
nvidea-docker
インストール
のReadme.mdに従ってインストール&動作確認。以下のようにnvidia-smiが動けば大丈夫。
$ docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.48 Driver Version: 390.48 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 750 Ti Off | 00000000:65:00.0 On | N/A | | 40% 30C P8 1W / 38W | 340MiB / 2000MiB | 2% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+
使い方
上記のように --runtime=nvidia
オプションを指定します。nvidia-docker
コマンド(スクリプト)は、docker
のラッパーで、コンテナ生成時( run / create )時にdocker
に対して以下のオプションを付与してくれます。
ランタイムオプション を付与
--runtime=nvidia
ホスト側
$NV_GPU
を、コンテナ側$NVIDIA_VISIBLE_DEVICES
に反映
ホスト側がNV_GPU="gpu1 gpu2 gpu3"
の時、以下の環境変数オプションを付与
-e NVIDIA_VISIBLE_DEVICES=gpu1,gpu2,gpu3
コンテナ生成時はnvidia-dockerを使い(nvidia-docker run
/ nvidia-docker create
)、それ以外はどっちでも大丈夫('docker psでも
nvidia-docker ps`でも一緒)。
ー以上ー
Docker環境準備 〜 docker-ce
docker-ceインストール
に従いインストール。
ところが、docker run hello-world
したら
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied
しかたないからsudo docker
して暫く使ってたんですけど
sudoしなくてもdockerできるようにする
調べると
$ ls -l /var/run/docker.sock srw-rw---- 1 root docker 0 9月 26 23:25 /var/run/docker.sock
なんだ、権限ないだけか・・・。思ったら上記公式の下のほうに、dockerグループに入れてね。追加したら再ログインするの忘れないでね。と書いてありました。
# dockerグループに自分を追加 $ sudo usermod -aG docker $USER # 自分の属するグループを確認 $ groups $USER # 再ログイン
で、sudoしなくてもdockerでるようになりました。 なんか、これまたインストールした時忘れてそう・・・
消費電力モニタ付けてみた
『手元にGPUマシンを』~シリーズ第4回~
肝心なGPUの購入がまだですが、先だって消費電力モニタをつけることにしました。GPUは電力食うので今のうちにモニタできるように準備しておきます。
前回までのあらすじと本シリーズについて
消費電力モニタをつける
狙っているGPU(GIGABYTEの2080ti搭載のやつ)の情報を漁っていたら『推奨電力650W』と記載をみつけました。今自作してるPCの電源は700Wなのでギリギリ。ハイエンドGPUはやっぱ消費電力すごそうだな~っということで今のうちに消費電力モニタをつけることにしました。
さっそくAmazon
以下の条件で探しました。
- リアルタイム(まあ3秒に一回ぐらいでいいかな)消費電力を表示
- 電力量(Wh)が積算できる
- 電気代に換算(単価は設定可能)なもの
- 安くて、ディスプレイの横あたりにおけるもの(気になった時ぱっとみれるように)
- 今回の目的以外でも使えるもの
最終的にこれに決めました。
- 出版社/メーカー: リーベックス
- メディア: ホーム&キッチン
- この商品を含むブログを見る
さっそく使ってみる
取り付け
こんな感じです。これなら気になった時すぐみれます。
拡大するとこんな感じ。
緑の「ECO」マーク押すと、消費電力⇒積算使用時間⇒積算電気代⇒1時間あたりの電気代⇒積算使用電力⇒積算CO2排出量 と表示がかわります。あと積算のリセットと電気代単価の設定もできます。
自作中のGPUマシンで消費電力計測
現状でGTX700tiが乗っています。どぐらい電力かかるか測ってみました。(肝心なグラボがまだしょぼいけど)
- アイドル時で85W
- Win10でベンチマークソフト走らせると 最大で150Wぐらい
ただこれは電力負荷試験ではなく、PCスペックのベンチマークをとる普通のソフトです。電力負荷試験する方法だれか教えてください。 - ubuntu上のdocker上の chainerサンプルを
./train_mnist.py -g 0
でGPUで計算すると137W
ちなみに所要時間は、36.6秒 - 今度は同じく
./train_mnist.py
でCPUで計算すると186W
ちなみに所要時間は、373.2秒 - Win10でNiceHashでマイニングすると 119Wぐらい
ハッシュレートは、アルゴリズムX16Rで2.146M H/s
これがハイエンドグラボにしたらどうなるか・・・?
最後に
もともと高価なものではないので、あまり考えずに買ったけど以下の機能もほしかった・・・(今更)
- バックライトがつくもの(若しくは視野角が広く見やすいもの)
これは工夫して、電力モニタが自分の目線の方(斜め上)を向くようにスペーサーを入れたら見やすくなったのでOK。 - ピークホールド(最大消費電力)ができるもの
これは工夫じゃカバーできないね〜。見張るしかない・・・。あとファンの音で感知・・・。
でもまあ、やりたかった事はできたからよし。
【これまでにかかった費用(パーツ代のみ計上)】
~<今回購入分詳細> ~
- 節電 エコチェッカー ET30D = 991円
- 合計: 991円
~<シリーズ通した全体>~
- 第2回分 : 7万円
- 第3回分 : 4,415円
- 今回分 : 991円
- 合計 : 75,206円
肝心なGPUがあいかわらずまだです・・・
-続くー
PCIe補助電源ケーブルを流用してみた
『手元にGPUグマシンを』~シリーズ第3回~
ハイエンドGPUは補助電源が必要なんですね・・・しらなかったです。手元にPCIe補助電源ケーブルなんてありません。さてどうしたものか・・・
前回までのあらすじ
シリーズ第1回~『[GPUマシンの購入を検討してみた - vz-sharkのブログ』
購入を検討したがお金がないので自作をすることにシリーズ第2回~『自作GPUマシンのパーツ購入 - vz-sharkのブログ』
パーツ集め。組み立て。OSインストール。起動OK。しかし肝心なGPUはまだ購入検討中・・・シリーズ第3回~(今回です)
手持ちのStronger社製電源のPCIeの補助電源ケーブルがない! 結論から先に言うと、SilverStone社製のPCIe補助電源ケーブルを流用できそうです。
PCIe補助電源ケーブルがない
手持ちのStronger社製ATX電源にはPCIeの補助電源用コネクタ(8pin用)が4つ付いてます。しかし電源ケーブルがありません。近所の電気屋にいって購入しようと店員さんにきいたら、各社電源側のコネクタは独自規格で互換性がないとのこと。そこで取り寄せを頼んだら、既に販売終了で入手困難との回答。
手持ちの電源コネクタをみると単にグラボ側のコネクタと形状が一緒のようなきがします・・・
電源買いなおすしかないか~と思いネットで選んでいたら、SilverStone社製電源のコネクタとそっくりじゃないですか!ということで流用できないかと画策しました。
グラボ側のPCIe補助電源コネクタ仕様を調査
なぜかネットで検索するもめぼしい情報がヒットしません。かろうじてみつけた以下を参考にさせて頂きました。
- PCI Express 補助電源プラグ - PIB
- PCI Express (PCIe) 6pin power · AllPinouts
- PCI Express (PCIe) 8pin power · AllPinouts
- PCI Express 8ピン 電源コネクタの仕様: KONGの日記
こうなったら、公式のhttps://pcisig.com/で調べようと思ったら仕様書の無料ダウンロードはアカウント登録しないとダメで、しかも賛同している団体のドメインのメアドで必要らしい。会員以外は有料販売だなんてヒドイ!
あとは、SilverStoneのマニュアルにピンアサインが書いてありました。(4ページ目)
https://www.silverstonetek.com/downloads/Manual/power/Multi-PSU-Manual.pdf
以下は拡大図
SilverStone社製電源側のコネクタの調査
コネクタ形状は公式サイトの画像をよ~く見るしかなさそうです。
なんか、正方形と台形みたいな形があって誤差し防止してるようです。注目は、左上の2個の四角の間の上部にスリットが入っていて繋がってます。
手持ちの電源のコネクタの調査
手持ちのStronger社製の電源はアクセサリー類も含めて販売終了していますが、マニュアルはダウンロードできたのでよかったです。
株式会社サイズ | PC自作・冷却機器の専門メーカー。ハイコストパフォーマンスなCPUクーラーやケースファンをラインナップ。有名海外冷却ブランドの輸入販売代理も行っております。
Stronger社製電源のコネクタ形状を確認
これは手持ちのものなので、携帯で写真をとって拡大して形状を確認しました。 これをSilverStone社製電源/GPU側のコネクタと比べるとほらそっくり!
なんか拡大すると誇りがすごいな~。あとでエアダスターで掃除しておこう・・・
テスターを当てStronger電源コネクタのピンアサインを確認
グラボ側のオスコネクタのアサインは上記で把握できたので、ストレートケーブルだと仮定すると必然とSilverStone電源側のピン配置もわかります。 以下は手書きですがStronger電源の計測した結果です。+は12V。Gはグラウンドです。またグラウンド間はすべて通電チェックOKでした。
どうやら、Strongerのケーブルを流用できそうです。
※ちなみに以前買った中国製の安いテスターの電池がなくなっていたので。電池を交換しようとしたら電池の規格がどうも中国のもので入手困難でした。あと通電チェックのブザーがならなくて以前から不満だったので新しいのを買いました。
Crenova デジタルマルチメーター 電圧・電流・周波数・抵抗・導通測定テスター
- 出版社/メーカー: Crenova
- メディア: Automotive
- この商品を含むブログを見る
⇒通常のプローブとワニ口タイプの2セットがついてます。値段もお手頃です。電池も9V仕様の四角いやつで、通電ブザーもなります。結構満足です。
ケーブル購入とテスト
購入したの以下です。2個かいました。
⇒スリーブされていて頼もしい。Silverstone SilverStone社製電源専用PCI-E(6+2pin)スリーブモジュラーケーブル 1コネクタ SST-PP06B-PCIE55/A
- 出版社/メーカー: Silver Stone
- 発売日: 2014/06/09
- メディア: Personal Computers
- この商品を含むブログを見る
テスト
ケーブルを電源にさして、グラボ側のオスコネクタの電圧を図ります。 上記の「PSUマニュアル拡大図」になっていればOKです。
ピッタリ! 爪もしっかりはまります。
PSUマニュアルの図の通りになっていました。
最後に
とりあえずテスタで測った結果は大丈夫そうですが、まだ実際にGPU買ってないのでうまくいくか不明です。
まあ、安く仕上げる分、すべて自己責任なので、それなりにリスクはありるのはしょうがないですよね。
【これまでにかかった費用(パーツ代のみ計上)】
~<今回購入分詳細> ~
- PCIe補助電源ケーブル x 2 = 1,458円 x 2個 = 2,916円
- 合計: 4,415円
~<シリーズ通した全体>~
- 第2回分 : 7万円
- 今回分 : 4,415円
- 合計 : 74,415円
【追記】
肝心なGPUですが、記事を書いたり調べたりしてるうちに、Geforce RTX 2080tiがでました。tensolコアもついているので、これはいいかも! もしくは型落となったGTX1080tiが安く手にはいれば補助電源のテストも兼ねる意味でもいいかも!いきなり数十万するRTX2080tiに接続するのはチョット気が引ける・・・
-続くー