kmu-leeky / cloud-2018

1 stars 0 forks source link

Ernest 실험 결과 정리 #9

Closed kmu-leeky closed 6 years ago

kmu-leeky commented 6 years ago

Ernest 와 비교하는 실험 결과를 여기에다가 정리.

우선 현재 정의된 실험 시나리오에서 우리 알고리즘의 정확도 부터 확인 필요. 그리고, Ernest 의 1,2,3 대 에서 실험한 결과 업데이트 필요.

mjaysonnn commented 6 years ago

Ernest 실험 데이터

python expt_design.py --min-parts 1 --max-parts 3 --total-parts 4 --min-mcs 1  --max-mcs 3 --cores-per-mc 1

1, 1, 0.250000, 1, 1.000000 2, 2, 0.381579, 2, 1.000000 3, 3, 0.644737, 3, 1.000000 2, 2, 0.407895, 2, 1.000000 3, 3, 0.671053, 3, 1.000000 2, 2, 0.434211, 2, 1.000000 3, 3, 0.697368, 3, 1.000000 2, 2, 0.460526, 2, 1.000000 2, 2, 0.750000, 3, 0.699009 1, 1, 0.276316, 2, 0.566072 2, 2, 0.486842, 2, 0.379739

실험했던 Matrix

총 하나의 행렬에 하나의 Overhead에 관하여 11 row http://203.246.113.170:8891/notebooks/Ernest-Experiment/Matrix-to-Experiment.ipynb

실험 데이터 parsing 한 코드

  1. http://203.246.113.170:8891/notebooks/Ernest-Experiment/ErnestMatrixSizeEstimation.ipynb
  2. http://203.246.113.170:8891/notebooks/Ernest-Experiment/Machine-1/Machine-1-Extraction.ipynb

실험 데이터 폴더

http://203.246.113.170:8891/tree/Ernest-Experiment

Element-Based Overhead

128-8000000-128

1,0.25,11116.0 1,0.276316,17016.0 2,0.75,31823.0 2,0.381579,11028.0 2,0.407895,15308.0 2,0.434211,12626.0 2,0.460526,17140.0 2,0.486842,18186.0 3,0.644737,22088.0 3,0.671053,24677.0 3,0.697368,24774.0

32000-32000-32000

1,0.25,89837.0 1,0.276316,157477.0 2,0.381579,111640.0 2,0.407895,124194.0 2,0.434211,139099.0 2,0.460526,148117.0 2,0.486842,155933.0 2,0.75,359601.0 3,0.644737,224701.0 3,0.671053,234737.0 3,0.697368,246927.0

60000-128-60000

3,0.644737,43417.0 3,0.671053,147824.0 3,0.697368,81282.0 2,0.381579,75474.0 2,0.407895,12118.0 2,0.434211,9682.0 2,0.460526,16984.0 2,0.486842,13626.0 2,0.75,292060.0 1,0.25,21420.0 1,0.276316,31289.0

Compute-Based Overhead - 데이터중 Java Heap Space랑 Too Large to allocate 오류로 인해 안되는 데이터도 있었습니다.

128-8000000-128

1,0.25,17032.0 1,0.276316,22727.0 2,0.486842,nan 2,0.75,0.0 2,0.381579,20232.0 2,0.407895,0.0 2,0.434211,nan 2,0.460526,nan 3,0.644737,25760.0 3,0.671053,26991.0 3,0.697368,27432.0

32000-32000-32000

2,0.381579,nan 2,0.407895,0.0 2,0.434211,208198.0 2,0.460526,0.0 2,0.486842,0.0 2,0.75,nan 1,0.25,171619.0 1,0.276316,277096.0 3,0.644737,275488.0 3,0.671053,280991.0 3,0.697368,nan

60000-128-60000

1,0.25,219236.0 1,0.276316,106202.0 2,0.381579,14571.0 2,0.407895,38383.0 2,0.434211,15750.0 2,0.460526,32689.5 2,0.486842,20449.0 2,0.75,166849.0 3,0.644737,202629.0 3,0.671053,214622.0 3,0.697368,294683.0

