vzの尺なblog

〜まだ 1 epoch 目〜

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ディアルブートでの時刻ズレ

WindowsUbuntu(linux)のディアルブート環境において現在時刻が9時間ずれることがあります。

現象

以下の手順で時刻がどのようにズレるか把握できます。

  1. 電源投入。BIOSでRTC(ハードウェアの時計)の現在時間があっていることを確認(日本標準時間/UTC+9)。合っていない時は手動で合わせる。
  2. Ubuntu起動。起動直後は+9時間されている。数十秒ぐらいで時刻が合う。(NTPで時刻更生された。)
  3. PC再起動。BIOSでRTC確認。−9時間されている。
  4. Win起動。−9時間されている。
  5. Winで時刻更生をかける。(手動で行う。Win10はデフォルトだと同期間隔が1周間と長い)
    時計システムアイコンを右クリック⇛日付と時刻の調整⇛時刻を自動的に設定する を 「オン⇛オフ⇛オン」と1回オフにしてオンし直す。
  6. PC再起動。BIOSで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の時間を確認。

環境  

  • Ubuntu18.04 日本語Remix (ubuntu-ja-18.04.1-desktop-amd64.iso)
  • Windows10

ー以上ー

ssh-keygen(sshキー)

OpenSSHのの備忘録です。 ※ちなみにWin10からは標準でOpenSSHが使えるようになってます。

キーペアの作成

以下の例ではssh-keygenコマンドに

  • -t rsaRSA暗号化方式
  • -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 オプションだけでも、インタラクティブに聞いてくるので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


インストール

github.com

の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インストール

docs.docker.com

に従いインストール。 ところが、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は電力食うので今のうちにモニタできるように準備しておきます。


前回までのあらすじと本シリーズについて

vz-shark.hatenablog.com


消費電力モニタをつける

狙っているGPUGIGABYTEの2080ti搭載のやつ)の情報を漁っていたら『推奨電力650W』と記載をみつけました。今自作してるPCの電源は700Wなのでギリギリ。ハイエンドGPUはやっぱ消費電力すごそうだな~っということで今のうちに消費電力モニタをつけることにしました。

さっそくAmazon

以下の条件で探しました。

  • リアルタイム(まあ3秒に一回ぐらいでいいかな)消費電力を表示
  • 電力量(Wh)が積算できる
  • 電気代に換算(単価は設定可能)なもの
  • 安くて、ディスプレイの横あたりにおけるもの(気になった時ぱっとみれるように)
  • 今回の目的以外でも使えるもの

最終的にこれに決めました。

節電 エコチェッカー ET30D

節電 エコチェッカー ET30D


さっそく使ってみる


取り付け

こんな感じです。これなら気になった時すぐみれます。

f:id:vz-shark:20180926215945p:plain
消費電力モニタ(デスクトップ)


拡大するとこんな感じ。

f:id:vz-shark:20180926215940p:plain
消費電力モニタ(アップ)

緑の「ECO」マーク押すと、消費電力⇒積算使用時間⇒積算電気代⇒1時間あたりの電気代⇒積算使用電力⇒積算CO2排出量 と表示がかわります。あと積算のリセットと電気代単価の設定もできます。


自作中のGPUマシンで消費電力計測

現状でGTX700tiが乗っています。どぐらい電力かかるか測ってみました。(肝心なグラボがまだしょぼいけど)

  • アイドル時で85W
  • Win10でベンチマークソフト走らせると 最大で150Wぐらい
    ただこれは電力負荷試験ではなく、PCスペックのベンチマークをとる普通のソフトです。電力負荷試験する方法だれか教えてください。
  • ubuntu上のdocker上の chainerサンプルを./train_mnist.py -g 0GPUで計算すると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補助電源ケーブルなんてありません。さてどうしたものか・・・


前回までのあらすじ


PCIe補助電源ケーブルがない

手持ちのStronger社製ATX電源にはPCIeの補助電源用コネクタ(8pin用)が4つ付いてます。しかし電源ケーブルがありません。近所の電気屋にいって購入しようと店員さんにきいたら、各社電源側のコネクタは独自規格で互換性がないとのこと。そこで取り寄せを頼んだら、既に販売終了で入手困難との回答。
手持ちの電源コネクタをみると単にグラボ側のコネクタと形状が一緒のようなきがします・・・ 電源買いなおすしかないか~と思いネットで選んでいたら、SilverStone社製電源のコネクタとそっくりじゃないですか!ということで流用できないかと画策しました。


