# 3. 학습 실행하기

이제 실제로 fine tuning을 실행해 보겠습니다.

# 가속기 Flavor 설정

MoAI Platform에서는 사용자에게 물리 GPU가 노출되지 않습니다. 대신에, PyTorch에서 사용할 수 있는 가상의 MoAI Accelerator를 MoAI Accelerator가 제공됩니다. 가속기의 Flavor를 설정함으로써 실제 물리 GPU를 얼마나 활용할지를 결정할 수 있습니다. 선택한 가속기 Flavor에 따라 총 학습 시간과 GPU 사용 비용이 달라지므로 사용자는 학습 상황을 고려하여 결정해야 합니다. 사용자의 학습 목표에 맞는 가속기 Flavor를 선택하기 위해 LLM Fine-tuning 파라미터 가이드를 참고하세요.

  • AMD MI250 GPU 32개 사용
    • Moreh의 체험판 컨테이너 사용 시: 8xlarge 선택
    • KT Cloud의 Hyperscale AI Computing 사용 시: 8xLarge.4096GB 선택
  • AMD MI210 GPU 64개 사용
  • AMD MI300X GPU 16개 사용

앞서 Llama3 70B Fine-tuning - 시작하기 전에 에서 MoAI Accelerator를 확인했던 것을 기억하시나요? 이제 본격적인 학습 실행을 위해 필요한 가속기를 설정해보겠습니다.

먼저 moreh-smi 명령어를 이용해 현재 사용중인 MoAI Accelerator를 확인합니다.

$ moreh-smi
+---------------------------------------------------------------------------------------------------+
|                                                  Current Version: 24.5.0  Latest Version: 24.5.0  |
+---------------------------------------------------------------------------------------------------+
|  Device  |        Name         |      Model     |  Memory Usage  |  Total Memory  |  Utilization  |
+===================================================================================================+
|  * 0     |   MoAI Accelerator  |  xLarge.512GB  |  -             |  -             |  -            |
+---------------------------------------------------------------------------------------------------+

현재 사용중인 MoAI Accelerator의 메모리 크기는 512GB입니다.

moreh-switch-model툴을 사용하여 현재 시스템에서 사용 가능한 가속기 flavor 리스트를 확인할 수 있습니다. 원활한 모델 학습을 위해 moreh-switch-model 명령어를 이용해 더 큰 메모리의 MoAI Accelerator로 변경할 수 있습니다.

$ moreh-switch-model
Current MoAI Accelerator: xLarge.512GB

1. Small.64GB
2. Medium.128GB
3. Large.256GB
4. xLarge.512GB  *
5. 1.5xLarge.768GB
6. 2xLarge.1024GB
7. 3xLarge.1536GB
8. 4xLarge.2048GB
9. 6xLarge.3072GB
10. 8xLarge.4096GB
11. 12xLarge.6144GB
12. 24xLarge.12288GB
13. 48xLarge.24576GB

여기서 번호를 입력하여 다른 flavor로 전환할 수 있습니다.

이번 튜토리얼에서는 4096GB 크기의 MoAI Accelerator를 이용하겠습니다.

따라서 처음 설정되어 있던 xLarge.512GB flavor를 8xLarge.4096GB 로 전환한 다음 moreh-smi 명령을 사용하여 정상적으로 반영되었는지 확인하겠습니다.

8xLarge.4096GB 사용을 위해 10 을 입력합니다.

Selection (1-13, q, Q): 10
The MoAI Accelerator model is successfully switched to  "8xLarge.4096GB".

1. Small.64GB
2. Medium.128GB
3. Large.256GB
4. xLarge.512GB
5. 1.5xLarge.768GB
6. 2xLarge.1024GB
7. 3xLarge.1536GB
8. 4xLarge.2048GB
9. 6xLarge.3072GB
10. 8xLarge.4096GB  *
11. 12xLarge.6144GB
12. 24xLarge.12288GB
13. 48xLarge.24576GB

Selection (1-13, q, Q): q 

q 를 입력해 변경을 완료합니다.

변경 사항이 잘 반영되었는지 확인하기 위해 다시 moreh-smi 명령어를 이용해 현재 사용중인 MoAI Accelerator를 확인합니다.

$ moreh-smi
23:56:17 April 18, 2024
+-----------------------------------------------------------------------------------------------------+
|                                                    Current Version: 24.5.0  Latest Version: 24.5.0  |
+-----------------------------------------------------------------------------------------------------+
|  Device  |        Name         |       Model      |  Memory Usage  |  Total Memory  |  Utilization  |
+=====================================================================================================+
|  * 0     |   MoAI Accelerator  |  8xLarge.4096GB  |  -             |  -             |  -            |
+-----------------------------------------------------------------------------------------------------+

