Pytorch와 miniconda 환경 설정 » 이력 » 버전 1

Jinwuk Admin, 2024/01/29 15:05

1 1 Jinwuk Admin
h1. Pytorch와 miniconda 환경 설정
2 1 Jinwuk Admin
3 1 Jinwuk Admin
h1(#python-requirement.txt-활용법). 2023-07-17 Python Requirement.txt 활용법
4 1 Jinwuk Admin
5 1 Jinwuk Admin
[toc]
6 1 Jinwuk Admin
7 1 Jinwuk Admin
Anaconda 환경에서 Python의 Requirement.txt 활용법을 Check 한다. 현재 Main PC에서의 NIPS2023_WORK 을 위한 Anaconda 환경 이름은 *py3.11.0* 이다.
8 1 Jinwuk Admin
9 1 Jinwuk Admin
h2(#requirements.txt-만들기). Requirements.txt 만들기
10 1 Jinwuk Admin
11 1 Jinwuk Admin
다음 세가지 방법이 있다
12 1 Jinwuk Admin
13 1 Jinwuk Admin
bc. pip freeze > requirements.txt
14 1 Jinwuk Admin
pip3 freeze > requirements.txt
15 1 Jinwuk Admin
conda list -e > requirements.txt
16 1 Jinwuk Admin
17 1 Jinwuk Admin
18 1 Jinwuk Admin
이 중에서 ~~~ conda list -e > requirements.txt ~~~ 를 사용한다.
19 1 Jinwuk Admin
20 1 Jinwuk Admin
h3(#anaconda-환경을-사용하기). Anaconda 환경을 사용하기
21 1 Jinwuk Admin
22 1 Jinwuk Admin
그런데, 본 환경은 일부 PIP를 사용하여 설치되었기 때문에 이러한 방법으로는 제대로 install이 되지 않을 수 있다. 그러므로 다음과 같이 yaml 파일로 정리된 Environment 환경을 사용할 수 있다.
23 1 Jinwuk Admin
24 1 Jinwuk Admin
bc. conda env export > environment.yml
25 1 Jinwuk Admin
26 1 Jinwuk Admin
27 1 Jinwuk Admin
h3(#실제-환경-설치). 실제 환경 설치
28 1 Jinwuk Admin
29 1 Jinwuk Admin
실제로는 이렇게 되지 않을 수 있다. 따라서, 다음의 Package를 체크하였다.
30 1 Jinwuk Admin
31 1 Jinwuk Admin
<table>
32 1 Jinwuk Admin
<col width="19%" />
33 1 Jinwuk Admin
<col width="23%" />
34 1 Jinwuk Admin
<col width="13%" />
35 1 Jinwuk Admin
<col width="18%" />
36 1 Jinwuk Admin
<col width="25%" />
37 1 Jinwuk Admin
<thead>
38 1 Jinwuk Admin
<tr class="header">
39 1 Jinwuk Admin
<th align="left">Packgage Name</th>
40 1 Jinwuk Admin
<th align="left">conda Package</th>
41 1 Jinwuk Admin
<th align="left">version</th>
42 1 Jinwuk Admin
<th align="left">Channel</th>
43 1 Jinwuk Admin
<th align="left">Additional Info.</th>
44 1 Jinwuk Admin
</tr>
45 1 Jinwuk Admin
</thead>
46 1 Jinwuk Admin
<tbody>
47 1 Jinwuk Admin
<tr class="odd">
48 1 Jinwuk Admin
<td align="left">tensorboard</td>
49 1 Jinwuk Admin
<td align="left">tensorboard</td>
50 1 Jinwuk Admin
<td align="left">2.10.0</td>
51 1 Jinwuk Admin
<td align="left">conda&#45;forge</td>
52 1 Jinwuk Admin
<td align="left"></td>
53 1 Jinwuk Admin
</tr>
54 1 Jinwuk Admin
<tr class="even">
55 1 Jinwuk Admin
<td align="left">json</td>
56 1 Jinwuk Admin
<td align="left">json</td>
57 1 Jinwuk Admin
<td align="left">0.1.1</td>
58 1 Jinwuk Admin
<td align="left">jmcmurray</td>
59 1 Jinwuk Admin
<td align="left"></td>
60 1 Jinwuk Admin
</tr>
61 1 Jinwuk Admin
<tr class="odd">
62 1 Jinwuk Admin
<td align="left">yaml</td>
63 1 Jinwuk Admin
<td align="left">pyyaml</td>
64 1 Jinwuk Admin
<td align="left">6.0</td>
65 1 Jinwuk Admin
<td align="left">conda&#45;forge</td>
66 1 Jinwuk Admin
<td align="left"></td>
67 1 Jinwuk Admin
</tr>
68 1 Jinwuk Admin
<tr class="even">
69 1 Jinwuk Admin
<td align="left">scipy</td>
70 1 Jinwuk Admin
<td align="left">scipy</td>
71 1 Jinwuk Admin
<td align="left">1.9.3</td>
72 1 Jinwuk Admin
<td align="left">conda&#45;forge</td>
73 1 Jinwuk Admin
<td align="left"></td>
74 1 Jinwuk Admin
</tr>
75 1 Jinwuk Admin
<tr class="odd">
76 1 Jinwuk Admin
<td align="left">scikit&#45;learn</td>
77 1 Jinwuk Admin
<td align="left">scikit&#45;learn</td>
78 1 Jinwuk Admin
<td align="left">1.2.0</td>
79 1 Jinwuk Admin
<td align="left">conda&#45;forge</td>
80 1 Jinwuk Admin
<td align="left"></td>
81 1 Jinwuk Admin
</tr>
82 1 Jinwuk Admin
<tr class="even">
83 1 Jinwuk Admin
<td align="left">matplotlib</td>
84 1 Jinwuk Admin
<td align="left">matplotlib</td>
85 1 Jinwuk Admin
<td align="left">3.6.2</td>
86 1 Jinwuk Admin
<td align="left">conda&#45;forge</td>
87 1 Jinwuk Admin
<td align="left"></td>
88 1 Jinwuk Admin
</tr>
89 1 Jinwuk Admin
<tr class="odd">
90 1 Jinwuk Admin
<td align="left">pytorch</td>
91 1 Jinwuk Admin
<td align="left">pytorch</td>
92 1 Jinwuk Admin
<td align="left">1.13.1</td>
93 1 Jinwuk Admin
<td align="left">pytorch</td>
94 1 Jinwuk Admin
<td align="left"></td>
95 1 Jinwuk Admin
</tr>
96 1 Jinwuk Admin
<tr class="even">
97 1 Jinwuk Admin
<td align="left">pytorch&#45;cuda</td>
98 1 Jinwuk Admin
<td align="left">pytorch&#45;cuda</td>
99 1 Jinwuk Admin
<td align="left">11.7</td>
100 1 Jinwuk Admin
<td align="left">pytorch and nvidia</td>
101 1 Jinwuk Admin
<td align="left"></td>
102 1 Jinwuk Admin
</tr>
103 1 Jinwuk Admin
<tr class="odd">
104 1 Jinwuk Admin
<td align="left">torchvision</td>
105 1 Jinwuk Admin
<td align="left">torchvision</td>
106 1 Jinwuk Admin
<td align="left">0.14.1</td>
107 1 Jinwuk Admin
<td align="left">pytorch</td>
108 1 Jinwuk Admin
<td align="left"></td>
109 1 Jinwuk Admin
</tr>
110 1 Jinwuk Admin
<tr class="even">
111 1 Jinwuk Admin
<td align="left">torchaudio</td>
112 1 Jinwuk Admin
<td align="left">torchaudio</td>
113 1 Jinwuk Admin
<td align="left">0.13.1</td>
114 1 Jinwuk Admin
<td align="left">pytorch</td>
115 1 Jinwuk Admin
<td align="left"></td>
116 1 Jinwuk Admin
</tr>
117 1 Jinwuk Admin
</tbody>
118 1 Jinwuk Admin
</table>
119 1 Jinwuk Admin
120 1 Jinwuk Admin
* wget의 경우는 환경을 변화 시킨 후 별도로 pip로 설치해야 한다.
121 1 Jinwuk Admin
122 1 Jinwuk Admin
bc. pip3 install wget
123 1 Jinwuk Admin
124 1 Jinwuk Admin
125 1 Jinwuk Admin
따라서 다음과 같이 Requirements를 잡아보자
126 1 Jinwuk Admin
127 1 Jinwuk Admin
bc. # Usage : conda install requirements_test.txt -c conda-forge -c pytorch -c nvidia -c jmcmurray
128 1 Jinwuk Admin
# Channel : conda-forge, pytorch, nvidia, jmcmurray
129 1 Jinwuk Admin
json==0.1.1
130 1 Jinwuk Admin
pyyaml==6.0
131 1 Jinwuk Admin
scipy==1.9.3
132 1 Jinwuk Admin
scikit-learn==1.2.0
133 1 Jinwuk Admin
matplotlib==3.6.2
134 1 Jinwuk Admin
tensorboard==2.10.0
135 1 Jinwuk Admin
pytorch==1.13.1
136 1 Jinwuk Admin
torchvision==0.14.1
137 1 Jinwuk Admin
torchaudio==0.13.1
138 1 Jinwuk Admin
pytorch-cuda=11.7
139 1 Jinwuk Admin
140 1 Jinwuk Admin
141 1 Jinwuk Admin
h2(#installation). Installation
142 1 Jinwuk Admin
143 1 Jinwuk Admin
h3(#anaconda-update). Anaconda update
144 1 Jinwuk Admin
145 1 Jinwuk Admin
다음과 같이 Anaconda를 업데이트 한다. ~~~ conda update &#45;n base conda conda update  - all python &#45;m pip install  - upgrade pip ~~~
146 1 Jinwuk Admin
147 1 Jinwuk Admin
h3(#anaconda-installation). Anaconda Installation
148 1 Jinwuk Admin
149 1 Jinwuk Admin
h4(#preliminaries). Preliminaries
150 1 Jinwuk Admin
151 1 Jinwuk Admin
설치방법은 ~~~ pip install &#45;r requirements.txt ~~~
152 1 Jinwuk Admin
153 1 Jinwuk Admin
그런데 Anaconda에서 가상환경을 구축하기 위해서는 다음과 같이 해야 한다. ~~~ conda create  - name <env>  - file requirements.txt ~~~
154 1 Jinwuk Admin
155 1 Jinwuk Admin
하지만 위 방법으로는 잘 되지 않는다. 그 이유는 어떤 Package의 경우 PIP를 사용하여 설치하여서 그렇다. 이를 회피하기 위해서는 다음 방법을 사용한다. ~~~ conda env create &#45;n new&#45;env&#45;name &#45;f environment.yml ~~~
156 1 Jinwuk Admin
157 1 Jinwuk Admin
다음은 환경 이름을 py3.10.0 으로 한 예 이다. ~~~ conda env create &#45;n py3.10.0 &#45;f environment.yml ~~~
158 1 Jinwuk Admin
159 1 Jinwuk Admin
h4(#experiments). Experiments
160 1 Jinwuk Admin
161 1 Jinwuk Admin
실제 A100 서버에는 다음과 같이 실행하였다.
162 1 Jinwuk Admin
163 1 Jinwuk Admin
* Conda 가상환경을 생성하면서 설치하도록 한다.
164 1 Jinwuk Admin
165 1 Jinwuk Admin
bc. conda create --name py3.10 --file requirements_test.txt -c conda-forge -c pytorch -c nvidia -c jmcmurray
166 1 Jinwuk Admin
167 1 Jinwuk Admin
168 1 Jinwuk Admin
* wget의 경우는 pip3로만 설치가 가능하다.
169 1 Jinwuk Admin
170 1 Jinwuk Admin
bc. pip3 install wget
171 1 Jinwuk Admin
172 1 Jinwuk Admin
173 1 Jinwuk Admin
* 테스트 코드는 다음을 사용한다.
174 1 Jinwuk Admin
175 1 Jinwuk Admin
bc. python torch_nn02.py -m Adam -d CIFAR10 -e 1 -n ResNet -g 1
176 1 Jinwuk Admin
177 1 Jinwuk Admin
178 1 Jinwuk Admin
h4(#windows). Windows
179 1 Jinwuk Admin
180 1 Jinwuk Admin
그런데 Windows에서는 스크립트 파일을 바꾸어서 Bat 파일로 만들었을 떄, 이상하게 동작을 잘 하지 못했다. 이유를 나중에 알아보아야 한다. 또 하나 문제점은 설치 시 너무 오랜 시간이 걸린다는 점이다. 따라서 하나씩, 디버깅을 해본다. &#45; Conda 환경 Create [OK] ~~~ conda create  - name test&#95;env python=3.10.0 ~~~
181 1 Jinwuk Admin
182 1 Jinwuk Admin
bc. conda install tensorboard==2.10.0 -c conda-forge  #[OK]
183 1 Jinwuk Admin
conda install json==0.1.1 -c jmcmurray            #[OK]         
184 1 Jinwuk Admin
conda install pyyaml=6.0 -c conda-forge           #[OK]
185 1 Jinwuk Admin
conda install scipy=1.9.3 -c conda-forge          #[OK]
186 1 Jinwuk Admin
conda install scikit-learn==1.2.0 -c conda-forge  #[OK]
187 1 Jinwuk Admin
conda install matplotlib==3.6.2 -c conda-forge    #[OK]
188 1 Jinwuk Admin
conda install pytorch==1.13.1 -c pytorch          #[OK]
189 1 Jinwuk Admin
conda install torchvision==0.14.1 -c pytorch      
190 1 Jinwuk Admin
conda install torchaudio==0.13.1 -c pytorch
191 1 Jinwuk Admin
192 1 Jinwuk Admin
193 1 Jinwuk Admin
<ul>
194 1 Jinwuk Admin
<li>범인은 pytorch&#45;cuda 이다. 현재 11.8 버전이고 현 상태에서 필요한 버전은 11.7이다. windows 버전의 경우 너무 시간이 많이 걸린다. 해결책은 다음과 같다.
195 1 Jinwuk Admin
<ul>
196 1 Jinwuk Admin
<li>channel은 *pytorch와 nvidia가 모두 지정*되어야 한다. 하나만 지정되어서는 안된다.</li>
197 1 Jinwuk Admin
<li>pytorch&#45;cuda==11.7 로 지정하지 말고 pytorch&#45;cuda=11.7 로 지정한다.</li>
198 1 Jinwuk Admin
<li>*pytorch &#45;&gt; torchvision &#45;&gt; torchaudio 가 설치된 후, pytorch&#45;cuda 가 설치되어야 한다.*</li>
199 1 Jinwuk Admin
</ul>
200 1 Jinwuk Admin
201 1 Jinwuk Admin
bc. conda install pytorch-cuda=11.7 -c pytorch -c nvidia
202 1 Jinwuk Admin
203 1 Jinwuk Admin
</li>
204 1 Jinwuk Admin
</ul>
205 1 Jinwuk Admin
206 1 Jinwuk Admin
h3(#verification). Verification
207 1 Jinwuk Admin
208 1 Jinwuk Admin
bc. python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
209 1 Jinwuk Admin
210 1 Jinwuk Admin
211 1 Jinwuk Admin
h3(#miscellaneous-topics). Miscellaneous topics
212 1 Jinwuk Admin
213 1 Jinwuk Admin
* conda 가상환경 삭제
214 1 Jinwuk Admin
215 1 Jinwuk Admin
bc. conda deactivate # 현재 가상환경을 빠져나온 다음 가상환경을 지운다.
216 1 Jinwuk Admin
conda remove --name [가상환경명] --all
217 1 Jinwuk Admin
218 1 Jinwuk Admin
219 1 Jinwuk Admin
h2(#실제-installation-guide). 실제 Installation Guide
220 1 Jinwuk Admin
221 1 Jinwuk Admin
다음 내용은 README.md 의 내용과 동일하다.
222 1 Jinwuk Admin
223 1 Jinwuk Admin
We strongly recommend Anaconda environment to operate the provided test codes. When you setup Anaconda packages (or previously installed), we recommend the base virtual environment of your Anaconda platform as follows: ~~~ (base)yourID&#64;home$ ~~~
224 1 Jinwuk Admin
225 1 Jinwuk Admin
h3(#for-linux). For Linux
226 1 Jinwuk Admin
227 1 Jinwuk Admin
Change the mode of the file "installation.sh" as follows: ~~~ chmod &#43;x installation.sh ~~~ Run the installation.sh such that ~~~ source ./installation.sh ~~~ Following this, you write the name of the conda virtual environment after the following command : ~~~ Input the name of a conda virtual environment for test codes: ~~~ If you input the name as "test&#95;env" such that ~~~ test&#95;env ~~~ , then you can verify the name as follows: ~~~ The name of rhe conda virtual environment: test&#95;env ~~~ Automatically, the installation scripts setup the required python packages
228 1 Jinwuk Admin
229 1 Jinwuk Admin
h3(#for-windows). For Windows
230 1 Jinwuk Admin
231 1 Jinwuk Admin
Instead of the installation shell files in Linux, we use the following commands directly to install the test codes on Anaconda frame work.
232 1 Jinwuk Admin
233 1 Jinwuk Admin
First, we update the anaconda framework using the following commands:
234 1 Jinwuk Admin
235 1 Jinwuk Admin
bc. conda update -n base conda
236 1 Jinwuk Admin
conda update --all
237 1 Jinwuk Admin
python -m pip install --upgrade pip
238 1 Jinwuk Admin
239 1 Jinwuk Admin
240 1 Jinwuk Admin
Following this, we input the follwoing code to install the test codes. You set the name of an anaconda environment replace %conda&#95;env&#95;name% with what you want.
241 1 Jinwuk Admin
242 1 Jinwuk Admin
bc. conda env create --name %conda_env_name% -f environment_test.yml
243 1 Jinwuk Admin
244 1 Jinwuk Admin
245 1 Jinwuk Admin
If you set the name of environment as "test&#95;env", the installation code is as follows (It takes some times):
246 1 Jinwuk Admin
247 1 Jinwuk Admin
bc. conda env create --name test_env -f environment_test.yml
248 1 Jinwuk Admin
249 1 Jinwuk Admin
250 1 Jinwuk Admin
After installing the required packages, activate the conda environment named with what you depicts.
251 1 Jinwuk Admin
252 1 Jinwuk Admin
bc. conda activate %conda_env_name%
253 1 Jinwuk Admin
254 1 Jinwuk Admin
255 1 Jinwuk Admin
h3(#verification-of-installation). Verification of installation
256 1 Jinwuk Admin
257 1 Jinwuk Admin
You will see that the conda environment is changed with the "test&#95;env". ~~~ (test&#95;env)yourID&#64;home$ ~~~
258 1 Jinwuk Admin
259 1 Jinwuk Admin
You can verify the conda environment is setup appropriately with the following python test code: ~~~ python &#45;c “import torch; print(torch.&#95;&#95;version&#95;&#95;, torch.cuda.is&#95;available()) &gt;&gt;&gt;1.13.x True # It indicates that the cuda chain for pytorch is setup proper. ~~~
260 1 Jinwuk Admin
261 1 Jinwuk Admin
To verify the test program works well, type the following command: ~~~ python torch&#95;nn02.py &#45;m Adam &#45;d CIFAR10 &#45;e 10 &#45;n ResNet &#45;g 1 ~~~ After the downloading of CIFAR10 dataset, you can see the operation of the test codes.
262 1 Jinwuk Admin
263 1 Jinwuk Admin
h2(#usage-of-gpu). Usage of GPU
264 1 Jinwuk Admin
265 1 Jinwuk Admin
["Pytorch] GPU 여부 확인, 사용할 GPU 번호 지정, 모델 및 텐서에 GPU 할당 방법 (tistory.com)":https://jimmy-ai.tistory.com/224
266 1 Jinwuk Admin
267 1 Jinwuk Admin
h3(#linux). Linux
268 1 Jinwuk Admin
269 1 Jinwuk Admin
* *CUDA&#95;VISIBLE&#95;DEVICES* 를 아래와 같이 지정하면 된다.
270 1 Jinwuk Admin
271 1 Jinwuk Admin
<pre>
272 1 Jinwuk Admin
# 가장 기본적인 예시(GPU 1개, 여러개 예시)
273 1 Jinwuk Admin
$ CUDA_VISIBLE_DEVICES=0 python file_name.py
274 1 Jinwuk Admin
$ CUDA_VISIBLE_DEVICES=0,1,2 python file_name.py
275 1 Jinwuk Admin
276 1 Jinwuk Admin
# bash for문, input 인자가 있는 복잡한 예시
277 1 Jinwuk Admin
$ for var in {1..100}
278 1 Jinwuk Admin
do
279 1 Jinwuk Admin
  CUDA_VISIBLE_DEVICES=1 python file_name.py \
280 1 Jinwuk Admin
    --argument1 $var
281 1 Jinwuk Admin
done
282 1 Jinwuk Admin
</pre>
283 1 Jinwuk Admin
284 1 Jinwuk Admin
* 코드 실행 후, 다른 터미널에서 nvidia&#45;smi를 입력하여 GPU가 잘 사용되고 있는지 여부를 확인한다.
285 1 Jinwuk Admin
286 1 Jinwuk Admin
h3(#windows-1). Windows
287 1 Jinwuk Admin
288 1 Jinwuk Admin
* 터미널의 종류가 다르기 때문에 bash 형태가 아닌 OS 라이브러리를 이용해야 한다.
289 1 Jinwuk Admin
290 1 Jinwuk Admin
<pre class="python">
291 1 Jinwuk Admin
import os
292 1 Jinwuk Admin
os.environ[&quot;CUDA_DEVICE_ORDER&quot;]=&quot;PCI_BUS_ID&quot;
293 1 Jinwuk Admin
os.environ[&quot;CUDA_VISIBLE_DEVICES&quot;]=&quot;0&quot;
294 1 Jinwuk Admin
295 1 Jinwuk Admin
# GPU 여러개를 지정하고 싶은 경우는 아래 형태로 사용
296 1 Jinwuk Admin
os.environ[&quot;CUDA_VISIBLE_DEVICES&quot;]=&quot;0,1,2&quot;
297 1 Jinwuk Admin
</pre>
298 1 Jinwuk Admin
299 1 Jinwuk Admin
윈도우에서는 코드 실행 후, 작업 관리자 &#45;&gt; 성능 &#45;&gt; GPU 탭에서 사용 현황을 확인하면 된다.
300 1 Jinwuk Admin
301 1 Jinwuk Admin
h3(#tips). Tips
302 1 Jinwuk Admin
303 1 Jinwuk Admin
h4(#특정-번호의-gpu-사용-지정). 특정 번호의 GPU 사용 지정
304 1 Jinwuk Admin
305 1 Jinwuk Admin
* 만일, 특정 번호(들)의 GPU만을 파이토치에서 사용하고 싶은 경우는 os 모듈의 기능을 활용하여 다음 코드처럼 지정한다.
306 1 Jinwuk Admin
307 1 Jinwuk Admin
<pre class="python">
308 1 Jinwuk Admin
import os
309 1 Jinwuk Admin
# 0, 1, 2번의 GPU를 모두 사용하고 싶은 경우 예시(각각 cuda:0, cuda:1, cuda:2에 지정)
310 1 Jinwuk Admin
os.environ[&quot;CUDA_DEVICE_ORDER&quot;] = &quot;PCI_BUS_ID&quot;
311 1 Jinwuk Admin
os.environ[&quot;CUDA_VISIBLE_DEVICES&quot;] = &quot;0,1,2&quot;
312 1 Jinwuk Admin
313 1 Jinwuk Admin
# 2번 GPU만 사용하고 싶은 경우 예시(cuda:0에 지정)
314 1 Jinwuk Admin
os.environ[&quot;CUDA_DEVICE_ORDER&quot;] = &quot;PCI_BUS_ID&quot;
315 1 Jinwuk Admin
os.environ[&quot;CUDA_VISIBLE_DEVICES&quot;] = &quot;2&quot;
316 1 Jinwuk Admin
</pre>
317 1 Jinwuk Admin
318 1 Jinwuk Admin
* 여러개의 GPU를 연결한 경우, 그래픽 카드가 연결된 순서대로 각각 cuda:0, cuda:1, ...
319 1 Jinwuk Admin
* 디바이스로 인식되도록 지정된다
320 1 Jinwuk Admin
321 1 Jinwuk Admin
h4(#연결된-gpu-정보-및-사용-가능-gpu-개수-확인). 연결된 GPU 정보 및 사용 가능 GPU 개수 확인
322 1 Jinwuk Admin
323 1 Jinwuk Admin
* 아래의 코드로 각 번호에 연결된 그래픽 카드의 이름과 총 GPU의 개수를 확인할 수 있다.
324 1 Jinwuk Admin
325 1 Jinwuk Admin
<pre class="python">
326 1 Jinwuk Admin
# GPU 이름 체크(cuda:0에 연결된 그래픽 카드 기준)
327 1 Jinwuk Admin
print(torch.cuda.get_device_name(), device = 0) # 'NVIDIA TITAN X (Pascal)'
328 1 Jinwuk Admin
329 1 Jinwuk Admin
# 사용 가능 GPU 개수 체크
330 1 Jinwuk Admin
print(torch.cuda.device_count()) # 3
331 1 Jinwuk Admin
</pre>
332 1 Jinwuk Admin
333 1 Jinwuk Admin
h4(#gpu-사용-가능-여부-확인). GPU 사용 가능 여부 확인
334 1 Jinwuk Admin
335 1 Jinwuk Admin
* 아래의 명령어의 결과가 True로 반환되면 GPU가 연결되어 사용 가능하다는 의미
336 1 Jinwuk Admin
337 1 Jinwuk Admin
bc(python). import torch
338 1 Jinwuk Admin
# GPU 사용 가능 -> True, GPU 사용 불가 -> False
339 1 Jinwuk Admin
print(torch.cuda.is_available())
340 1 Jinwuk Admin
341 1 Jinwuk Admin
342 1 Jinwuk Admin
* 다음과 같이 코드를 작성하면 GPU 여부에 따라서 사용할 디바이스 종류 자동 지정이 가능
343 1 Jinwuk Admin
344 1 Jinwuk Admin
bc(python). # GPU 사용 가능 -> 가장 빠른 번호 GPU, GPU 사용 불가 -> CPU 자동 지정 예시
345 1 Jinwuk Admin
device = torch.device('cuda:0') if torch.cuda.is_available() else torch.device('cpu')
346 1 Jinwuk Admin
347 1 Jinwuk Admin
348 1 Jinwuk Admin
h2(#git-commitpushpull). Git Commit/Push/Pull
349 1 Jinwuk Admin
350 1 Jinwuk Admin
environment.yml 파일이 변경되어 add 해야 한다고 가정하자. add, commit, push, 다음과 같다.
351 1 Jinwuk Admin
352 1 Jinwuk Admin
bc. git add environment.yml
353 1 Jinwuk Admin
git commit -m "modifying environment.yml. The name of anaconda envronment is py3.10.0, and the python version is 3.10.0"
354 1 Jinwuk Admin
git push --progress "origin" master:master
355 1 Jinwuk Admin
356 1 Jinwuk Admin
357 1 Jinwuk Admin
pull은 다음과 같다.
358 1 Jinwuk Admin
359 1 Jinwuk Admin
bc. git pull --progress "origin"
360 1 Jinwuk Admin
361 1 Jinwuk Admin
362 1 Jinwuk Admin
h3(#git-commit에-시간이-너무-많이-걸릴떄). Git commit에 시간이 너무 많이 걸릴떄
363 1 Jinwuk Admin
364 1 Jinwuk Admin
requirements.txt 파일을 추가하기 위하여 git commit을 해야 하는데, 너무 시간이 오래걸리면 다음과 같이 한다. ~~~ git add requirements.txt git commit &#45;m "message" ~~~
365 1 Jinwuk Admin
366 1 Jinwuk Admin
그리고 git push 하면 쉽게 된다.
367 1 Jinwuk Admin
368 1 Jinwuk Admin
h2(#note). Note
369 1 Jinwuk Admin
370 1 Jinwuk Admin
h3(#atome-editor에서-markdown-preview). Atome Editor에서 Markdown Preview
371 1 Jinwuk Admin
372 1 Jinwuk Admin
Atom Editor의 Markdown Preview Plus의 경우, 현재 Github에 떠 있는 버전은 문제가 있다. Atom Editor에서도 제대로 동작이 되지 않는다. 반면 내가 가지고 있는 버전은 정상적으로 동작한다. 따라서, Atom Editor 관련한 파일을 잘 보관하였다가 사용할 필요성이 있다. 현재, 이음서비스에 Atom Editor 설치판과 Markdown Preview Plus를 압축파일로 보관 중이다.
373 1 Jinwuk Admin
374 1 Jinwuk Admin
h4(#markdown-preview-plus-설치). Markdown Preview Plus 설치
375 1 Jinwuk Admin
376 1 Jinwuk Admin
이제, Markdown Preview Plus는 APM으로 설치되지 않는다. 따라서, 이음서비스에 있는 Markdown Preview Plus 파일을
377 1 Jinwuk Admin
378 1 Jinwuk Admin
# /.atom/packages/ 에 Markdown Preview Plus 폴더를 만들고
379 1 Jinwuk Admin
# 직접 다음 사이트에 복사해 넣어 주어야 한다.
380 1 Jinwuk Admin
381 1 Jinwuk Admin
bc. .../.atom/packages/Markdown Preview Plus
382 1 Jinwuk Admin
383 1 Jinwuk Admin
384 1 Jinwuk Admin
h2(#linux-background-실행-nohup). Linux Background 실행 (nohup)
385 1 Jinwuk Admin
386 1 Jinwuk Admin
* 참고 사이트 [4]
387 1 Jinwuk Admin
* 다음과 같이 실행한다.
388 1 Jinwuk Admin
389 1 Jinwuk Admin
bc. nohup python torch_nn02.py -bt 1 > result_2023_08-01-1104.txt &
390 1 Jinwuk Admin
391 1 Jinwuk Admin
392 1 Jinwuk Admin
* 그러면 출력으로 해당 프로세스의 PID 값이 나온다.
393 1 Jinwuk Admin
394 1 Jinwuk Admin
bc. [1] 1514413
395 1 Jinwuk Admin
396 1 Jinwuk Admin
397 1 Jinwuk Admin
* 현재 running 중의 Process를 알고 싶으면 *jobs* 를 쓴다.
398 1 Jinwuk Admin
399 1 Jinwuk Admin
bc. (py3.10.12) sderoen@etri:~/nips2023_work$ jobs
400 1 Jinwuk Admin
[1]+  Running                 nohup python torch_nn02.py -bt 1 > result_2023_08-01-1104.txt &
401 1 Jinwuk Admin
402 1 Jinwuk Admin
403 1 Jinwuk Admin
아까 입력한 명령이 현재 동작 중에 있음을 알 수 있다.
404 1 Jinwuk Admin
405 1 Jinwuk Admin
* Process 를 죽이는 방법은 먼저, 위에서 알고 있는 PID 를 사용하여
406 1 Jinwuk Admin
407 1 Jinwuk Admin
bc. kill -9 1514413
408 1 Jinwuk Admin
409 1 Jinwuk Admin
410 1 Jinwuk Admin
* 그리고 jobs를 통해 얻게된 작업 (작업 번호를 알아야 한다. 여기서는 [1] 이므로 1) 번호로 죽이는 방법이 있다.
411 1 Jinwuk Admin
412 1 Jinwuk Admin
bc. kill %1
클립보드 이미지 추가 (최대 크기: 977.563 MB)