File size: 5,338 Bytes
05c9ac2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
97
98
99
100
101
102
103
104
105
๏ปฟ# ์„ค์น˜

ML-Agents๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์œ ๋‹ˆํ‹ฐ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๊ณ  ์ด Repository(์ €์žฅ์†Œ)๋ฅผ
Clone(๋ณต์ œ)ํ•˜๊ณ  ์ถ”๊ฐ€์ข…์†์„ฑ์„ ๊ฐ€์ง€๋Š” Python(ํŒŒ์ด์ฌ)์„ ์„ค์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ Subsection(ํ•˜์œ„์„น์…˜)์—์„œ๋Š” Docker(๋„์ปค) ์„ค์ • ์™ธ์—๋„
๊ฐ ๋‹จ๊ณ„๋ฅผ ๊ฐœ๊ด„์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

## **Unity 2018.4** ๋˜๋Š” ์ดํ›„์˜ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

[๋‹ค์šด๋กœ๋“œ](https://store.unity.com/kr/download)ํ•˜๊ณ  ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ๋งŒ์•ฝ ์ €ํฌ์˜ ๋„์ปค ์„ค์ •(์ฐจํ›„์— ์†Œ๊ฐœํ• )์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,
์œ ๋‹ˆํ‹ฐ๋ฅผ ์„ค์น˜ํ•  ๋•Œ, Linux Build Support๋ฅผ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

<p align="center">
  <img src="images/unity_linux_build_support.png"
       alt="Linux Build Support"
       width="500" border="10" />
</p>

## Windows ์‚ฌ์šฉ์ž
Windows์—์„œ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด, [์„ธ๋ถ€ ์‚ฌํ•ญ](Installation-Anaconda-Windows.md)์— ์„ค์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Mac๊ณผ Linux๋Š” ๋‹ค์Œ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•ด์ฃผ์‹ญ์‹œ์˜ค.

## Mac ๋˜๋Š” Unix ์‚ฌ์šฉ์ž

### ML-Agents Toolkit ์ €์žฅ์†Œ ๋ณต์ œ

์œ ๋‹ˆํ‹ฐ ์„ค์น˜ ํ›„์— ML-Agents Toolkit ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

```sh
git clone https://github.com/Unity-Technologies/ml-agents.git
```

`UnitySDK` ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•  ์œ ๋‹ˆํ‹ฐ ์• ์…‹์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์‹œ์ž‘ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ๋งŽ์€ [์˜ˆ์ œ ํ™˜๊ฒฝ](Learning-Environment-Examples.md)๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

`ml-agents` ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ์œ ๋‹ˆํ‹ฐ ํ™˜๊ฒฝ๊ณผ ํ•จ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์‹ฌ์ธต ๊ฐ•ํ™”ํ•™์Šต ํŠธ๋ ˆ์ด๋„ˆ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

`ml-agents-envs` ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” `ml-agents` ํŒจํ‚ค์ง€์— ์ข…์†๋˜๋Š” ์œ ๋‹ˆํ‹ฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ํŒŒ์ด์ฌ API๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

`gym-unity` ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” OpenAI Gym์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

### ํŒŒ์ด์ฌ๊ณผ mlagents ํŒจํ‚ค์ง€ ์„ค์น˜

ML-Agents toolkit์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด [setup.py file](../ml-agents/setup.py)์— ๋‚˜์—ด๋œ ์ข…์†์„ฑ๊ณผ ํ•จ๊ป˜ ํŒŒ์ด์ฌ 3.8์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์š” ์ข…์†์„ฑ์˜ ์ผ๋ถ€๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

- [TensorFlow](Background-TensorFlow.md) (Requires a CPU w/ AVX support)
- [Jupyter](Background-Jupyter.md)

Python 3.8์ด ๋งŒ์•ฝ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, [๋‹ค์šด๋กœ๋“œ](https://www.python.org/downloads/)ํ•˜๊ณ  ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

๋งŒ์•ฝ ๋‹น์‹ ์˜ ํŒŒ์ด์ฌ ํ™˜๊ฒฝ์ด `pip3`์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋‹ค์Œ
[์ง€์‹œ์‚ฌํ•ญ](https://packaging.python.org/guides/installing-using-linux-tools/#installing-pip-setuptools-wheel-with-linux-package-managers)
์„ ๋”ฐ๋ผ์„œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

์ข…์†์„ฑ๊ณผ `mlagents` ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค:

```sh
pip3 install mlagents
```

์ด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด PyPi๋กœ ๋ถ€ํ„ฐ(๋ณต์ œ๋œ ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹Œ) `ml-agents`๊ฐ€ ์„ค์น˜๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋งŒ์•ฝ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜๋ฅผ ์™„๋ฃŒ ํ–ˆ๋‹ค๋ฉด, `mlagents-learn --help` ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์œ ๋‹ˆํ‹ฐ ๋กœ๊ณ ์™€ `mlagents-learn`์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด ๋ผ์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

**์ฃผ์˜:**

- ํ˜„์žฌ Python 3.8 ๋˜๋Š” Python 3.5์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
- ๋งŒ์•ฝ Anaconda๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  TensorFlow์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋‹ค์Œ
  [๋งํฌ](https://www.tensorflow.org/install/pip)์—์„œ Anaconda ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ TensorFlow๋ฅผ ์„ค์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
### ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์„ค์น˜๋ฐฉ๋ฒ•

๋งŒ์•ฝ `ml-agents` ๋˜๋Š” `ml-agents-envs`๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, PyPi๊ฐ€ ์•„๋‹Œ ๋ณต์ œ๋œ ์ €์žฅ์†Œ๋กœ ๋ถ€ํ„ฐ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ์œ„ํ•ด, `ml-agents`์™€ `ml-agents-envs`๋ฅผ ๊ฐ๊ฐ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค:

```sh
cd ml-agents-envs
pip3 install -e ./
cd ..
cd ml-agents
pip3 install -e ./
```

`-e` ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pip๋ฅผ ์‹คํ–‰ ํ•˜๋ฉด ํŒŒ์ด์ฌ ํŒŒ์ผ์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ  `mlagents-learn`๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.
`mlagents` ํŒจํ‚ค์ง€๊ฐ€ `mlagents_envs`์— ์˜์กด์ ์ด๊ณ , ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ ์„ค์น˜ํ•˜๋ฉด PyPi๋กœ ๋ถ€ํ„ฐ `mlagents_envs`๋ฅผ
์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ˆœ์„œ๋Œ€๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

## ๋„์ปค ๊ธฐ๋ฐ˜ ์„ค์น˜

๋งŒ์•ฝ ML-Agents๋ฅผ ์œ„ํ•ด ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, [์ด ๊ฐ€์ด๋“œ](Using-Docker.md)๋ฅผ ๋”ฐ๋ผํ•˜์‹ญ์‹œ์˜ค.

## ๋‹ค์Œ ๋‹จ๊ณ„

[๊ธฐ์ดˆ ๊ฐ€์ด๋“œ](Basic-Guide.md) ํŽ˜์ด์ง€์—๋Š” ์œ ๋‹ˆํ‹ฐ ๋‚ด์—์„œ ML-Agents toolkit์˜ ์„ค์ • ๋ฐ ํ•™์Šต๋œ ๋ชจ๋ธ ์‹คํ–‰,
ํ™˜๊ฒฝ ๊ตฌ์ถ•, ํ•™์Šต ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์งง์€ ํŠœํ† ๋ฆฌ์–ผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

## ๋„์›€๋ง

ML-Agents์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ €ํฌ์˜ [FAQ](FAQ.md)์™€ [์ œ์•ฝ ์‚ฌํ•ญ](Limitations.md) ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.
๋งŒ์•ฝ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋ฉด OS, Pythons ๋ฒ„์ „ ๋ฐ ์ •ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ [์ด์Šˆ ์ œ์ถœ](https://github.com/Unity-Technologies/ml-agents/issues)์„ ํ•ด์ฃผ์‹ญ์‹œ์˜ค.


## ํ•œ๊ธ€ ๋ฒˆ์—ญ

ํ•ด๋‹น ๋ฌธ์„œ์˜ ํ•œ๊ธ€ ๋ฒˆ์—ญ์€ [์žฅํ˜„์ค€ (Hyeonjun Jang)]([https://github.com/janghyeonjun](https://github.com/janghyeonjun))์— ์˜ํ•ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์ƒ ์˜ค๋ฅ˜๋‚˜ ์˜คํƒˆ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ totok682@naver.com ์œผ๋กœ ์—ฐ๋ฝ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.