ML 환경을 구축 하기 위해서는 

python 개발 환경과 jupyter (anaconda)

tensorflow 설치와 gpu lib 설치 (cuda + cudnn) 등의 구축이 필요하다

또한 그것을 돌리기 위한 gpu 와 linux 서버 또는 window 개발 환경이 필요한데,

 

나는 근무환경상 데스크탑 구입이 어려워, 노트북 + egpu 환경으로 구성하였다.

 

많은 글들을 찾아보아야 했지만 정확히 어떤식으로 환경을 구성하면 된다! 라는 명확한 답이 없었다.

 나의 목표는 구매 되는 비용을 최소화 + 노트북 환경으로 구축

 

1. egpu 환경을 구축 하기 위해서는 노트북의 썬더볼트 지원 이 중요 했고 아래 리스트에서 노트북을 고를 필요가있다.

 

https://www.ultrabookreview.com/10579-laptops-thunderbolt-3/

 

The complete list of portable laptops with a Thunderbolt 3 port

We've seen Thunderbolt ports on enthusiast computers for a while now, but these days Thunderbolt is becoming the port everyone wants on a new laptop,

www.ultrabookreview.com

이때 같은 thunderbolt3 의 경우에도 2 lane 과 4 lane 의 bandwidth 차이로 인하여 1.5배정도 성능차이가 나오게되고

이것은 고유 gpu 의 성능을 다끌어 오지 못하는 것을 의미한다.

 

데스크탑(노트북) + 직접연결된 gpu 6042.68 mib/s >> 4-lane tb3 2431.87 mib/s  > 2-lane tb3  1597.91 mib/s

으로 성능 차이가 나온다.

나의경우에는 thunder bolt3 4lane 슬롯 2개를 지원하는 lennova yoga 730 모델을 선택 하였다.

 

2. egpu 를 구성하기 위해서는 gpu 를 담고 power 를 공급하는 egpu box 가 필요했다.

https://egpu.io/external-gpu-buyers-guide-2019/

 

Best eGPU Enclosures Reviewed - External GPU Buyer's Guide 2019

Find the best eGPU enclosures using our daily updated Buyer's Guide. We provide hands-on unboxing and in-depth review of the top external GPU enclosures.

egpu.io

여기에서 각각 지원하는 gpu 모델등과 성능 등이 있는데 . 모두 직접 수입해야 되는 리스크가 있었다.

 

이 중에 한성컴퓨터에서 수입 해주는 akito node pro model AS 측면에서 유리할 것 같아, 이 모델로 구입을 하였다.

각 gpu box 별로 지원하는 gpu 들은 제조사 홈페이지에 정확 히 명시 되어있다.

 

egpu 를 썼을 때 좋은 점은 gpu- box 에서 지원 하는 리스트로 gpu 모델을 계속 업그레이드 할 수 있다는점

단점은 장기적으로 호환성이 떨어 질 수 있으며, 직접연결보다 성능이  저하 될 수 있다는 점이다.

그밖에 휴대성이나 

 

대략 egpu box - 40만원 yoga730 - 100만원 중고 gtx 1060(6GB) -15만원 정도 비용이 소모되었다.

 

3.  그래픽 Nvida 드라이버와 cuda / cudnn 라이브러리 설치 삽질기

cuda + cudnn 의 환경을 설치하는 사람이 전세계적으로 몇십만명은 될텐데

미묘한 버그가있다.

물론 window10 에서 개발하기떄문에 생기는 문제이지만..

 

tensorflow 1.13 의 경우 cuda 10.0 과 cudnn 7.5 으로  맞춰주지 않으면 no lib 에러가난다.

tensorflow 1.12 의 경우 cuda 9.0 과 cudnn 7.5 로 맞춰주지 않으면 호환이 안된다.

 

공식홈페이지의 경우 어떤 버전을 설치해도 지원이 된다는 식으로 나와있는데.

실제 설치해보면 라이브러리를 못불러오는 세새한 문제가 있다.

 

 이러한 문제들은 버전 업되면서 해결될 것으로 보이지만, 개발 되는 버전에 따라서 호환성에 문제가 있는듯 하다.

'Machine.Learning' 카테고리의 다른 글

rtx 3080 - ubuntu 20.04 개발환경 설치기  (0) 2021.01.22
머신러닝 족보 ! scikit learn algorithm cheat sheet  (0) 2019.09.04
machine Learning Automation  (0) 2019.04.08
fast cnns (yolo, R-CNN, SSD)  (0) 2019.02.12
tensorframes  (0) 2018.11.20

machine learning automation

General Machine Learning Flow

1. Data ingestion

2.ETL > EDA

3.Supervised Learning > EDA

4.Feature Engineering > EDA

5.model building (model ingest)

6.model traing with a scale

7.model tuning

8.evaluation (testing)

총 8가지 정도의 단계로 ML 단계를 나누어 보았다.

