Altiora Petamus
0. Ubuntu 환경설정 본문
Ubuntu 18.04 LTS에서의 환경 설정
이 페이지에 우분투를 머신러닝을 구현하기에 적합한 환경으로 설정하는 방법을 기록한다.
( PC또는 노트북에 그래픽 카드가 장착되어 있고 우분투를 설치하고 아무것도 하지 않았다는 전제하에 )
우분투는 리눅스 배포판의 한 종류로서 텐서플로우(Tensorflow)등 머신러닝 라이브러리들이 가장 안정적으로 구동되는 환경이다.
언어는 기본적으로 영어로 설정하는 것을 추천한다.
웹에서 복사한 명령어를 입력하는 경우, 대부분 영어로 작성되어 있기 때문이다.
< 사양 >
Ubuntu 18.04 LTS
NVIDIA GeForce RTX 2070
<요약>
Anaconda 설치 -> NVIDIA GPU 드라이버 설치 -> 가상환경 생성 및 환경설정 -> 테스트
1. Anaconda 설치 및 가상환경 구성
Anaconda란 라이브러리들을 쉽게 설치하고 관리할 수 있도록 해주는 도구이다.
가상환경을 생성하여 생성된 각각의 가상환경에 목적성에 따라 필요한 라이브러리들을 설치하여 이용한다.
이해하기 쉽게 설명하자면
가상환경은 하나의 공간이다.
서재에 가면 독서나 공부를 하기에 알맞은 환경이 조성되어 있고 도구들이 비치되어 있다.
침실에 가면 잠을 청하기에 좋은 환경과 가구들이 있다.
부엌또한 마찬가지이다.
목적성에 따라 서로 논리적으로 분리되어 존재하게 된다.
먼저 아나콘다를 설치하기 위해 CTRL + ALT + T 를 눌러 터미널 창을 열어 아래 코드를 입력한다.
$ cd ~/Downloads && wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh && bash Anaconda3-2020.02-Linux-x86_64.sh && exit
Anaconda가 정상적으로 설치되면 아래 코드를 입력하여 NVIDIA GPU 드라이버를 설치한다.(리부팅 되기 때문에 중요정보 저장)
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt-get update -y && sudo apt-get install nvidia-driver-440 -y && sudo reboot
리부팅이 완료되면 아래 코드를 입력했을 경우
$ nvidia-smi
아래 그림과 같은 화면이 출력되는 것을 확인할 수 있을 것이다.
다음으로 아래 코드들을 입력하여 가상환경을 생성하는 동시에 필요한 모든 설치 및 환경설정을 진행한다.
( my_conda는 가상환경 이름으로 해당 부분은 자유롭게 수정하여 입력하도록 한다. )
$ conda create -n my_conda python=3.7 -y && conda activate my_conda //가상환경을 만들고 진입
$ conda install anaconda
$ conda install notebook
$ conda install matplotlib
$ conda install tensorflow-gpu==2.2.0
$ conda install pandas
$ conda install seaborn
$ conda install cmake -y
위와 같이 한번에 입력하지 않고 여러번에 나누어 설치하는 이유는 한번에 명령문을 입력하면 때때로 시간이 매우 오래걸리는 상황이 발생하기 때문이다.
만약 정상적으로 실행되지 않거나 오류가 발생한다면 다음 명령어를 통해 가상환경을 삭제한 후 재구성한다.
$ conda env remove -n my_conda
이제 모든 환경설정이 완료되었다.
간단하게 테스트를 진행해 보자.
먼저 생성한 가상환경에 접근하여 python을 실행시킨 뒤, 아래 두 코드를 복사/붙여넣기 해보자.
1.
[Input]
print('Hello, AIFFEL.')
[Output]
Hello, AIFFEL.
2.
[Input]
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
mnist = keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train_norm, x_test_norm = x_train / 255.0, x_test / 255.0
x_train_reshaped=x_train_norm.reshape( -1, 28, 28, 1)
x_test_reshaped=x_test_norm.reshape( -1, 28, 28, 1)
model=keras.models.Sequential()
model.add(keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(28,28,1)))
model.add(keras.layers.MaxPool2D(2,2))
model.add(keras.layers.Conv2D(32, (3,3), activation='relu'))
model.add(keras.layers.MaxPooling2D((2,2)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(32, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
model.summary()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 모델 훈련
model.fit(x_train_reshaped, y_train, epochs=10)
[Output]
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_2 (Conv2D) (None, 26, 26, 16) 160
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 13, 13, 16) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 11, 11, 32) 4640
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 5, 5, 32) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 800) 0
_________________________________________________________________
dense_2 (Dense) (None, 32) 25632
_________________________________________________________________
dense_3 (Dense) (None, 10) 330
=================================================================
Total params: 30,762
Trainable params: 30,762
Non-trainable params: 0
_________________________________________________________________
Epoch 1/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.1985 - accuracy: 0.9406
Epoch 2/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0610 - accuracy: 0.9812
Epoch 3/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0433 - accuracy: 0.9868
Epoch 4/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0341 - accuracy: 0.9895
Epoch 5/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0269 - accuracy: 0.9915
Epoch 6/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0233 - accuracy: 0.9925
Epoch 7/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0193 - accuracy: 0.9940
Epoch 8/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0164 - accuracy: 0.9944
Epoch 9/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0136 - accuracy: 0.9955
Epoch 10/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.0108 - accuracy: 0.9964
<tensorflow.python.keras.callbacks.History at 0x7fca95e489d0>
Output과 같이 출력이 되었다면 정상적으로 설치가 완료가 된 것이다.
그 외 설치하면 편한 것들
코드를 통한 간단 요약
사양이 다를 경우 부분적으로 변경해야 할 부분들 고려하여 입력
'SSAC X AIffel > FUNDAMENTALS_SSAC' 카테고리의 다른 글
2. GIt 과 Jupyter notebook (0) | 2021.01.07 |
---|