グラボ側のPCIe補助電源コネクタ仕様を調査

なぜかネットで検索するもめぼしい情報がヒットしません。かろうじてみつけた以下を参考にさせて頂きました。

こうなったら、公式のhttps://pcisig.com/で調べようと思ったら仕様書の無料ダウンロードはアカウント登録しないとダメで、しかも賛同している団体のドメインのメアドで必要らしい。会員以外は有料販売だなんてヒドイ!
あとは、SilverStoneのマニュアルにピンアサインが書いてありました。(4ページ目) https://www.silverstonetek.com/downloads/Manual/power/Multi-PSU-Manual.pdf 以下は拡大図

f:id:vz-shark:20180925172908p:plain
SilverStone PSUマニュアル拡大図

これでGPU側のピンアサインは把握できました。


SilverStone社製電源側のコネクタの調査

コネクタ形状は公式サイトの画像をよ~く見るしかなさそうです。

f:id:vz-shark:20180925172449p:plain
SilverStone電源側コネクタ拡大図

なんか、正方形と台形みたいな形があって誤差し防止してるようです。注目は、左上の2個の四角の間の上部にスリットが入っていて繋がってます。

手持ちの電源のコネクタの調査

手持ちのStronger社製の電源はアクセサリー類も含めて販売終了していますが、マニュアルはダウンロードできたのでよかったです。
株式会社サイズ | PC自作・冷却機器の専門メーカー。ハイコストパフォーマンスなCPUクーラーやケースファンをラインナップ。有名海外冷却ブランドの輸入販売代理も行っております。

Stronger社製電源のコネクタ形状を確認

これは手持ちのものなので、携帯で写真をとって拡大して形状を確認しました。 これをSilverStone社製電源/GPU側のコネクタと比べるとほらそっくり!

f:id:vz-shark:20180925181449p:plain
Stronger電源側コネクタ拡大図

なんか拡大すると誇りがすごいな~。あとでエアダスターで掃除しておこう・・・


テスターを当てStronger電源コネクタのピンアサインを確認

グラボ側のオスコネクタアサインは上記で把握できたので、ストレートケーブルだと仮定すると必然とSilverStone電源側のピン配置もわかります。 以下は手書きですがStronger電源の計測した結果です。+は12V。Gはグラウンドです。またグラウンド間はすべて通電チェックOKでした。

f:id:vz-shark:20180925175634p:plain
Stronger電源テスター計測結果
どうやら、Strongerのケーブルを流用できそうです。

※ちなみに以前買った中国製の安いテスターの電池がなくなっていたので。電池を交換しようとしたら電池の規格がどうも中国のもので入手困難でした。あと通電チェックのブザーがならなくて以前から不満だったので新しいのを買いました。


⇒通常のプローブとワニ口タイプの2セットがついてます。値段もお手頃です。電池も9V仕様の四角いやつで、通電ブザーもなります。結構満足です。


ケーブル購入とテスト

f:id:vz-shark:20180925185057p:plain
コネクタを電源側に差した図
ピッタリ! 爪もしっかりはまります。
f:id:vz-shark:20180925185053p:plain
GPU側のコネクタ(オス)のテスト図
PSUマニュアルの図の通りになっていました。


最後に

とりあえずテスタで測った結果は大丈夫そうですが、まだ実際にGPU買ってないのでうまくいくか不明です。
まあ、安く仕上げる分、すべて自己責任なので、それなりにリスクはありるのはしょうがないですよね。

【これまでにかかった費用(パーツ代のみ計上)】

~<今回購入分詳細> ~

~<シリーズ通した全体>~

  • 第2回分 : 7万円
  • 今回分  :  4,415円
  • 合計   : 74,415円


【追記】
肝心なGPUですが、記事を書いたり調べたりしてるうちに、Geforce RTX 2080tiがでました。tensolコアもついているので、これはいいかも! もしくは型落となったGTX1080tiが安く手にはいれば補助電源のテストも兼ねる意味でもいいかも!いきなり数十万するRTX2080tiに接続するのはチョット気が引ける・・・

-続くー