4 Thu
[AI ์ค์ฟจ 1๊ธฐ] 9์ฃผ์ฐจ DAY 4
Big Data : Spark MLib ์๊ฐ
Spark MLib
๋จธ์ ๋ฌ๋ ๊ด๋ จ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ, ์ ํธ๋ฆฌํฐ๋ก ๊ตฌ์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Classfication, Regression, Clustering, Collaborative Filtering, Dimensionality, Reduction
์์ง ๋ฅ๋ฌ๋ ์ง์์ ๋ฏธ์ฝ
RDD ๊ธฐ๋ฐ๊ณผ ๋ฐ์ดํฐ ํ๋ ์ ๊ธฐ๋ฐ์ ๋ ๋ฒ์ ์ด ์กด์ฌ
spark.mllib vs spark.ml
mllib๊ฐ RDD ๊ธฐ๋ฐ์ด๊ณ ml์ ๋ฐ์ดํฐ ํ๋ ์ ๊ธฐ๋ฐ
mllib๋ ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ ์ด์ ์ ๋ฐ์ดํธ๊ฐ ์๋จ
๋ฐ๋ผ์ ํญ์ spark.ml์ ์ฌ์ฉํ ๊ฒ!
์ฅ์
์์คํฑ ML ํ๋ ์์ํฌ
๋ฐ์ดํฐํ๋ ์๊ณผ SparkSQL๋ฑ์ ์ด์ฉํด ์ ์ฒ๋ฆฌ
Spark MLlib๋ฅผ ์ด์ฉํด ๋ชจ๋ธ ๋น๋ฉ
ML Pipeline์ ํตํด ๋ชจ๋ธ ๋น๋ฉ ์๋ํ
ML flow๋ก ๋ชจ๋ธ ๊ด๋ฆฌํ๊ณ ์๋น
๋์ฉ๋ ๋ฐ์ดํฐ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ๋ ๊ตณ์ด ์ฌ์ฉํ ํ์๋ ์์
MLflow
๋ชจ๋ธ ๊ฐ๋ฐ๊ณผ ํ ์คํธ์ ๊ด๋ฆฌ์ ์๋น๊น์ง ์ ๊ณตํด์ฃผ๋ ์๋ํฌ์๋ ํ๋ ์ ์ํฌ
ํ์ด์ฌ, ์๋ฐ, R, API๋ฅผ ์ง์
ํธ๋ํน, ๋ชจ๋ธ, ํ๋ก์ ํธ๋ฅผ ์ง์
Spark MLlib ์ ๊ณต ์๊ณ ๋ฆฌ์ฆ
Spark MLlib ๊ธฐ๋ฐ ๋ชจ๋ธ ๋น๋ฉ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
๋ชจ๋ธ ๋น๋ฉ
ํธ๋ ์ด๋์ ์ ์ฒ๋ฆฌ
๋ชจ๋ธ ๋น๋ฉ
๋ชจ๋ธ ๊ฒ์ฆ
Scikit-Learn๊ณผ ๋น๊ตํ์ ๋ ์ฅ์
์ฐจ์ด์ ์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ
ํธ๋ ์ด๋์ ์ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด ์ ์ฒ๋ฆฌ์ ๋ชจ๋ธ ๋น๋ฉ์ ์์ด Spark๊ฐ ํฐ ์ฅ์ ์ ๊ฐ์ง
Spark๋ ML ํ์ดํ๋ผ์ธ์ ํตํด ๋ชจ๋ธ ๊ฐ๋ฐ์ ๋ฐ๋ณต์ ์ฝ๊ฒ ํด์ค
Big Data : Spark MLib ํผ์ณ ๋ณํ
ํผ์ณ ์ถ์ถ๊ณผ ๋ณํ
ํผ์ฒ ๊ฐ๋ค์ ๋ชจ๋ธ ํ๋ จ์ ์ ํฉํ ํํ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ง์นญ
ํฌ๊ฒ Feature Extractor์ Feature Transformer๊ฐ ์กด์ฌ
Feature Transformer
ํผ์ฒ ๊ฐ๋ค์ ์ซ์ ํ๋(์ฌ์ผํจ)
์ซ์ ํ๋ ๊ฐ์ ๋ฒ์ ํ์คํ
๋น์ด์๋ ํ๋๋ค์ ๊ฐ์ ์ด๋ป๊ฒ ์ฑ์ธ์ง ๊ฒฐ์
Feature Extractor
๊ธฐ์กด ํผ์ณ์์ ์๋ก์ด ํผ์ณ๋ฅผ ์ถ์ถ
ex) TF-IDF, Word2Vec
ํผ์ณ ๋ณํ String Indexer
ํผ์ณ ๋ณํ Scaler : ์ซ์ ํ๋๊ฐ์ ๋ฒ์ ํ์คํ
์ซ์ ํ๋ ๊ฐ์ ๋ฒ์๋ฅผ ํน์ ๋ฒ์๋ก ๋ณํ
ํผ์ณ ์ค์ผ์ผ๋ง ํน์ ์ ๊ทํ๋ผ๊ณ ๋ถ๋ฆ
ํผ์ณ ๋ณํ Imputer : ๊ฐ์ด ์๋ ํ๋ ์ฑ์ฐ๊ธฐ
๊ฐ์ด ์กด์ฌํ์ง ์๋ ๋ ์ฝ๋๋ค์ด ์กด์ฌํ์ง ์๋ ํ๋๋ค์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ์ ํด์ ์ฑ์ฐ๋ ๊ฒ
๋ชจ๋ธ ๋น๋ฉ๊ณผ ๊ด๋ จ๋ ํํ ๋ฌธ์ ๋ค
ํธ๋ ์ด๋ ์ ์ ๊ด๋ฆฌ๊ฐ ์๋จ
๋ชจ๋ธ ํ๋ จ ๋ฐฉ๋ฒ์ด ๊ธฐ๋ก์ด ์ ๋จ
๋ชจ๋ธ ํ๋ จ์ ๋ง์ ์๊ฐ ์์
ML Pipeline์ ๋ฑ์ฅ
์์ ์ธ๊ธํ ๋ฌธ์ ๋ค ์ค 2, 3๋ฒ์ ํด๊ฒฐ
์๋ํ๋ฅผ ํตํด ์๋ฌ ์์ง๋ฅผ ์ค์ด๊ณ ๋ฐ๋ณต์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฅํ๊ฒ ํด์ค
Spark MLlib ๊ด๋ จ ๊ฐ๋ ์ ๋ฆฌ
ML ํ์ดํ๋ผ์ธ์ด๋?
๋ฐ์ดํฐ ๊ณผํ์๊ฐ ๋จธ์ ๋ฌ๋ ๊ฐ๋ฐ๊ณผ ํ ์คํธ๋ฅผ ์ฝ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ (๋ฐ์ดํฐ ํ๋ ์ ๊ธฐ๋ฐ)
๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ํํ์ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ๋ฆฌ์ด ๊ฐ๋ฅ
ML ๋ชจ๋ธ๊ฐ๋ฐ๊ณผ ํ ์คํธ๋ฅผ ๋ฐ๋ณต๊ฐ๋ฅํด์ค
4๊ฐ์ ์์๋ก ๊ตฌ์ฑ
DataFrame
Transformer
Estimator
Parameter
DataFrame
ML ํ์ดํ๋ผ์ธ์์๋ ๋ฐ์ดํฐํ๋ ์์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํฌ๋งท
๊ธฐ๋ณธ์ ์ผ๋ก CSV, JSON, Parguet, JDBC๋ฅผ ์ง์
๋ค์ 2๊ฐ์ง์ ์๋ก์ด ๋ฐ์ดํฐ์์ค๋ฅผ ์ง์
์ด๋ฏธ์ง ๋ฐ์ดํฐ์์ค
LIBSVM ๋ฐ์ดํฐ์์ค
Transformer
์ ๋ ฅ ๋ฐ์ดํฐํ๋ ์์ ๋ค๋ฅธ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณํ
2์ข ๋ฅ์ Transformer๊ฐ ์กด์ฌํ๋ฉฐ transform์ด ๋ฉ์ธ ํจ์
Feature Transformer
์ ๋ ฅ ๋ฐ์ดํฐํ๋ ์์ ์ปฌ๋ผ์ผ๋ก๋ถํฐ ์๋ก์ด ์ปฌ๋ผ์ ๋ง๋ค์ด๋ด ์ด๋ฅผ ์ถ๊ฐํ ์๋ก์ด ๋ฐ์ดํฐํ๋ ์์ ์ถ๋ ฅ์ผ๋ก ๋ด์ค. ๋ณดํต ํผ์ณ ์์ง๋์ด๋ง์ ํ๋๋ฐ ์ฌ์ฉ
Learning Model
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํด๋น
Estimator
๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํด๋น. fit์ด ๋ฉ์ธ ํจ์
ํธ๋ ์ด๋์ ๋ฐ์ดํฐํ๋ ์์ ์ ๋ ฅ์ผ๋ก ๋ฐ์์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋ค์ด๋
์๋ฅผ ๋ค์ด LogisticRegression์ Estimator์ด๊ณ LogistricRegression.fit()์ ํธ์ถํ๋ฉด ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋ค์ด๋
ML ํ์ดํ๋ผ์ธ๋ Estimator
Estimator๋ ์ ์ฅ๊ณผ ์ฝ๊ธฐ ํจ์ ์ ๊ณต
Parameter
Transformer์ Estimator์ ๊ณตํต API๋ก ๋ค์ํ ์ธ์๋ฅผ ์ ์ฉํด์ค
๋ ์ข ๋ฅ์ ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌ
Param : ํ๋์ ์ด๋ฆ๊ณผ ๊ฐ
ParamMap : Param ๋ฆฌ์คํธ
ํ๋ผ๋ฏธํฐ์ ์
ํ๋ จ ๋ฐ๋ณต์ ์ง์ ์ ์ํด setMaxIter()๋ฅผ ์ฌ์ฉ
ParamMap(Ir.maxIter -> 10)
ํ๋ผ๋ฏธํฐ๋ fit ํน์ transform์ ์ธ์๋ก ์ง์ ๊ฐ๋ฅ
ML Pipeline
ํ๋ ์ด์์ ํธ๋์คํฌ๋จธ์ ์์คํฐ๋ฉ์ดํฐ๊ฐ ์ฐ๊ฒฐ๋ ๋ชจ๋ธ๋ง ์ํ๋ก์ฐ
์ ๋ ฅ์ ๋ฐ์ดํฐํ๋ ์
์ถ๋ ฅ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ
ML Pipeline ๊ทธ ์์ฒด๋ Estimator
[ํ์ด์ฌ ๋ฅ๋ฌ๋ ํ์ดํ ์น] PART 01 ํ์ดํ ์น ๊ธฐ์ด
01 ํ์ด์ฌ ๋๋ ์๋์ฝํ ์ค์นํ๊ธฐ
ํ์ด์ฌ VS ์๋์ฝ๋ค
์ปดํจํฐ ๊ณตํ์ ์ ๊ณตํ๊ฑฐ๋ ์ํํธ์จ์ด ํด์ ๋ฅ์ํ๊ฒ ๋ค๋ฃฐ ์ ์๋ ์ฌ์ฉ์๋ ํ์ด์ฌ ์ค์น๋ฅผ ๊ถ์ฅ
์ํํธ์จ์ด ํด์ ๋ค๋ฃจ๋ ๋ฐ ๋ฏธ์ํ ์ฌ์ฉ์๋ ์๋์ฝ๋ค ์ค์น๋ฅผ ๊ถ์ฅ. ๋ฐ์ดํฐ ๋ถ์์ ํ์ํ ๋ชจ๋์ด ์๋์ผ๋ก ์ค์น๋๊ธฐ ๋๋ฌธ
02 CUDA, CuDNN ์ค์นํ๊ธฐ
G-FLOPs
GPU FLoating Operations Per Second์ ์ฝ์
์ด๋น ๋ถ๋์์์ ์ฐ์ฐ์ ์๋ฏธํ๋ฉฐ GPU์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ์์
CUDA
GPU๋ฅผ ์ฅ์ฐฉํ๋๋ผ๋ ํ์ด์ฌ์์ ์ด๋ฅผ ์ธ์ํ ์ ์์ด์ผ ํ๋ค.
ํ ์ํ๋ก์ฐ๋ ํ์ดํ ์น ๋ฑ์ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด CUDA๋ฅผ ์ค์นํด์ผ ํ๋ค.
GPU์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ข ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ GPGPU(General-Purpose computing on Graphics Processing Units) ๊ธฐ์
CuDNN
nvidia CUDA Deep Nerual Network Library์ ์ฝ์
๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ํ GPU ๊ฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ์ด ์์์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ฃจํด์ ๋น ๋ฅด๊ฒ ์ดํํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
03 ํ์ดํ ์น ์ค์นํ๊ธฐ
nothing
04 ๋ฐ๋์ ์์์ผ ํ๋ ํ์ดํ ์น ์คํฌ
์ค์นผ๋ผ, ๋ฒกํฐ, ๋งคํธ๋ฆญ์ค, ํ ์
torch.tensor
๋ฅผ ์ด์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ ์ ์๋ค.
+, -, *, / ๋ฅผ ์ด์ฉํด์ ์ง์ ์ ์ธ ์ฌ์น์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ฉฐ
torch.(add/sub/mul/div)
๋ฅผ ์ด์ฉํ ์ฌ์น์ฐ์ฐ๋ ๊ฐ๋ฅํ๋คํ๋ ฌ ์์๊ฐ ๊ณฑ์ด ์๋ ํ๋ ฌ ๊ณฑ์
torch.matmul
๋ก ๊ฐ๋ฅํ๋ค.
Autograd
Autograd ๋ฐฉ์์ ์ด์ฉํด Back Propagation์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
cuda.is_available()
ํ์ฌ ํ์ด์ฌ์ด ์คํ๋๊ณ ์๋ ํ๊ฒฝ์์ torch moudle์ ์ด์ฉํ ๋ GPU๋ฅผ ์ด์ฉํด ๊ณ์ฐํ ์ ์๋์ง๋ฅผ ํ์ ํ๋ ๋ฉ์๋
์ฐธ์ด๋ฉด cuda ์ฅ๋น๋ฅผ, ๊ฑฐ์ง์ด๋ฉด cpu ์ฅ๋น๋ฅผ ์ด์ฉํด ๊ณ์ฐํ๋ค.
BATCH_SIZE
๋ฅ๋ฌ๋ ๋ชจ๋ธ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๊ณ์ฐ๋๋ ๋ฐ์ดํฐ์ ๊ฐ์
Input์ผ๋ก ์ด์ฉ๋๋ ๋ฐ์ดํฐ๊ฐ 64๊ฐ์ด๋ค.
INPUT_SIZE
๋ฅ๋ฌ๋ ๋ชจ๋ธ์์์ Input์ ํฌ๊ธฐ์ด์ ์ ๋ ฅ์ธต์ ๋ ธ๋ ์๋ฅผ ์๋ฏธ.
BATCH_SIZE์ ํผ๋ํ๋ฉด ์๋จ. BATCH๋ ๊ฐฏ์๋ฅผ, INPUT์ ํฌ๊ธฐ๋ฅผ ์๋ฏธ
(64, 1000)์ ํ ์๊ฐ ์ ๋ ฅ๋๊ณ ์ด ๋ ๋ง๋ค ๊ฐ์ค์น ๊ฐฑ์ ์ด ์ผ์ด๋จ
HIDDEN_SIZE
๋ฅ๋ฌ๋ ๋ชจ๋ธ์์ Input์ ๋ค์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํด ๊ณ์ฐํ ๊ฒฐ๊ณผ์ ํ ๋ฒ ๋ ๊ณ์ฐ๋๋ ํ๋ผ๋ฏธํฐ ์๋ฅผ ์๋ฏธ
์ ๋ ฅ์ธต์์ ์๋์ธต์ผ๋ก ์ ๋ฌ๋์ ๋ ์๋์ธต์ ๋ ธ๋ ์๋ฅผ ์๋ฏธ
OUTPUT_SIZE
๋ฅ๋ฌ๋ ๋ชจ๋ธ์์ ์ต์ข ์ผ๋ก ์ถ๋ ฅ๋๋ ๊ฐ์ ๋ฒกํฐ์ ํฌ๊ธฐ๋ฅผ ์๋ฏธ
randn
ํ๊ท ์ด 0, ํ์ฅฐํธ์ฐจ๊ฐ 1์ธ ์ ๊ท๋ถํฌ์์ ์ํ๋งํ ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ์ ์๋ฏธ
reguires_grad
ํ๋ผ๋ฏธํฐ์ ๋ํด์๋ง Gradient๋ฅผ ๊ณ์ฐํ๋ฉด ๋๋ฏ๋ก ๊ฐ์ค์น์ ๋ํด์๋ง True๋ก ์ค์
learning_rate
ํ์ต๋ฅ ์ ์ด๋ป๊ฒ ์ค์ ํ๋๋์ ๋ฐ๋ผ Gradient ๊ฐ์ ๋ฐ๋ฅธ ํ์ต ์ ๋๊ฐ ๊ฒฐ์ ๋๋ค. ๋ฅ๋ฌ๋ ๋ชจ๋ธ์์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ฐ์ดํธํ ๋ ๊ฐ์ฅ ์ค์ํ ํ์ดํผ ํ๋ผ๋ฏธํฐ์ด๊ธฐ๋ ํ๋ค.
y_pred
๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๊ฒฐ๊ด๊ฐ์ ๋ณดํต ์์ธก๊ฐ์ด๋ผ๊ณ ํํํ๋ค.
x์ w1๊ณผ์ ํ๋ ฌ ๊ณฑ ์ฐ์ฐ์ ๋ํด clamp ํจ์๋ฅผ ์ ์ฉํ๊ณ ๋ค์ w2์์ ํ๋ ฌ ๊ณฑ ์ฐ์ฐ์ ํ๋ค.
clamp
์ฌ๊ธฐ์๋ min๋ง ์ ์ ๋์์ผ๋ฏ๋ก ReLU์ ๋์ผํ ์ญํ ์ ํ๋ค.
loss
์์ธก๊ฐ๊ณผ ์ค์ ๋ ์ด๋ธ ๊ฐ์ ๋น๊ตํด ์ค์ฐจ๋ฅผ ๊ณ์ฐํ ๊ฐ์ loss๋ผ๊ณ ํ๋ค. ์ฌ๊ธฐ์๋ ์ ๊ณฑ๊ฐ์ ์ฐจ๋ฅผ ๋น๊ตํ๋ค.
loss.backward()
loss๊ฐ์ ๋ํด backward() ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ ํ๋ฆฌ๋ฏธํฐ ๊ฐ์ ๋ํด Gradient๋ฅผ ๊ณ์ฐํ๊ณ ์ด๋ฅผ ํตํด Back Propagation์ ์งํํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
with_torch.no_gard()
๊ฐ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ํด Gradient๋ฅผ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ฐ์ดํธํ ๋๋ ํด๋น ์์ ์ Gradient ๊ฐ์ ๊ณ ์ ํ ํ ์ ๋ฐ์ดํธ๋ฅผ ์งํํด์ผ ํ๋ค.
w.grad.zero_()
๊ฐ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ค๋ฉด Gradient๋ฅผ ์ด๊ธฐํ ํด์ ๋ค์ ๋ฐ๋ณต๋ฌธ์ ์งํํ ์ ์๋๋ก Gradient๋ฅผ 0์ผ๋ก ์ค์ ํ๋ค.
Last updated
Was this helpful?