自分のための備忘録的なブログです。

Ubuntu14.04LTS を使って、ディープラーニングの勉強をしています。
記載されているコードは、他の OS には互換性がない可能性があります。


DNN:
マシン性能別 学習速度の比較, TFチュートリアルをmodifyする

python3:
オブジェクト指向プログラミングとは, モジュールとインポート、パスを通す, システムコマンド(os), ファイル・フォルダ名取得, 画像の前処理,

Ubuntu14 の初期設定:
Ubuntu14初期設定, 初期設定-2, cudaなども, 初期設定-3

Keras を使って驚いたこと:インストールの不具合に気付く。

と言うわけで、Keras を始めて約 1日が過ぎました。

 

Keras は簡単で良いですね。

 

できたこと

 

1.VGG 風の簡単なモデルを試す。

2.Keras に実装済みモデルを使う:Xception

3.Imagenet 学習済みモデルの転移学習を試す。

 

結果:これまで 精度 0.90 までしか出なかったのが、最高 0.97 を叩き出す。

 

これまで tf で、何ヶ月も苦しんでいた

1.batch normalization とか

2.既存の高精度なモデルの利用 とか

3.Imagenet 学習済みモデルの転移学習 とか

 

が解決してしまいました。

(tf で実装できている、学習過程の保存とか、tensorboard の利用は、まだ Keras ではできないのですが) 

 

その学習過程は壮絶で、これまで 65度程度だったオリファンの GTX1070 が、80度越えまで頑張ってくれちゃいました。

これを何日も回すのは不安・・・

 

もちろん、ここ数ヶ月の、tf での苦しみから学んだこともあります・・・

 

エラーを見て、どこの問題か推測する とか

エラーが出ても慌てず、手順を経て解消する とか

 

の経験が積めたし。

 

おかげで、Keras を短期間で使えるようになったと思いたい。。。

無駄じゃなかったと思いたい。。。

 

さておき、とんでもないことに気付きました。

 

私はディープラーニング用に2台のパソコンを使っていますが、

メインマシンでトラブル発生です。

 

気付いたのは些細なこと。

今回なぜか、サブマシンで Keras を使い始めました。

 

とりあえずの実装ができたので、メインマシンへコピー。2台でハイパーパラメータの調整を始めたところ、どうもメインマシンの精度が安定しないのです。

サブマシンだと val_accuracy は 0.95-0.99 に張り付いてるのが、メインだと 0.00 - 0.99 までめまぐるしく動く感じ。Seed 取ってないせいかもしれませんが、それにしたって上下動が激しすぎます。

 

で、なんだか変だと。

 

よくよく考えると、

 

「Python3.6 で、出るはずの pandas エラーが返らない!」

 

ことに気付きました。

Keras は python 3.5 までの対応でして、サブマシンの方で 3.6 で動かすと「pandasがなんちゃら」とか エラーを出して止まるのですが。

メインマシンだと、3.6 でも曲がりなりに動いてくれますが、 val_acc が 0 ~ 0.99 までめまぐるしく動きます。そうすると test accuracy も当然悪いと。

 

学習速度は 1080ti のおかげで 1.5 倍くらい速いのですが、どこかがおかしく、使い物になりません。 

 

pandas 関連の問題だとすれば Anaconda のインストールの問題なんでしょうけど。

前 Anaconda を入れ直した際、なんか設定ファイルがうまく消せなかった経験があり(再インストールで環境引き継がれてしまった)。

また、どこに問題があるか切り分けられず、そのうちにさっくり、 Ubuntu インストールからやり直そうと思っています。

 

 これで一日潰れるし、再インストールして再発した否にはどうしようって感じですけど。。。

 

Keras のインストール

というわけで、Keras に挑戦することに相成りました。

Keras Documentation

 

バックエンドに TensorFlow, CNTK または Theano を使い、

フロントエンドでディープラーニングを楽にしてくれるものらしい。

Tensorflow はインストール済み。

CNTK も Theano も定評あるモデルで、いつかは触ってみたいけど、

今回は Tensorflow でいこう。

 

それでは Keras のインストール。 

pip install keras

 

 ただし、対応は Python 2.7-3.5 だそうなので、 Python 3.6 を入れている私は

source activate py35 

しないといけない。

