File size: 5,200 Bytes
ee6e328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!---
Copyright 2021 The HuggingFace Team. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

⚠️ Note that this file is in Markdown but contain specific syntax for our doc-builder (similar to MDX) that may not be
rendered properly in your Markdown viewer.

-->

# μ„±λŠ₯ 및 ν™•μž₯μ„± [[performance-and-scalability]]

점점 더 큰 규λͺ¨μ˜ 트랜슀포머 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜κ³  ν”„λ‘œλ•μ…˜μ— λ°°ν¬ν•˜λŠ” λ°μ—λŠ” λ‹€μ–‘ν•œ 어렀움이 λ”°λ¦…λ‹ˆλ‹€. ν›ˆλ ¨ μ€‘μ—λŠ” λͺ¨λΈμ΄ μ‚¬μš© κ°€λŠ₯ν•œ GPU λ©”λͺ¨λ¦¬λ³΄λ‹€ 더 λ§Žμ€ λ©”λͺ¨λ¦¬λ₯Ό ν•„μš”λ‘œ ν•˜κ±°λ‚˜ ν›ˆλ ¨ 속도가 맀우 느릴 수 있으며, 좔둠을 μœ„ν•΄ 배포할 λ•ŒλŠ” μ œν’ˆ ν™˜κ²½μ—μ„œ μš”κ΅¬λ˜λŠ” μ²˜λ¦¬λŸ‰μœΌλ‘œ 인해 κ³ΌλΆ€ν•˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ„œλŠ” μ΄λŸ¬ν•œ 문제λ₯Ό κ·Ήλ³΅ν•˜κ³  μ‚¬μš© 사둀에 κ°€μž₯ μ ν•©ν•œ 섀정을 찾도둝 도움을 μ£ΌκΈ° μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν›ˆλ ¨κ³Ό μΆ”λ‘ μœΌλ‘œ κ°€μ΄λ“œλ₯Ό λΆ„ν• ν–ˆλŠ”λ°, μ΄λŠ” 각각 λ‹€λ₯Έ λ¬Έμ œμ™€ ν•΄κ²° 방법이 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. 그리고 각 κ°€μ΄λ“œμ—λŠ” λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ ν•˜λ“œμ›¨μ–΄ 섀정에 λŒ€ν•œ λ³„λ„μ˜ κ°€μ΄λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€(예: ν›ˆλ ¨μ„ μœ„ν•œ 단일 GPU vs 닀쀑 GPU λ˜λŠ” 좔둠을 μœ„ν•œ CPU vs GPU).

![perf_overview](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/perf_overview.png)

이 λ¬Έμ„œλŠ” μ‚¬μš©μžμ˜ 상황에 μœ μš©ν•  수 μžˆλŠ” 방법듀에 λŒ€ν•œ κ°œμš” 및 μ‹œμž‘μ  역할을 ν•©λ‹ˆλ‹€.

## ν›ˆλ ¨ [[training]]

효율적인 트랜슀포머 λͺ¨λΈ ν›ˆλ ¨μ—λŠ” GPUλ‚˜ TPU와 같은 가속기가 ν•„μš”ν•©λ‹ˆλ‹€. κ°€μž₯ 일반적인 κ²½μš°λŠ” 단일 GPU만 μ‚¬μš©ν•˜λŠ” κ²½μš°μ§€λ§Œ, 닀쀑 GPU 및 CPU ν›ˆλ ¨μ— λŒ€ν•œ μ„Ήμ…˜λ„ μžˆμŠ΅λ‹ˆλ‹€(곧 더 λ§Žμ€ λ‚΄μš©μ΄ 좔가될 μ˜ˆμ •).

<Tip>

 μ°Έκ³ : 단일 GPU μ„Ήμ…˜μ—μ„œ μ†Œκ°œλœ λŒ€λΆ€λΆ„μ˜ μ „λž΅(예: ν˜Όν•© 정밀도 ν›ˆλ ¨ λ˜λŠ” κ·ΈλΌλ””μ–ΈνŠΈ λˆ„μ )은 일반적인 λͺ¨λΈ ν›ˆλ ¨μ—λ„ μ μš©λ˜λ―€λ‘œ, 닀쀑 GPUλ‚˜ CPU ν›ˆλ ¨κ³Ό 같은 μ„Ήμ…˜μ„ μ‚΄νŽ΄λ³΄κΈ° 전에 κΌ­ μ°Έκ³ ν•˜μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.

</Tip>

### 단일 GPU [[single-gpu]]

단일 GPUμ—μ„œ λŒ€κ·œλͺ¨ λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” 것은 μ–΄λ €μšΈ 수 μžˆμ§€λ§Œ, 이λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” μ—¬λŸ¬ 가지 도ꡬ와 방법이 μžˆμŠ΅λ‹ˆλ‹€. 이 μ„Ήμ…˜μ—μ„œλŠ” ν˜Όν•© 정밀도 ν›ˆλ ¨, κ·ΈλΌλ””μ–ΈνŠΈ λˆ„μ  및 μ²΄ν¬ν¬μΈνŒ…, 효율적인 μ˜΅ν‹°λ§ˆμ΄μ €, 졜적의 배치 크기λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•œ μ „λž΅ 등에 λŒ€ν•΄ λ…Όμ˜ν•©λ‹ˆλ‹€.

[단일 GPU ν›ˆλ ¨ μ„Ήμ…˜μœΌλ‘œ 이동](perf_train_gpu_one)