8xLarge.4096GB 로 잘 변경된 것을 확인할 수 있습니다.

# 학습 실행

주어진 train_llama3_70b.py 스크립트를 실행합니다.

$ cd ~/quickstart
~/quickstart$ python tutorial/train_llama3_70b.py

학습이 정상적으로 진행된다면 다음과 같은 로그가 출력 될 것입니다. 로그를 통해 최적의 병렬화 설정을 찾는 Advanced Parallelism 기능이 정상 동작하는 것을 확인할 수 있습니다. 앞서 살펴 본 PyTorch 스크립트 상에서는 AP 코드 한 줄을 제외한 다른 부분에서 GPU 여러 개를 동시에 사용하기 위한 처리가 전혀 없었음을 참고하십시오.

s
...
[info] Got DBs from backend for auto config.
[info] Requesting resources for MoAI Accelerator from the server...
[info] Initializing the worker daemon for MoAI Accelerator
[info] [1/8] Connecting to resources on the server (192.168.110.17:24169)...
[info] [2/8] Connecting to resources on the server (192.168.110.18:24169)...
[info] [3/8] Connecting to resources on the server (192.168.110.21:24169)...
[info] [4/8] Connecting to resources on the server (192.168.110.52:24169)...
[info] [5/8] Connecting to resources on the server (192.168.110.53:24169)...
[info] [6/8] Connecting to resources on the server (192.168.110.55:24169)...
[info] [7/8] Connecting to resources on the server (192.168.110.85:24169)...
[info] [8/8] Connecting to resources on the server (192.168.110.87:24169)...
[info] Establishing links to the resources...
[info] MoAI Accelerator is ready to use.
[info] Moreh Version: 24.5.0
[info] Moreh Job ID: 977399
[info] The number of candidates is 78.
[info] Parallel Graph Compile start...
[info] Elapsed Time to compile all candidates = 383967 [ms]
[info] Parallel Graph Compile finished.
[info] The number of possible candidates is 13.
[info] SelectBestGraphFromCandidates start...
[info] Elapsed Time to compute cost for survived candidates = 77913 [ms]
[info] SelectBestGraphFromCandidates finished.
[info] Configuration for parallelism is selected.
[info] num_stages : 8, num_micro_batches : 64, batch_per_device : 1, No TP, recomputation : full(2), distribute_param : true, distribute_low_prec_param : false
[info] train: true
| INFO     | __main__:main:154 - [Step 10/560] | Loss: 1.8515625 | Duration: 129.06 | Throughput: 4062.49 tokens/sec
| INFO     | __main__:main:154 - [Step 20/560] | Loss: 1.7890625 | Duration: 129.51 | Throughput: 4048.18 tokens/sec
| INFO     | __main__:main:154 - [Step 30/560] | Loss: 1.5716357 | Duration: 129.79 | Throughput: 4096.08 tokens/sec
| INFO     | __main__:main:154 - [Step 40/560] | Loss: 1.6547084 | Duration: 128.72 | Throughput: 4124.73 tokens/sec
...
Training Done
Saving Model...
Model saved in ./llama3_70b_summarization

훈련 로그를 확인해보면 학습이 정상적으로 이루어지는 것을 확인할 수 있습니다.

학습 도중에 출력되는 throughput은 해당 PyTorch 스크립트를 통해 초당 몇 개의 token을 학습하고 있는지를 의미합니다.

  • AMD MI250 GPU 32개(device 64개) 사용 시: 약 4062 tokens/sec

GPU 종류 및 개수에 따른 대략적인 학습 소요 시간은 다음과 같습니다.

  • AMD MI250 32개(device 64개) 사용 시 : 약 24 시간

# 학습 중에 가속기 상태 확인

학습 도중에 터미널을 하나 더 띄워서 컨테이너에 접속한 후 moreh-smi 명령을 실행하시면 다음과 같이 MoAI Accelerator의 메모리를 점유하며 학습 스크립트가 실행되는 것을 확인하실 수 있습니다. 실행 로그상에서 초기화 과정이 끝나고 Loss가 출력되는 도중에 확인해 보시기 바랍니다.

$ moreh-smi
+-----------------------------------------------------------------------------------------------------+
|                                                    Current Version: 24.5.0  Latest Version: 24.5.0  |
+-----------------------------------------------------------------------------------------------------+
|  Device  |        Name         |       Flavor     |  Memory Usage  |  Total Memory  |  Utilization  |
+=====================================================================================================+
|  * 0     |  MoAI Accelerator   |  8xLarge.2048GB  |  3516969 MiB   |  4193280 MiB   |    100%       |
+-----------------------------------------------------------------------------------------------------+