さて、依存パッケージがあるそうで、

 

Kerasは以下のライブラリに依存しています.

numpy, scipy
yaml
HDF5とh5py (モデルの保存や読み込み関数を使う場合のみ)
cuDNN: オプションですが,CNNを使用する場合は推奨

Anaconda で入れてる人は、 numpy, scipy は導入済みのはず。

HDF5っていうのは見つからなかったけど、ぐぐったらどうも HDF5 = h5py らしい。

いつの間にか PyPI でインストールされていた: h5py

 

yaml というのは、データの保存や読み込みに使うようなのだけど、

このインストールは

sudo apt-get install libyaml-dev

 とのこと。

 

かんたん!

 

Keras は公式ドキュメントが日本語化されているし、使い方も TensorFlow よりも簡単!

データの取り回しも numpy で行うようですね。

tf だと、 tf. なんちゃら みたいな Tensor でデータを保持したりしますが、そうすると 

sess.run

しないと中身が見えなくて使いづらいし、

私の中で RAM をバカ食いしている疑惑も。

 

ちうことで、しばらく Keras で遊んでみます。

 

Keras とは、ギリシア語で「角」のことだとさ。

 

 

apt で公開鍵登録

sudo apt-get update

で、

 

パッケージリストを読み込んでいます... 完了
W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: http://dl.google.com stable Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 0000A0A0000A000A

などと表示されるとき。

 

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 000A0A0000A000A

で公開鍵を登録したあとに

 

sudo apt-get upgrade

 

pip-review で python パッケージ一発アップグレード

pip-reviewのインストール

pip install pip-review 

 

pip でインストールされているパッケージ検索

pip freeze 

 

アップデートの有無を確認

pip list -o

または

pip-review

 

一括アップデート

pip-review --auto

 

依存関係が壊れていないかを確認

pip check 

 

もしも依存関係が壊れていたら、必要なパッケージをインストールし直す

pip install bleach==1.5.0

pip install html5lib==0.9999999 

 のように、

pip install [モジュールの名前]==[バージョン番号] 

 

日記、最近の進捗

 

 このところ、  CNN を使った画像分類の勉強をしていました。

 f:id:pmonty:20170718032024p:plain

 

 Qiita のコードを参考に 2クラス分類を Tensorflow で実装。

 医用画像で 85% の accuracy ・・・せめて 90% 欲しいのに。 Data augmentation や、層を深くするなど試したけど、どれもこれもダメでした。

 なお、Cifar-10 のチュートリアルを参考にしたので、画像は 32 x 32 に圧縮・・・これが良くないかも。解像度高いほうが成績はいいだろうから、落ち着いたら圧縮せずに試してみる。

 

 で、このスランプの時に、知識をつけようと、Python や 画像認識関連、プログラミング一般論の本などを乱読。

 いくつかの本はすごく役に立った。

 紙の本、Kindleなど色々読んだけど、中でもオライリーの e ブック が最高だった。

 

 最近こんなエントリがはてブで人気を博してましたが

www.kotsulog.com

 オライリーの e ブックは、紙の本より安い(同額の本もあり)。

 基本は pdf、epub、mobi などのフォーマットで提供されているが、一部の本は pdf しか提供されていないので注意。

 

 ここ半年でプログラミング関連の本がかなり増えた。プログラミングの本って辞書的に使うことが多いので、持ち運びやすい電子書籍のほうがいい。

 オライリーの e ブックは mobi 形式もあって Kindle などの電子ペーパー端末でも読めるし最高。

 

 さて、そんなこんなで以前からやってみたかった Chainer にも挑戦。

 

 Qiita のコード参考に CNN を作成。違ったタスク(120枚の画像で2クラス分類)で、accuracy 100%, (ベストの値)。

 良かった、過学習かもしれないけど。

 

 こんな感じ。 

f:id:pmonty:20170716023821p:plain

 

 

 

 で、 Tensorflow と Chainer を少し触ってみた感想。

 

1.DNN はデータ入力が大変

 Deep learning のコードはネット上にたっくさんある。 Neural network の作成や deep learning 自体は、私のような初心者でも可能。

 ただ、データを NN に入るように整形して、learning を始めるまでが大変。データの取り回し方法もネット上に多数の記事があるのだけど、自分の作った NN に合うような形で実装しないといけない。

 機械学習を長くやってきたプログラマには簡単かもですが、私には難しかった。

 