### 닀쀑 GPU [[multigpu]]

단일 GPUμ—μ„œ ν›ˆλ ¨ν•˜λŠ” 것이 λ„ˆλ¬΄ λŠλ¦¬κ±°λ‚˜ λŒ€κ·œλͺ¨ λͺ¨λΈμ— μ ν•©ν•˜μ§€ μ•Šμ€ κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€. 닀쀑 GPU μ„€μ •μœΌλ‘œ μ „ν™˜ν•˜λŠ” 것은 논리적인 λ‹¨κ³„μ΄μ§€λ§Œ, μ—¬λŸ¬ GPUμ—μ„œ ν•œ λ²ˆμ— ν›ˆλ ¨ν•˜λ €λ©΄ 각 GPUλ§ˆλ‹€ λͺ¨λΈμ˜ 전체 사본을 λ‘˜μ§€, ν˜Ήμ€ λͺ¨λΈ μžμ²΄λ„ μ—¬λŸ¬ GPU에 λΆ„μ‚°ν•˜μ—¬ λ‘˜μ§€ λ“± μƒˆλ‘œμš΄ 결정을 λ‚΄λ €μ•Ό ν•©λ‹ˆλ‹€. 이 μ„Ήμ…˜μ—μ„œλŠ” 데이터, ν…μ„œ 및 νŒŒμ΄ν”„λΌμΈ 병렬화에 λŒ€ν•΄ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.

[닀쀑 GPU ν›ˆλ ¨ μ„Ήμ…˜μœΌλ‘œ 이동](perf_train_gpu_many)

### CPU [[cpu]]


[CPU ν›ˆλ ¨ μ„Ήμ…˜μœΌλ‘œ 이동](perf_train_cpu)


### TPU [[tpu]]

[_곧 제곡될 μ˜ˆμ •_](perf_train_tpu)

### νŠΉμˆ˜ν•œ ν•˜λ“œμ›¨μ–΄ [[specialized-hardware]]

[_곧 제곡될 μ˜ˆμ •_](perf_train_special)

## μΆ”λ‘  [[inference]]

μ œν’ˆ 및 μ„œλΉ„μŠ€ ν™˜κ²½μ—μ„œ λŒ€κ·œλͺ¨ λͺ¨λΈμ„ 효율적으둜 μΆ”λ‘ ν•˜λŠ” 것은 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” κ²ƒλ§ŒνΌ μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄μ–΄μ§€λŠ” μ„Ήμ…˜μ—μ„œλŠ” CPU 및 단일/닀쀑 GPU μ„€μ •μ—μ„œ 좔둠을 μ§„ν–‰ν•˜λŠ” 단계λ₯Ό μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.

### CPU [[cpu]]

[CPU μΆ”λ‘  μ„Ήμ…˜μœΌλ‘œ 이동](perf_infer_cpu)

### 단일 GPU [[single-gpu]]

[단일 GPU μΆ”λ‘  μ„Ήμ…˜μœΌλ‘œ 이동](perf_infer_gpu_one)

### 닀쀑 GPU [[multigpu]]

[닀쀑 GPU μΆ”λ‘  μ„Ήμ…˜μœΌλ‘œ 이동](perf_infer_gpu_many)

### νŠΉμˆ˜ν•œ ν•˜λ“œμ›¨μ–΄ [[specialized-hardware]]

[_곧 제곡될 μ˜ˆμ •_](perf_infer_special)

## ν•˜λ“œμ›¨μ–΄ [[hardware]]

ν•˜λ“œμ›¨μ–΄ μ„Ήμ…˜μ—μ„œλŠ” μžμ‹ λ§Œμ˜ λ”₯λŸ¬λ‹ μž₯λΉ„λ₯Ό ꡬ좕할 λ•Œ μœ μš©ν•œ 팁과 μš”λ Ήμ„ μ‚΄νŽ΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

[ν•˜λ“œμ›¨μ–΄ μ„Ήμ…˜μœΌλ‘œ 이동](perf_hardware)


## κΈ°μ—¬ν•˜κΈ° [[contribute]]

이 λ¬Έμ„œλŠ” μ™„μ„±λ˜μ§€ μ•Šμ€ μƒνƒœμ΄λ©°, μΆ”κ°€ν•΄μ•Ό ν•  λ‚΄μš©μ΄λ‚˜ μˆ˜μ • 사항이 많이 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μΆ”κ°€ν•˜κ±°λ‚˜ μˆ˜μ •ν•  λ‚΄μš©μ΄ 있으면 μ£Όμ €ν•˜μ§€ 말고 PR을 μ—΄μ–΄ μ£Όμ‹œκ±°λ‚˜, μžμ„Έν•œ λ‚΄μš©μ„ λ…Όμ˜ν•˜κΈ° μœ„ν•΄ Issueλ₯Ό μ‹œμž‘ν•΄ μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

Aκ°€ B보닀 μ’‹λ‹€κ³  ν•˜λŠ” κΈ°μ—¬λ₯Ό ν•  λ•ŒλŠ”, μž¬ν˜„ κ°€λŠ₯ν•œ λ²€μΉ˜λ§ˆν¬μ™€/λ˜λŠ” ν•΄λ‹Ή μ •λ³΄μ˜ 좜처 링크λ₯Ό ν¬ν•¨ν•΄μ£Όμ„Έμš”(λ‹Ήμ‹ μœΌλ‘œλΆ€ν„°μ˜ 직접적인 정보가 μ•„λ‹Œ 경우).