이 8가지 단계에 대해서 모든 것을 항상 그때 그때 코딩 해주어야 할까?

라는 관점에서 자동화 될 수 있는 것은 무엇이 있을까 라고 스스로 정리 해보았다.

생각해보면 각 단계마다 라이브러리가 존재하고, 각 단계에서 최대한 자동화를 해주어서,

실제 머신러닝에서 중요한 4/5 번에 집중 할 수 있도록 도움을 줄 수 있지 않을까

  1. Data ingestion

MQ / DB Connector 등을 통한 data get

  1. ETL > EDA

 Train / Test set 분리

-padding

-drop out

-liminate outlier

-n-fold data seperate

-random noise data generating

-범주형/수치형 변수 분리

-Embedding

-nomarlization

일반적인 방법

RankGauss

-위 과정을 포함/배제 한 EDA

3.Supervised Learning > EDA

-kmeans

-knn

-Auto Encoding

-Hierachical Clustering

-DB scan

-..etc 위과정을 포함 한 EDA

4.Feature Engineering > EDA

**Feature Selection**

-Correlation / AutoCorrelation

**Feature Etraction**

-PCA

-t-sne

-nMF

**Feature adding**

-Target Enconding

-lag data

-Feature combine (파생변수 생성)

5.model building (model ingest)

-기존 학습 모델 가져오기

-새로운 모델 정의하기

-Framework 설정 (모델 설정)

-layer/loss function / Optimizer / Regularziation

6.model traing with a scale

-horonvod

-kuberflow

-자체적인 Multi GPU 학습 (PyTorch,,)

7.model tuning

학습에서 중요한 부분이라 이미 어느정도 자동화가 진행 되어있음

-hyperParameter

-Optimizer

-regularization factor

-drop out factor

-Ensemble model

8.evaluation (testing)

-MAP7

-AB test

-F1 score

-FOC

붉은 색글씨 에 역할을 하는 부분들은 어느정도

form 을 맞추어서 자동화를 진행 해줄 수 있을 것 같다.

특히 2,3,4번을 자동화 해서 EDA 를 해주게되면

머신러닝 모델링을 하는사람은 모델링과 학습률만 생각하여 작업 하면된다.

이 단계들도 모두 서비스전에 자동화 되면 좋지 않을까?

Cnns in image segmentation (yolo, R-CNN, SSD)

최종 목적은 단순한 이미지 분류 를 넘어서 실시간 영상에서 물체를 감지하고, 실시간 영역에서 어떤 물체인지 까지 분류 하려고 한다.
이미지 인식 분야에서 cnn 중에도 fast cnn 들에 대한 동향 리뷰를 한다.
가장 고전적인 R-CNN 은 Region Proposals(ex 색칠) 등의 알고리즘을 통해 영역을 나눠서 cnn 을 개별적으로 돌리는 방식
 전체를 합쳐서 Roi(region of interests 방식 으로 폴링하는 fast-rcnn ,box sliding 방식의 faster r-cnn 등이 있다.

이 R-CNN 에서의 단점은 일단 Region Proposal 방식으로 영역을 나누고 CNN 을 돌리거나 box sliding 등의 방식을 거치는 과정중에서 
시간이 많이 소요된다는 점,

이 단점을 보완하기위해서 일련의 과정을 통합한 1개의 네트워크 학습방식 (single shot Detecor) 을 사용하게된다.

대표적인 것이 yolo 와 multibox detector

yolo 는 googlenet 네트워크를 응용( 심화 ?) 한것 인데 
input image - box 를 데이타로 활용하여, labeling 한뒤 

학습된 이미지를 7x7 boundary box 로 나누고 각자 confidence score 과 P ( class | object) 가 학습되도록 네트워크를 설계하였다.
그 방식에 대하여 대략적으로는 이해가 가지만, 네트워크 구성에 대해서 좀 더 정확히 알기 위해서는 소스를 까봐야 될듯 하다.


R-CNN

- basic model

-region proposal

-bounding box

[-selective search](http://www.cs.cornell.edu/courses/cs7670/2014sp/slides/VisionSeminar14.pdf)

Fast R-CNN

-sum up the regions and total CNN

-Region of Interest Pooling(RoIPool)

Faster R-CNN

-scoring with anchor boxes (1:1 / 1:2 / 2:1 ..etc)

YOLO(You only Look Once)

-confidence score : 0 if no object

​ equal to iou if there is object

-improve of googlanet

SSD - CNN Single Shot Detector

!img

-improve of VGG16

-variety of feature map size

PERFORMANCE TESTS

REFERENCE

https://blog.athelas.com/a-brief-history-of-cnns-in-image-segmentation-from-r-cnn-to-mask-r-cnn-34ea83205de4

https://cv-tricks.com/object-detection/faster-r-cnn-yolo-ssd/

yolo paper : https://pjreddie.com/media/files/papers/yolo.pdf

ssd paper : https://arxiv.org/pdf/1512.02325.pdf

+ Recent posts