2.Chainer 愛憎

 言われている通り、Chainer はコードが書きやすい。tf と比べて楽。

 しかし、最近のアップデートで Chainer 2.0 となり、一部で互換性が失われたですよ。Chainer v1.14 で動くコードが v2.0 で動かなかったりする。困ったものだ。

 GPU の使い方もよくわからない。今は GPU を使えておらず、全部 CPU で処理している。CPU は i3-7100 や i5-7600K を使っているのだけど、遅い、遅い。

 

 この点、 Tensorflow は良い。明示的に 「GPU を使ってください」 と書かなくても、勝手に GPU を使ってくれる。

 ありがたやありがたや。

 CPU only だと数分かかるタスクが、モノの10秒で終わってしまうよ (^^)

 

 Tensorflow もアップデートを繰り返しているけど、互換性が切れたメソッドには、

  「こういうアップデートがありました。このように書いてください」

 ってエラーメッセージを返してくれる。

 Chainer も同じこと、できないのかなぁ。 

 

 

 Deep learning の勉強、歩みはのろいけど、まぁ順調かな。

 

 この先やるべきことはいろいろある。どこからどう手を付けていっていいのか。

 自分に技術力がないことはよく理解した。

 そろそろ専門家の人と共同研究にしたい。

 あいにくそのような知り合いがいないのだけど、どうやって探すものなんだろう。

  (あー、今年の人工知能学会に行っときゃよかった!! PyconJP も行きたかったけど、開催日を知ったのはごく最近。すでに定員いっぱいになっちゃってたし・・・)

 

 他に自然言語処理もやりたいのだけれど、これはさらに難しそう。ホント専門家にお任せしたいな・・・

 

 これを自分の専門にできればそれでいいのだけど、そういうポストあるのか。

 でも機械学習の基礎はないから、そういうポストに潜り込むのも難しそうだし。

 ぐだぐだ。

deep learning でよく使うimport文を保存しておく(python)

スクリプト・コピペ用

def main():

    import chainer, cv2, dicom, glob, os, pickle, shutil, sys, time
    from chainer import cuda, Function, gradient_check, \

                                    optimizers, serializers, utils, Variable

    from PIL import Image

    import chainer.functions as F

    import chainer.links as L

    import matplotlib.pyplot as plt

    import numpy as np

    import tensorflow as tf

if __name__ == '__main__':

    main()

 

対話的

import chainer, cv2, dicom, glob, os, pickle, shutil, sys, time

from chainer import cuda, Function, gradient_check

from chainer import optimizers, serializers, utils, Variable

from PIL import Image

import chainer.functions as F

import chainer.links as L

import matplotlib.pyplot as plt

import numpy as np

import tensorflow as tf 

 

dicom を匿名化 (python, pydicom, pycrypto)

python で、pydicom と pycrypto を使って dicom ファイルを匿名化・暗号化します。

 

 

 

暗号化については、pycrypto というライブラリを使い、AES 方式で暗号化する方法がネットに上がっておりましたので、それを利用しました。

 

pycrypto の使い方は

暗号化ライブラリ pycrypto · kamatari

を参考にしました。

 

コードを使う際は、必ず 'secret_key' のところを変更(ThisIsTopSecret! を別の単語に!)して使ってください。この部分が、暗号解読のパスワードになるためです。

(パスワードの文字数は、16、24、32文字のいずれかだそうです。当然長いほうがより secure ですので、できれば長いパスワードをご利用ください)

 

個人情報の大部分を 'no data' で置き換えますが、後で再使用が必要かもしれない

 ID

 age

 性別

は後で確認できるよう、暗号化としています。

 

pycrypto では、暗号化する対象は 半角英数字で、16の倍数の文字数 である必要があるそうです。

下記スクリプトは、

 ID が8桁

 age が2桁

 性別 が1桁

と想定して、文字数を調整しています。桁数がちばう場合には、適宜調整してください。

 

# -*- coding: utf-8 -*-

'''カレントディレクトリ内にある dicom ファイルを Encrypt します

実装かっこ悪くてすみません'''

import os, time, dicom

from Crypto.Cipher import AES

start = time.time()

