NEW ALIENWARE AURORAにUbuntu16.04とUbuntu19.10を導入しCUDA10.1を入れるまでの個人的メモ
深層学習用デスクトップの環境構築時のメモ
PCスペック
NEW ALIENWARE AURORA
導入OS:Ubuntu19.10
CPU:core i9
GPU:Geforce RTX 2080 11GB SUPER 2つ
導入OSがUbuntu19.10の場合については最下部の追記部分を参照
GPUの認識まで
手順1
- BIOS設定
セキュアブートの無効化
これをしないとUbuntuが起動しなくなったりいろいろ問題が発生する. - インストール時
ubuntuインストール時に「Try Ubuntu without install」を選択する画面でeを押しgrubを編集する.
quit splash
をpci=nomsi quiet splash nomodeset
に変更する.
再起動しUbuntuのインストール - grubの編集
/etc/default/grub をエディタで開き
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
上記を以下に変更する.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nomsi nomodeset"
GRUB_CMDLINE_LINUX="pci=noaer"
そして再起動する.
Ubuntu19.10導入時にはこの手順を行わなくても導入できた手順2:GPUのドライバをダウンロード
以下のURLからドライバーをダウンロード
使用するGPUに合わせる
ドライバーダウンロード - GeForce
- Geforce 10 Series
- Geforce GTX 1080 Ti
- Linux 64-bit
- Japanese
手順3:Ubuntu自体のドライバを無効化(Ubuntu19.10ではこの作業はなくてもできた)
- /etc/modprobe.d/内にblacklist-nouveau.confというファイルを作成
blacklist nouveau
options nouveau modeset=0
と書き込み保存
$ sudo update-initramfs -u
で再読み込みし再起動手順4:インストーラの実行(Ubuntu16.04のみ)
- Ctrl + Alt + F1 でcuiモードに入る
$ sudo service lightdm stop
でGUIを停止 - 実行権限を付与した後に実行.
$ sudo ./NVIDIA-3XXXXXX(任意の名前).run
$ nvidia-smi
でGPUの認識を確認する $ sudo service lightdm restart
でGUIモードに入り再起動
CUDAおよびcuDNNの設定
手順1:CUDAのダウンロード
CUDA
1. Linux
2. x86_64
3. Ubuntu
4. 16.04
5. deb(local)
手順2:インストール
- インストール
$ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda
その後,パッチをあてる
$ sudo dpkg -i パッチ
- .bashrcに書き込み
export PATH=/usr/local/cuda-9.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:${LD_LIBRARY_PATH}
再起動しnvcc,nvidia-smiなどで確認する.手順3:cuDNNのダウンロード
- CUDA9.0に対応するものをダウンロード.
- Runtime Library for UbuntuとDeveloper Library for Ubuntuの両方をダウンロード
$ sudo dpkg -i
でインストール.
追記(Ubuntu19.10インストール時)
Ubuntuのインストールまでは同じ手順
Ubuntu19.10インストール時にもUbuntu16.04同様にログインループが発生
解決手順:NVIDIA driverの導入
とりあえず,update,upgrade
NVIDIA driverを探す.(必要ないらしいけどした.Ubuntu19からは導入時にNVIDIAドライバが設定済みらしい)
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ ubuntu-drivers devices
でNVIDIA driverを探す
recommendedされているものを以下のコマンドでインストール
$ sudo apt install nvidia-driver-xxx
$ nvidia-smi
で確認.
ただし,このまま reboot するとログインループになる
そこで,以下を実行する(ドライバインストール直後に実行で解決した)
1. gdm3を設定ごとアンインストール
$ sudo apt-get purge gdm3
2. gdm3を再インストールする
$ sudo apt-get install gdm3
その後 reboot
gdm3について
GDMはGNOME Display Managerの略
ログインループの原因はこれにある.
ログイン画面に影響を及ぼすファイルが以下のファイル.
$ /etc/gdm3custom.conf
以下の項目が自動ログインの項目とログインするIDの項目
AutomaticLoginEnable= Bool
AutomaticLogin=UserID
たまにログインループになったときも,
CUIモードに入りgdmのpurgeとinstallを行い再起動すると直った‥
Ubuntu19.10へのCUDA10.1の導入
CUDA10.1 update1 Archive
1. Linux
2. x86_64
3. Ubuntu
4. 18.10(19.10にも対応)
5. deb(local)
説明どおりに導入.
- bashrcに書き込み
export PATH=/usr/local/cuda-10.1/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:${LD_LIBRARY_PATH}
再起動しnvcc,nvidia-smiなどで確認する.
Ubuntu20.04に任意のPython3をインストール(公式サイトからダウンロード)(2020/05/01有効)
(この記事は,Ubuntu16.04用のものをUbuntu20.04でも試して少しアップデートした記事です) Ubuntu16.04では,デフォルトでPythonが搭載されていますが,aptでupdateしてもPython3.5?くらいまでしか反映されません. そこで,Ubuntu16.04上で,最新のPythonを使う方法を紹介します. Ubuntu20.04,Ubuntu19.10でも動作確認済み.
- 必要なツールのダウンロード
- Python公式から最新のPythonのダウンロード
- 解凍とビルド
- エラー:ModuleNotFoundError: No module named '_ctypes'について
必要なツールのダウンロード
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt install libbz2-dev
$ sudo apt install libdb-dev
$ sudo apt install libreadline-dev
$ sudo apt install libffi-dev
$ sudo apt install libgdbm-dev
$ sudo apt install liblzma-dev
$ sudo apt install libncursesw5-dev
$ sudo apt install libsqlite3-dev
$ sudo apt install libssl-dev
$ sudo apt install zlib1g-dev
$ sudo apt install uuid-dev
$ sudo apt install tk-dev
Python公式から最新のPythonのダウンロード
下のPython公式サイトから目的のPythonをダウンロードする
Gzipped source tarballの項目から.tgzファイルのダウンロードする
解凍とビルド
tarコマンドで解凍
$ tar xzf Python-任意のバージョン.tgz
ビルドは以下の通り
$ cd Python-任意のバージョン
$ ./configure --enable-shared
$ make
$ sudo make install
$ sudo sh -c "echo '/usr/local/lib' > /etc/ld.so.conf.d/custom_python3.conf"
$ sudo ldconfig
エラー:ModuleNotFoundError: No module named '_ctypes'について
$ pyenv install 3.7.0
Installing Python-3.7.0...
BUILD FAILED (Ubuntu 18.04 using python-build 1.2.3-79-gc057a80c)
Inspect or clean up the working tree at /tmp/python-build.20180708190520.14846
Results logged to /tmp/python-build.20180708190520.14846.log
Last 10 log lines:
File "/tmp/tmppm_d6i5e/pip-10.0.1-py2.py3-none-any.whl/pip/internal/init.py", line 42, in
File "/tmp/tmppm_d6i5e/pip-10.0.1-py2.py3-none-any.whl/pip/ internal/cmdoptions.py", line 16, in
File "/tmp/tmppm_d6i5e/pip-10.0.1-py2.py3-none-any.whl/pip/internal/index.py", line 25, in
File "/tmp/tmppm_d6i5e/pip-10.0.1-py2.py3-none-any.whl/pip/ internal/download.py", line 39, in
File "/tmp/tmppm_d6i5e/pip-10.0.1-py2.py3-none-any.whl/pip/internal/utils/glibc.py", line 3, in
File "/tmp/python-build.20180708190520.14846/Python-3.7.0/Lib/ctypes/init.py", line 7, in
from ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
Makefile:1122: recipe for target 'install' failed
make: *** [install] Error 1
エラー:ModuleNotFoundError: No module named '_ctypes'が発生した場合
$ sudo apt install libffi-dev
上記のツールをインストールすると解決できる
【新入生・受験生向け】情報系の大学生活について
最近,情報系の大学に進学する人が増えているそうです.
そこで,現役の情報系大学生として,
これから情報系の大学に進学する人や,情報系の大学に進学したけどイマイチ何をするべきか分からない人向けに
情報系の大学生活はどのようなものか,何をすべきか紹介しようと思います.
ここでは,大学進学以前に情報学を勉強したことがない人向けに紹介します.
情報系の大学で必要なもの
ノートパソコン
最低限のネット環境
これさえあれば,(何でもできます)ある程度のことはできます.
プログラミングだけなら,オフライン環境下でもできます.
他の機械工学や生命医化学に比べるとはるかに低コストかつ無限大に学べます.
プログラミングなどの事前知識は不要
情報系への進学にプログラミングの事前知識はいりません.ただ,あったら便利だなって程度です.
また,ほとんど人がプログラミングや情報学の初心者です.中には,パソコンを触ったことのない人すらいます.
なので,心配はいりません.大学で真面目に勉強できれば大丈夫です.
私自身入学当初は人差し指でタイピングしているような人間でした
大学での生活
私自身が大学生活を通して大事だと感じたことを紹介しようと思います.
講義以外の時間を有効に使う
大学では,中学や高校のように,毎日朝から夕方まで授業があるわけではありません.
下手をすると小学生のほうが勉強している可能性が.
とにかく自由な時間が増えます.そこで,して欲しいのが,コンピュータスキルの向上に力を入れることです.
というのも,
大学の講義のほとんどが座学です.
このように,学生は机に座り教授が黒板に描く数式をひたすら板書するような講義がほとんどです. 実際にパソコンを使用する講義はほとんどありません.
したがって,コンピュータを扱う能力は自分で育てるしかありません. もちろん,コンピュータを扱うばかりが情報学とは言いません.
しかし,コンピュータの使えない情報系大学生は,泳げない魚のようなものです.
そのためにも,サークル活動を活かしてみましょう.
サークル活動
サークル活動についてです.
バンドサークルやテニサーでもいいですが,
本気で将来のことを考えるなら情報系のサークルに入りましょう.
私たち情報系の強みは,
パソコンとネット環境だけで学ぶことができる
という点です.
パソコンとネット環境さえあれば,場所は問いません.
大学の食堂や,空き教室や共有スペース,飲食店など.
低コストな環境で他のサークル員と切磋琢磨しながら勉強ができるはずです.
また,大体のサークルは兼部ができるので,バンドをしながら情報系のサークル活動などが可能です.
情報系のサークルと言っても多種多様です.ここでは,情報系サークルのほんの一例を紹介します.
- 競技プログラミングサークル
いわゆる競プロと呼ばれるものです.
競プロは,数学の問題集をプログラムを用いて解くイメージです.それを,いかに効率よく,かつ素早くできるかを競い合います.
- ゲーム制作サークル
その名の通り,ゲームを作るサークルです.
ゲーム会社で働きたい人や,自作ゲームを作りたい人におすすめです.
ここで紹介したのはほんの一例です.この他にも,多種多様なサークルが存在します.
これらのサークルに入ることによりスキルアップは確実です.
勉強における3つのステップ
大学では3つのステップに分けて勉強できると考えてます.
幅広く学び,興味のある分野を探求するステップ
興味のある分野を見つけ,その分野の事前知識を勉強し研究の準備をするステップ
がっつり興味のある分野の研究(勉強)を行うステップ
ステップ1:1,2年生(研究室配属が決定するまで)は幅広く学ぶ
まず,ステップ1に関してです.
1,2年生の時から学ぶ範囲を狭めるのは大変危険です.
情報学と言っても,多種多様な分野があります.
AI分野だったり,WEB関連技術だったり,
あるいは脳波や心電図計測のような生体系分野のようなものも情報学に含まれます.
また,基本的なプログラミング能力の向上,コンピュータに命令するための各種コマンド操作,コンピュータの環境構築の方法などもこの時期に勉強しましょう.
つまり,1,2年生という期間は,幅広く学び本当に興味のある分野を探求する期間だと言えます.
また,幅広く勉強する上で,将来的には関係ない分野の経験が興味のある分野に結びつくことがあります.要は経験を積み重ねようということです.
ステップ2:3年生は興味のある分野の事前知識を蓄える
ステップ2に関してです.
3年生では,自分の興味のある分野の研究ができる研究室をある程度絞りましょう.
そのためにも,研究室公開と呼ばれる研究室の見学行事には,
必ず参加し,自分のやりたいことができるか調査しましょう.
研究室には最低1年は通います.
配属された後に後悔しないように準備しましょう.
ステップ3:思う存分興味のある分野の研究をする
いよいよ卒論に向けて研究を行います.
研究室の先輩方や,教授から指導を受けながら研究を進めましょう.
また,この頃には,ステップ1,2で学んだ知識を駆使して様々なことができるようになっています.
研究室について
一般的な大学での研究室配属は4回生からになります.(3回生からの大学も存在します)
研究室では,各研究室のテーマに沿った研究を行い,卒業論文なども配属された研究室で執筆することになります.
また,最低でも1年間は配属された研究室での日々を生活するので慎重に選ぶ必要があります.
情報系の研究室での生活
研究と言うと,白衣の人がフラスコを振りながら行うイメージを浮かべる人がいますが
情報系の研究では,主に計算機(パソコン)の前で研究を行うことになります.
また,研究以外にも
研究室の学生同士で最新の論文を紹介
各自の進捗状況を共有する全体ゼミ
中には懇親会を行う研究室
学会発表と呼ばれる行事
つまり,研究だけが研究室ではないということです.
大学院について
理系の大学に来たからには,大学院進学も視野に入れましょう.
通常,学部卒業後に大学院進学する場合,
2年間,修士課程と呼ばれる課程で研究することができます.
大手の企業では,修士課程を修了することが採用条件だったりします.また,さらにアカデミックな道を進む,博士課程を進むという選択肢も存在します.
大学院については,3年生になってから考えても大丈夫です.
今後も紹介したい内容があれば更新します。
【卒論・修論・Tex】卒論に貼るEPS画像の作り方:PowerPointで作成した図をEPS画像に変換
大学の卒業論文では,論文に貼る画像の扱いにも気を付けなければなりません.
論文中に扱う画像は,ベクトル情報を保存した画像を使用する必要があります.
ベクトル情報ってなんやねんって人には,まず画像のベクトル情報から説明します.
そもそもベクトル情報を保存した画像とは
私たちがよく扱う画像
説明するより見た方が早いので下の画像をご覧ください.
下の画像は,私たちがよく使用するPNG,JPGといった画像を拡大したものです.
見てわかる通り,図中の図形がギザギザになっているのが分かります.
ベクトル情報を保存した画像
一方で,ベクトル情報を保存した画像を見てみましょう.
先ほどの画像と比較すると,拡大しても図中の図形が滑らかな線で構成されていることが分かります.
このように,ベクトル情報を保存した画像は拡大しても滑らかな図形や文字を表現できます
ベクトル情報を保存したeps画像の作成方法
ここでは,以下のツールを使用します.
PowerPoint:画像を作成するのに使用します
Metafile to EPS converter:作った画像をeps画像に出力します.後に,ソフトのダウンロード方法を説明します.
PowerPointで目的の図を作成する
まず,目的の図を作図してください.
ちなみに数式を挿入する際は下の画像の矢印部分から挿入できます.また,余談ですが,数式の挿入にはTexの数式モードと同様の入力でも可能です.
グループ化した図を,右クリックで図として保存を選択し
拡張Windowsメタファイル形式で保存してください.
左の画像ような形式(.emf)で保存します.
PowerPointの操作はここまでです.
次は,作成した画像をTexで貼り付けられるようにEPS形式に変換します.
EPS形式に変換
EPS形式に変換する際,Metafile to EPS converterというソフトを使用します.ここからダウンロードできます.下の画像の矢印の部分からexeファイルを実行してダウンロードしてください.
ダウンロードが完了したら,Metafile to EPS converterを開き,先ほど作成したemf形式の画像を選択しましょう.
Export EPSの項目からEPS画像に変換できます.
以上で,EPS画像の作成は終了です
EPS画像は,実際にTexに張り付けて確認してください.
Atomパッケージ「Hydrogen」のエラー:No kernel for grammer python found について(2019年1月対応)
AtomパッケージのHydrogenで導入ができず以下のエラーが出る場合の対処法
No kernel for grammer python found
No kernels Installed
Jupyter notebookの環境構築が済んでない場合
Hydrogenを使用するには,Jupyter notebookの環境構築が必須なので,まだ環境構築が終えてない方は下の記事を参考にして下さい.
Jupyter notebookの環境構築が済んでいてエラーが出る方
設定画面を開く
まず,Atomの上部メニューにある「編集」項目から「環境設定」項目を選択し下のような設定画面を開いてください.
その後,「パッケージ」項目を選択しHydrogenの「設定」項目を選択してください.
Atom上で同期する端末情報を調べる
次に,端末を開き以下のコマンドを打ってください.
$ jupyter kernelspec list --json
すると以下の画像のように表示されるので,出てきたものを全文コピーしてください.
端末情報をAtomに反映
コピーしたものを,先ほど開いたHydrogenの設定画面中にある「Startup Code」項目にペーストしてください.
これで,Hydrogenが機能しているはずです.
【卒論・修論・Tex】レポートや卒論などにおける参考文献の書き方:BibTexの使い方
Latexで大学の課題のレポートや卒業論文を書く際に,
参考文献を手打ちで作成していませんか?
参考文献を書いている間, 著者,出版日などの各項目の順番を忘れたり,
そもそも参考文献ってどう書くの?
そういった,問題を解決するのがBibTexです.
BibTexを使用すると,このように参考文献が綺麗に,また簡単に引用ができます.
BibTexとは
BibTexとは,参考文献の一覧の整形に使われるツールです.(とWikipediaに書いてありますが)
一言で表すと,参考文献のテンプレートを作成しそれを元に綺麗に参考文献を作成できるツールです.
この記事では,BibTexを使用する環境としてCloudLatexを使用します.
CloudLatexはクラウド上でTexを使うことができるツールです.
BibTexの使用方法
ここでは,Google Scholarを例にBibTexを使用してみます.
まず,引用元の論文を検索します.
次に,下の画像の黒い枠線で囲っている部分をクリックしてください.
そして,BibTexという項目を選択すると以下の様な形式でページが表示されますので全文コピーしてください.
@article{谷口忠大2011コミュニケーションするロボットは創れるか, title={コミュニケーションするロボットは創れるか-記号創発システムへの構成論的アプローチコミュニケーションするロボットは創れるか-記号創発システムへの構成論的アプローチ, 2010}, author={谷口忠大 and 須藤秀紹}, journal={システム/制御/情報: システム制御情報学会誌}, volume={55}, number={8}, pages={339--344}, year={2011} }
それでは,Cloud Latexに移動しましょう.
Cloud Latex上で,hoge.bibのように.bib形式のファイルを作成し,先ほどコピーしたものを貼り付けてください.
.texファイル内の\end{document}文のすぐ上部にBibTexを使用するためのコマンドを追加します.
ここで,\bibliography{hoge}
のhogeには.bibファイルの文頭を入れてください.(hoge.bibなら「hoge」)
\begin{document} ~~~本文~~~ \bibliographystyle{junsrt} \bibliography{hoge} \end{document}
実際に引用してみる
実際に引用してみましょう.
.bibファイルの下の画像の黒枠で囲った部分をコピーします.
.texファイルでは,\citeコマンドを使用します. \cite{}の{}部分に先ほどコピーしたものを貼り付けてください.
するとこのように綺麗かつ自動で参考文献の項目を作成し引用ができます.
また,余談にはなりますが引用する際はピリオドの手前で引用しましょう[1].
注意点
.bibファイルについて
.bibファイルは1つだけでいいです.
下のように,並べて記述できます.
@article{1つめの論文, title={タイトル1} author={著者1}, journal={発行元}, volume={ページ数}, number={数}, pages={ページ}, year={年} } @article{2つめの論文, title={タイトル2} author={著者2}, journal={発行元}, volume={ページ数}, number={数}, pages={ページ}, year={年} }
また,書籍などに適した.bibファイル用のテンプレートがネット上で転がっているので必要ならば調べてみてください.
エラーについて
.texファイル内で1つもBibTexを用いて引用をしていない場合, 下のような警告がでます.
したがって,とりあえず文章と関係なくても\cite{}コマンドを.texファイルに書き込んでおいてください.
【初心者向け】Ubuntu16.04でJupyter notebookを使いPythonスクリプトを書こう
Jupyter notebookとは,一言で表すとブラウザ上でPythonを対話的に実行することができるツールのことです.
下は実際にJupyter notebookを使用している画像です.
このように,Pythonファイルで実行する必要がなく,Pythonを対話的に実行することができます.
導入手順
使用する環境は以下の通りです. また,最低限のPythonの環境構築が済んでいることが前提です.
Ubuntu16.04
Python3.5.2
pip 18.1
それでは,導入していきます.
pipのアップデート:
$ pip3 install -U pip
iPythonの導入:
$ pip3 install ipython
Jupyterの導入:
$ pip3 install jupyter
これで,導入は完了です.
pip関連でエラーがでた場合の回避策を後日記事にしようと思います.
Jupyter notebookの使用方法
それでは,Jupyter notebookを使ってみましょう.
$ python3 ipython notebook
と打ち,ブラウザに以下のような画面がでてきたら成功です. 次に,画面右上部の「New」という項目を選択し「Python3」を選択してください. すると,下の画面のようにPythonスクリプトを書き込めるようになります.
よく発生するエラーについて
これは, chownコマンドでファイルの権限を書き換えることで解決できます.
$ sudo chown -R あなたのユーザネーム:あなたのユーザネーム ~/.local/share/jupyter/
【補足】Pythonのインタプリタ,及びiPythonについて
下の画像のように使用します.
このインタプリタ機能は,わざわざPythonファイルで実行する必要がないため,簡単な処理の確認などに非常に便利です. 私はよくnumpyの練習用に使用していました.
しかし,エディタ上とは異なり,視覚的に見づらいです.そこで,iPythonの出番です.
実は,Jupyter notebookの導入時にiPythonというものを導入しました.iPythonはPythonのインタプリタ機能の上位互換のようなものです.
このように,視覚的に見やすくインタプリタ機能を使用できます.
そして,iPythonをブラウザ上で更に使いやすくしたのがJupyter notebookというわけです.
Jupyter notebookを使用するまでもないと感じたらiPythonを使用してみてください.