python 2

Global Interpreter Lock(GIL) - [process vs thread]

Python은 Global Interpreter Lock(GIL)이라는 큰 특징을 갖고 있는 언어입니다. Python을 느리게 하는 대표적인 특징이며 본 글은 GIL에 관한 공부 내용입니다. 기본적인 Process와 Thread에 관한 내용 Process 정의 process란 실행중에 있는 프로그램. 또는 운영체제로부터 자원(CPU 시간, 메모리, 주소 공간 등)을 할당받은 작업의 단위(인스턴스). 작동원리 - 프로세스에겐 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당. 1. Code 영역 (정적) - 프로그램을 실행시키는 실행 파일 내의 명령어 (소스코드). - Read Only - 프로세스 종료될 때 까지 유지. 2. Data 영역 (정적) - 전역변수(global), ..

python 2022.04.08

Subprocess - flask에 학습 기능 추가

pytorch에서 학습을 돌릴 때 data_loader는 num_workers의 값에 따라서 cpu core를 사용하게 됩니다. 요즘 사용하는 대부분의 컴퓨터는 코어가 여러개 달려있고, data load의 속도가 학습 속도에 상당히 영향을 많이 미치기 때문에 worker의 숫자를 잘 설정해야 합니다. flask에서 웹을 실행하면 app.run을 가동하는 프로세스 안에서 함수들이 실행되기 때문에 pytorch가 여러 개의 코어를 활성화 할 수 없습니다. 일반적인 model serving이 목적이신 분들은 bentoML을 사용하거나, ubuntu container 환경에서 gunicorn을 사용할 수도 있습니다. 그러나 저는 추론 기능은 필요 없고, 웹에 학습 기능만을 추가하려고 합니다. 때문에 이 글은 웹..

python 2022.01.20