특징

Machine 1에서는 shuffle이 0임

mjaysonnn commented 6 years ago

Predict 하기 from Ernest

코드

http://203.246.113.170:8891/notebooks/Ernest-Experiment/ernest-predictor-mj.ipynb

Matrix Element-Based one Compute-Based
128-8000000-128 25640.6822592 31189.1540368
32000-32000-32000 252860.87974 331111.076422
60000-128-60000 93223.7341235 197936.679818

실측값

128-8000000-128 -> 28753

32000-32000-32000 -> 182945.5

60000-128-60000 -> 105528.0

mjaysonnn commented 6 years ago
Matrix Ernest(Element-Based one) Ernest(Compute-Based) 실측값 MPC
128-8000000-128 25640.6822592 31189.1540368 28753 26380.9616163
32000-32000-32000 252860.87974 331111.076422 182945.5 171120.596481
60000-128-60000 93223.7341235 197936.679818 105528.0 244863.332593

MPC >>> Element-Based >>>> Compute-Based

60000-128-60000 Latency가 다른 데이터랑 비교하면 많이 높아서 다시 지금 실험 돌려보겠습니다.

실측값에서 중복이 있었습니다

이거 수정하고 다시 다 업데이트 해보겠습니다.

image

50000-128-50000 이랑 비교하면 reasonable 한 데이터이긴하네요

lc 128이고 lr 이랑 rc가 비슷한것끼리 모아놓은 데이터

image

mjaysonnn commented 6 years ago

몇 개 데이터 수정후 다시 업데이트

Matrix Ernest(Element-Based one) Ernest(Compute-Based) 실측값 MPC
128-8000000-128 25640.6822592 31189.1540368 28753 26380.9616163-> 24747.5976612
60000-128-60000 93223.7341235 197936.679818 105528.0-> 147237.0 244863.332593-> 225218.393728
32000-32000-32000 252860.87974 331111.076422 182945.5 171120.596481->172065.658315
kmu-leeky commented 6 years ago

OK. 굉장히 잘 정리했다. 실험 자료도 좋고, 결과도 (60000-128-60000) 빼고는 다 좋다. 다른 pair 를 한번 찾아볼께. 공정하지 않을수 있지만 MPC 의 정확도가 조금 더 높은 사이즈로;;;;

mjaysonnn commented 6 years ago

넵 저도 그러고 싶긴했습니다 ㅎ ㅎ 한번 찾아보겠습니다~~

2018년 2월 7일 (수) 오전 5:01, Kyungyong Lee notifications@github.com님이 작성:

OK. 굉장히 잘 정리했다. 실험 자료도 좋고, 결과도 (60000-128-60000) 빼고는 다 좋다. 다른 pair 를 한번 찾아볼께. 공정하지 않을수 있지만 MPC 의 정확도가 조금 더 높은 사이즈로;;;;

— You are receiving this because you were assigned.

Reply to this email directly, view it on GitHub https://github.com/kmu-leeky/cloud-2018/issues/9#issuecomment-363547254, or mute the thread https://github.com/notifications/unsubscribe-auth/ANgUUXk9bQK2VetMZcwt0_M2lpQN3c_Hks5tSK-ygaJpZM4R6BUJ .

--

mjaysonnn commented 6 years ago

일단 교수님 정확도 좋은거는 40k 입니다.

Matrix is 40000-128-40000 Predicted 15083.1552553 Measured 14954.0

lc가 128이고 양쪽이 같은 경우의 행렬 고찰

(30k는 30k-128-30k 를 뜻합니다.)

latency 변화

30k 가 8675

40k 가 14954 -> 1.7배가 되버림 w.r.t 1.333333333배

50k 29708 -> 2배가 되버림 w.r.t 1.25배

60k 147237 -> 5배로 넘어감 w.r.t 1.2배

그러다보니 50k 의 Predicted 값도 좋지가 않네요

Matrix is 50000-128-50000 Predicted 76897.6857746 Measured 29708.0