print('started : ' + time.ctime())

secret_key = 'ThisIsTopSecret!'

#password は半角16,24,32文字

def main():

    print('__encryption started!!__')

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

        if ext == '.dcm':

            ds = dicom.read_file(file_name)

            cryp = AES.new(secret_key)

            ds.PatientAddress = 'no data'

            ds.PatientBirthDate = 'no data'

            ds.PatientBirthName = 'no data'

            ds.PatientName = 'no data'

            ds.PatientSize = 0

            ds.PatientWeight = 0

            ds.PatientMohterBirthName = 'no data'

            ds.PatientTelephoneNumbers = 'no data'

            ds.CountryofResidence = 'no data'

            ds.PatientAge = cryp.encrypt(

              str(ds.PatientAge) + '___4___8__12__'

              )

            ds.PatientID = cryp.encrypt(

              str(ds.PatientID) + '___4___8'

              )

            ds.PatientSex = cryp.encrypt(

              str(ds.PatientSex) + '___4___8__12___'

              )

            ds.save_as(root + '_encrypted.dcm')

            print(

                    '__' + file_name + ' was encrypted as ' +

                    root + '_encrypted.dcm!!__'

                   )

    print('__finished!!__')

    elapsed_time = time.time() - start

    print('finished : ' + time.ctime())

    print('elapsed time : {0} sec'.format(elapsed_time))


if __name__ == '__main__':
    main()

'''こちらを参考にさせていただきました
https://kamatari.github.io/2016/04/23/what-is-pycrypto/'''

 

 

こちらは変更バージョンです。

上記スクリプトで 'no data' で置き換えていたところに 無意味な半角英数字 を挿入し、暗号化しているように見せかけたものです。

 

暗号化の解除に、多少 余計に時間がかかるかもしれないと思い、修正しました。

 

# -*- coding: utf-8 -*-

import os, time, dicom, random

from Crypto.Cipher import AES

 

start = time.time()

print('started : ' + time.ctime())

 

secret_key = 'ThisIsTopSecret!'

#password は半角16,24,32文字

 

def main():

    print('__encryption started!!__')

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

        if ext == '.dcm':

            ds = dicom.read_file(file_name)

 

            cryp = AES.new(secret_key)


            SixteenInt = random.randint(

                1000000000000000,

                9999999999999999

                )

 

            ds.PatientAddress = cryp.encrypt(str(SixteenInt))

            ds.PatientBirthDate = cryp.encrypt(str(SixteenInt))

            ds.PatientBirthName = cryp.encrypt(str(SixteenInt))

            ds.PatientName = cryp.encrypt(str(SixteenInt))

            ds.PatientSize = 0

            ds.PatientWeight = 0

            ds.PatientMohterBirthName = cryp.encrypt(str(SixteenInt))

            ds.PatientTelephoneNumbers = cryp.encrypt(str(SixteenInt))

            ds.CountryofResidence = cryp.encrypt(str(SixteenInt))

 

            ds.PatientAge = cryp.encrypt(

              str(ds.PatientAge) + '___4___8__12'
              )

            ds.PatientID = cryp.encrypt(

              str(ds.PatientID) + '___4___8_'

              )

            ds.PatientSex = cryp.encrypt(

              str(ds.PatientSex) + '___4___8__12___'

              )

 

            ds.save_as(root + '_encrypted.dcm')

 

            print(

                    '__' + file_name + ' was encrypted as ' +

                    root + '_encrypted.dcm!!__'

                   )

 

    print('__finished!!__')

    elapsed_time = time.time() - start

    print('finished : ' + time.ctime())

    print('elapsed time : {0} sec'.format(elapsed_time))

 


if __name__ == '__main__':

    main()

 

'''こちらを参考にさせていただきました
https://kamatari.github.io/2016/04/23/what-is-pycrypto/'''

 

ディープラーニング準備 Ubuntu14 インストールから cuda 導入トラブルシュート

 導入トラブルとトラブルシュート

1.Ubuntu は DVD ではなく、USB からインストールする。

 DVD player が対応していないと、drubのインストールに失敗する(起動できなくなる!)ことがある。もし DVD でインストールを試して「致命的なエラー」が出たら、USB からを試してみて。

Ubuntu 14.04.3をUEFIモードでインストールした時に詰まった - あお日記

 

