메인 플로우는 여기를 따라한다.https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md

참고하여  pytorch3d 개발환경 설치

 

1. cuda(권장) : 11.7 설치
2. 11.7 에 맞는 cudnn lib 설치

3. pytorch 설치 (2.0.1) with cuda 11.7 torch 버전은 크게 영향은 없는듯

4. cub 환경 설치 
cuda\inculde\thrust\cuda\version.h 

에 맨 윗출을 추가해놓는다. (#define THRUST_IGNORE_CUB_VERSION_CHECK true)

 

cuda 11.7 의 경우 cub 11.5 를 포함시켜놓았는데, 이 cub 사용시 pytorch3d 빌드시 문제가된다.

#define THRUST_IGNORE_CUB_VERSION_CHECK true
#ifndef THRUST_IGNORE_CUB_VERSION_CHECK

#include <thrust/version.h>
#if THRUST_VERSION != CUB_VERSION
#error The version of CUB in your include path is not compatible with this release of Thrust. CUB is now included in the CUDA Toolkit, so you no longer need to use your own checkout of CUB. Define THRUST_IGNORE_CUB_VERSION_CHECK to ignore this.
#endif

// Make sure the CUB namespace has been declared using the modern macros:
CUB_NAMESPACE_BEGIN
CUB_NAMESPACE_END

 

5.내장된 cub 11.5 를 11.7로 바꾸는 작업을 할것이다. 

방법은 2가지가 있는데, cuda 설치경로에 cub 11.7 을 덮어씌우는 방법과 cub_home 환경변수 등록후

directory 로 빌드시 포함시키는방법

cub 는 아래서 다운받는다.

https://github.com/NVIDIA/cub/releases

 

Releases · NVIDIA/cub

Cooperative primitives for CUDA C++. Contribute to NVIDIA/cub development by creating an account on GitHub.

github.com

 

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include\cub

로들어가 기존 cub 파일들 빽업시켜놓고 11.7로 바꿔치기 하였다.

 

6.

git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d && pip install -e .

를 이용하여 build 성공!

 

conda 를 이용해서 개발환경 잘 저장해놓자!

 

7. pytorch 3d 를 이용하여 간단한 gif 생성

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 를 해주게되면

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

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

+ Recent posts