40k 50k 60k 사이에 41k 42k 43k 이렇게 중간 데이터를 끼워 놓아서 예측을 잘 해주는 것도 방법일꺼같네요

일단 40k 로 시작하겠습니다.

mjaysonnn commented 6 years ago

40000- 128 - 40000 로 해야할 ernest 실험

Machine 1 run_matmul 1 20000 64 20000 1 1 1 1

run_matmul 1 25198 80 25198 1 1 1 1

run_matmul 1 21026 67 21026 2 1 1 2

run_matmul 1 26053 83 26053 2 1 1 2

Machine 2

run_matmul 1 24708 79 24708 2 1 1 2

run_matmul 1 29012 92 29012 2 1 1 2

run_matmul 1 25546 81 25546 2 1 1 2

run_matmul 1 29664 94 29664 2 1 1 2

run_matmul 1 26357 84 26357 2 1 1 2

run_matmul 1 30289 96 30289 2 1 1 2

run_matmul 1 27144 86 27144 2 1 1 2

run_matmul 1 30889 98 30889 2 1 1 2

run_matmul 1 34641 110 34641 3 1 1 3

run_matmul 1 36342 116 36342 3 1 1 3

run_matmul 1 27909 89 27909 2 1 1 2

run_matmul 1 31467 100 31467 2 1 1 2

Machine 3

run_matmul 1 32118 102 32118 3 1 1 3

run_matmul 1 34555 110 34555 3 1 1 3

run_matmul 1 32767 104 32767 3 1 1 3

run_matmul 1 35019 112 35019 3 1 1 3

run_matmul 1 33403 106 33403 3 1 1 3

run_matmul 1 35471 113 35471 3 1 1 3

mjaysonnn commented 6 years ago
Matrix Ernest(Element-Based one) Ernest(Compute-Based) 실측값 MPC
128-8000000-128 25640.6822592 31189.1540368 28753 26380.9616163-> 24747.5976612
40000-128-40000 12766.1208518 14781.6691177 14954.0 15083.1552553
32000-32000-32000 252860.87974 331111.076422 182945.5 171120.596481->172065.658315

완료했습니다

Feedback 받고 그림도 만들어보겠습니다.

mjaysonnn commented 6 years ago

MPC -> DMPC(?) 적당한 용어가 잘 생각이 안나네요. MPC도 괜찮아보입니다. DMPC (Matrix Multiplication Performance Predictor for Cloud Computing) 이게 최선이네요 전 ㅎㅎ Double M 2개 P 2개 C 2개

kmu-leeky commented 6 years ago

오케이. 숫자 보기에 좋다. Ernest 도 꽤나 좋아보여서 크게 unfair 해보이지않는다 ㅎㅎ 굿잡. 그나저나 Ernest 가 꽤나 정확하네. 튜닝을 전혀 안해도 이정도로 비슷하게 나오다니;;;

kmu-leeky commented 6 years ago

D-MPC 도 괜찮겠는데. Distributed , Double 모두 중의 적인 표현이 될것 같기도 하고 ㅎㅎ. 아니면 뭔가 중간에 모음을 넣어서 발음하기 쉽게 해볼까? 생각안나면 그냥 지금걸로 하고

mjaysonnn commented 6 years ago

옙 생각해볼게요.

Ernest 되게 신기하네요. 실험하면서 저게 되나 싶었거든요 ㅎ ㅎ

Experiment Design코드에서 쓰이는

Python-embedded modeling language for convex optimization problems

 import cvxpy as cvx

저 package가 중요한 역할을 한 느낌입니다. 저걸로 실험 해야할 데이터를 만들어주는 데 얼추 맞는게 신기합니다.

Ernest 그래도 Matrix Multiplication에 대해서는 되어있지 않고 저 Element-Based 랑 Compute-Based 도 교수님이 idea이니 그런 얘기를 하면 되지않을까 생각합니다.

mjaysonnn commented 6 years ago

이제 Measured / Predicted 가지고 그래프 그리기

kmu-leeky commented 6 years ago