2.クリーンインストール(再インストール)時、/home はフォーマット必須。

  なお、

  SSD が /

  HDD が /home と設定している時。そのほかの場合は分からないけど。

 フォーマットしないと一部ふるい設定が残ってしまう。

 

3.ストレージは 2TB まで!

 それ以上だと Ubuntu 14 が認識できず、トラブるみたい。

 パーティション切って 2TB 以下にすれば大丈夫かもしれないけど、試してないので。

 

4.cudaの依存パッケージを事前にインストールする。

 Ubuntu14 クリーンインストール後、すぐには cuda 入らなかった。何かパッケージに依存してるっぽい。

 でも何が必要なのかは、確認できなかった。

 afni / freesurfer / FSL インストール後なら問題なく入った。

 医用画像解析にこれらは便利だし、上記インストール後の方が無難 

Ubuntu 14.04初期設定 - 医用画像で Deep Neural Network

 

5.cuda は、cuda のページからダウンロードすること

 cuda は NVIDIA のグラボのドライバーなので、グラボのドライバーをインストールすれば、 cuda が使えると思うかもしれない。

 少なくとも私はそう思った。ので NVIDIA-driver のサイトからもDLしてみた。でもインストール後、cuda は 5.5 (2017年6月現在、最新は8.0)であった。敢えて古いのを使う必要はないであろう・・・

 ディープラーニングに使うには、基本新しい cuda の方が良いだろうから(最新の8.0に未対応のライブラリもある。事前確認が必要)。

 

6.CPU、RAMのオーバークロックは切っておく

 一度、オーバークロックに関係ありそうなエラーが出た。

 

7.cuda のインストールは CUI

 こちらを参考にしました。

Xubuntu 14.04にNVIDIAの最新ドライバーをインストールする方法(Xubuntuをテキストモードで起動させる方法)

  

一節には、blacklitでnouveauを止めないとインストールに失敗するという話もあるが、

はじめての深層学習(ディープラーニング)プログラミング:書籍案内|技術評論社

私の経験では、それは不要。

  

8.cudnn のインストール前に、ライブラリが対応しているか確認すること。

 最新版を入れたら tensorflow が動かなかったので。

 だだし、cudnn のアンインストールと再インストールは簡単なので、最新版をとりあえず入れてもそんなに悪くはないかも。

 

9.Anaconda のインストールで、$ sudo bash Anaconda...と管理者でインストールするとハマる。

 root 権限でインストールされ、自分のアカウントで使えなくなる。

sudo su

すれば使えるだろうけど、セキュリティ的に。

また、chmod chgrp などはできるのだけど、その後もエラーが出るので、再インストールするのが無難だと思う。

 

アンインストールは、ネット検索で正式な方法が見つからなかったので

sudo rm -rf ~/Anaconda3 ~/.conda

とした。

これが正しい方法なのか分からない。

ご存じの方はコメントください。

 

chmod した場合のエラーだけれど、

conda create -n tensorflow python=3.5 anaconda

で permission エラーが出ることがあった。

仮想が使えないのは痛い。

 

10.Teamviewer

Ubuntu 14 だと、

sudo dpkg -i filename

でインストールできない。

この後に

sudo apt-get update -f 

と打つ必要あり。

How do I install TeamViewer on my Linux distribution?

 

11.R言語と RStudio

貧乏科学者御用達(?)の統計ソフト・プログラミング言語 R。

RStudio のインストールには、ベースとなる「R」が必要。

自分の場合は afni をインストールする際に、一緒にインストールされる。

afni でインストールされているにも関わらず、

sudo apt-get install r-base 

をするとエラーが出るので、これはやらないこと。

 

Ubuntu14.04初期設定

またトラブって10回くらい再インストールした(してる)ので、自分のためのコピペまとめ。

つらいぜ・・・ 

いつも

Ubuntu 14.04 LTSをインストールした直後に行う設定 & インストールするソフト

を参考にしてたのだけど、

その中でも自分がいつも使うものを pick up にて modify 

 

何はなくとも

google-chrome-stable

をインストール。

 

ソフトウェアセンターからインストールする

gufw
clamtk
psensor
unity tweak tool

 

以下、ターミナルにコピペ

ドラッグアンドドロップでOK