응 맞아. 논문에 공간이 있으면 Ernest 에서 우리가 작업한 부분도 간단히 언급할려고. 좋은 부분을 얘기한게 Experiment Design 을 잘해서 Ernest 정확도가 높은것 같고, 이 부분은 우리 에게도 적용 가능할거야. 지금 처럼 모든 행렬 사이즈를 하는게 아니라 중간에 일부만 몇개 하면 훨씬 작은 양의 실험으로 비슷한 결과를 낼 수 있을듯. 이건 다음 확장판에서 작업하자.

mjaysonnn commented 6 years ago

넵 알겠습니다~

그리고 MPEC -> Matrix multiplication performance estimator on cloud computing 이런 것도 생각났습니다.

D-MPEC? ㅎㅎ MPEC

mjaysonnn commented 6 years ago

그림 업데이트 했습니다.

http://203.246.113.170:8891/notebooks/Figures/Compare-Ernest-MPC.ipynb

image

kmu-leeky commented 6 years ago

오케이. 우선 그림 관련해서. Measured 가 true 값인 만큼 제일 앞으로 와야 할것 같고.다음으로 MPC, Ernest 2개가 좋을것 같아. 각 매트릭스 사이즈마다 값의 절대 크기가 많이 다른 만큼 normalize 하고 (실측값 기준) 실측값을 바위에 보여주는것도 좋을것 같아. Measured 랑 MPC 는 약간 눈에 띄는 표시를 해주면 좋을것 같아. 5000K 는 5M (million) 으로 해주고.

mjaysonnn commented 6 years ago

업데이트 해봤습니다

코드 - http://203.246.113.170:8891/notebooks/Figures/Ernset-Final.ipynb

image

kmu-leeky commented 6 years ago

오케이 그림 잘 정리했네. 그나저나 이렇게 보니 128 ~ 모드에서 MPC 가 더 성능이 안좋네... 다른 자료도 많이 고려해봤을것 같은데.. 다른 값들은 어땠어?

mjaysonnn commented 6 years ago

아아 오류가 있었네요 .. Predicted/Measured 그래프랑 헷갈렸네요.

24000에서 다시 latency.csv 데이터 업데이트로 인해 26226.4985557 으로 바뀌었습니다.

교수님 그나저나 제가 전에

image

여기서 문제가 제가 각각 다른 instance 끼리의 Predicted/Measured 비교하다보니 몇개 데이터를 업데이트 했거든요

그래서

40k-128-40k 의 Predicted 값이 15083.1552553 -> 12615로 조금 줄어들었네요.

확실히 lc가 128인 행렬들이 예측이 힘듭니다.. 어떢하죠 2가지 방법이 있습니다.

  1. ernest - compute based로 한 csv 를 조작..?

  2. 저것도 2,3,초 차이니 그냥 15083.1552553 그대로 사용하기. (혹시 코드 공개할때 문제가 될수도있을수도 있을꺼같네요.. 물론 2초 차이지만 ㅎㅎ).

image

kmu-leeky commented 6 years ago

아.. 만약에 MPC 가 128 이 되면 굉장히 낮아져버리는구나. 1, 2번 모두 꺼름직 하네.. 그럼 결과값들이 다들 변한것 같은데 혹시 이전에 60K 의 결과값도 변하지 않았을까? Ernest 결과값은 그대로 있을테니.. 혹시라도 그대로 사용하거나 할 수 있지 않을까 해서..

mjaysonnn commented 6 years ago

옙 한번 봐보겠습니다~

mjaysonnn commented 6 years ago

40k -128 -40 k Predicted 값이 조금 올라갔습니다.

Matrix is 40000-128-40000 Predicted 13050.7060579 Measured 14954.0

Matrix is 50000-128-50000 Predicted 52008.5003696 Measured 29708.0

Matrix is 60000-128-60000 Predicted 209597.667274 Measured 147237.0

빠르게 128 행렬 한번 더 돌려볼 생각입니다.

mjaysonnn commented 6 years ago

교수님 시험삼아

10000 128 10000 15000 128 15000 20000 128 20000 25000 128 25000 30000 128 30000 35000 128 35000 40000 128 40000 45000 128 45000 50000 128 50000 60000 128 60000

이렇게 5번 돌리고 나온 median 값을 대입해봤습니다

GBM의 r2-score은 조금 더 상승하였습니다

그리고 60k - 128 - 60k 가 얼추 맞습니다.

Matrix Ernest(Element-Based one) Ernest(Compute-Based) 실측값 MPC
128-8000000-128 25640.6822592 31189.1540368 28753 25256.078341
60000-128-60000 93223.7341235 197936.679818 286653.0 251091.515699
32000-32000-32000 252860.87974 331111.076422 182945.5 170959.56548

그래프로 나타내보자면

image

60k 128 60k 는 단점이 그래도 40초 차이라서 별로일수도 있다고 생각합니다.

40k 128 40k는

Matrix Ernest(Element-Based one) Ernest(Compute-Based) 실측값 MPC
128-8000000-128 25640.6822592 31189.1540368 28753 25256.078341
40000-128-40000 12766.1208518 14781.6691177 15818.0 14662.2127502

image

mjaysonnn commented 6 years ago

오차를 줄이기 위해서 128-8M-128 실험을 해보고 데이터를 업데이트 하고 난 결과

Matrix Ernest(Element-Based one) Ernest(Compute-Based) 실측값 MPC
128-8000000-128 25640.6822592 31189.1540368 28753->25573.0 25256.078341->24864.1953065
40000-128-40000 12766.1208518 14781.6691177 15818.0 16168.1190967
60000-128-60000 93223.7341235 197936.679818 286653.0 251091.515699-> 247916.397425
32000-32000-32000 252860.87974 331111.076422 182945.5 170959.56548-> 170544.848864

128- 8M-128 경우 MPC랑 Ernest차이가 많이 좁아지긴했습니다.

한번 128 1M ~ 8M 128 실험 돌려보겠습니다.

kmu-leeky commented 6 years ago

오케이 분석 잘했다. 우선 128 8M 128 의 경우 Ernest 가 정확해보이기는 하지만 모두들 잘 에측하고 있어서 (MPC 의 경우도 800 msec 정도 에러), 잘 이야기 할 수 있을것 같아. 다음으로 40K 를 할지 60K 를 할지 인것 같은데, 내 생각에는 비록 60K 가 약간 에러율이 크기는 하지만 (MPC 의 경우 286 - 251), 에러율을 보면 그래도 13% 정도 될것 같고.. 그렇게 생각하면 막 나쁘지도 않고, 아웃풋 사이즈도 더 크고, Ernest 도 훨씬 안좋기에 설명을 하기가 더 편할것 같아. 예를 들어 현재 Ernest 는 결과 행렬의 크기를 명시적으로 고려하지 않기에 부정확 하다는 식으로 얘기하면 가능할것 같아.

내 의견은 지금 있는 자료로 128 ~ 32K ~ 60K ~ 조합이 괜찮아 보이는것 같아.

mjaysonnn commented 6 years ago

옙 60k가 좋아보입니다!

128 8M 128 경우 MPC를 젤 높게 맞춰볼려고 이것저것 다 시도해봤는데 잘 안되네요.

128 1000000 128 부터 128 8000000 128 까지 실험 다시 돌려봤지만 더욱 더 좋아지지는 않았습니다.

이 데이터 기반으로 그림 만들겠습니다~

kmu-leeky commented 6 years ago

오케이!

mjaysonnn commented 6 years ago

image

행 이름등을 소문자로 바꿔보았습니다 http://203.246.113.170:8891/notebooks/Figures/Ernset-Final-Final-1.3.ipynb

kmu-leeky commented 6 years ago

실험 결과는 좋아보인다. 이걸로 사용하면 되겠다 ㅎㅎ legend wording 이나 바 마커, 폰트 사이즈등만 약간 손보면 되겠다. 고생했어~

mjaysonnn commented 6 years ago

넵 낼 뵙겠습니다!

mjaysonnn commented 6 years ago

논문 직접 보면서 그림 수정하겠습니다.