# 最初

sudo ls

# で、sudo権限を承認しておくと楽。

 

# アップデート

sudo apt-get -y update && sudo apt-get -y upgrade

 

# スクロールバーを元に戻す
gsettings set com.canonical.desktop.interface scrollbar-mode normal

# フォルダーを英語表記に戻す
env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

# ゲストセッションを無効化する 
sudo sh -c 'printf "[SeatDefaults]\nallow-guest=false\n" >/usr/share/lightdm/lightdm.conf.d/50-no-guest.conf'

# 日本語リポジトリの追加
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/trusty.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get install ubuntu-defaults-ja

# fcitxパッケージのインストール(これは日本語リポジトリでインストールされるみたいなので、しなくて良いのかも。)
sudo apt-get install fcitx fcitx-mozc fcitx-libs-qt5 fcitx-frontend-qt5

# ここでfcitxの設定。
# dash-fcitxセットアップヘルパー で、fcitxを通常使う日本語入力システムに
# 「ok」をクリックするだけ
# システム設定を開き、言語サポートをインストー
# dash-fcitx設定 で、入力メソッドのオンオフ に、お好みの設定を追加。

 

# exfat利用

sudo apt-add-repository ppa:relan/exfat

sudo apt-get update

# ここで公開鍵を利用できないエラーが出るので、修正

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys #ここに公開鍵番号#

sudo apt-get update

sudo apt-get install exfat-fuse exfat-utils

 

ホームページからそれぞれダウンロード

afni, freesurfer, FSL,

  http://pmonty.hatenablog.com/entry/2017/03/06/160848

 

 

cuda

cudnn

 

Rstudio

git

Anaconda

 tensorflow

 chainer

atom

 

tf のモデル (GoogLe net など)のダウンロード元

https://github.com/tensorflow/models 

 

python で再帰的にファイルを作成してみるぞ。

 

カレントディレクトリを確認。

import os

os.path.abspath('.')

os.listdir()

# bash で言うたら pwd, ls 

 

作成

直下の全てのディレクトリに、同一名のファイル作成。

import os

 

for i in os.listdir()

    with open(i + '/test.txt', 'w')

# test.txt ファイルが作成される。

 

関係ないけど、bash でファイルを作成と言えば

touch foo.txt

なんか意外と shell 本で取り上げられてない気がする。 

 

 

直下の全てのディレクトリに、同一名のディレクトリ作成。 

import os

 

for i in os.listdir('.')

    os.mkdir(i + '/test') 

# test ディレクトリが作成される。

 

ファイルの名称変更。

直下の全てのディレクトリ内にある全てのファイル名を

ディレクトリ名 + ファイル名に。

# すいません、うまくいかなかったんで、諦めて

flexrenamer (Windowsの無料ソフト)

# というソフトを使いました。

# 速いし超便利なソフトです。オススメ

 

 

今のところ、cmd や bash よりも使いやすいなり。

Python 便利 (^^)

「めんどうなことはpythonにやらせよう」と言う本が出るとか、出たとか聞くけど。

その気持ち、よく分かる。

 

作ってみた CNN があまりに遅く、「ハイパフォーマンス Python 」を読み始めました。メモリとかキャッシュとか、フロントサイドパス、バックサイドパスとか、よく分からない用語がたくさん。たまらんです。楽しい。そのうち、もっと基本な言語も勉強したい。Java なのか、C# なのか分からんけど。

 

Z270 とかのチップセットと X99 とかとの違いに メモリチャンネル、PCIeレーン数とかがあって、複雑なプログラムだと、そういうことが効いてくるんだろうなぁ・・・

今は Z170/Z270 のシステムを使っているけど、将来は X99 に移行したいな。

 

今は GPGPU で、SLI していないけど、将来したいけど。

Z170/270だと PCIe レーンが max 20 なので、SLI だと、一つの GPU あたり 3.0 x 8 しか使えないのかな。X99 だと 40 レーン。30 x 16 も 2 レーン確保できると思われ。そういうことも速さに効いてくるんだろうなぁ・・・ i7-6700K と比べて i7-6800K は速いと言うけど、それって CPU 性能だけではなく、そのあたりも効いてるのだろうと。

まっ、まだ今は、Python の最適化の勉強の方が先です!