2020/04 2

GIL. python

파이썬으로 고성능의? 아니 병렬화된 어떤 코드를 개발할 때, 항상 걸림돌이 되는 요소가 GIL(Global Interpreter Lock) 이다. ML 관련된 다양한 일들을 하면서, 파이썬이 상당히 각광받고 있는 것도 사실이지만, 반대로 이걸로 서비스를 개발하려고하면, 당면할 수 밖에 없는 문제가 바로 GIL 이다. 어? 근데 파이썬도 스레드를 지원하잖아요? 라고 묻는다면, 그 스레드가 여러개가 동시에 동작하더라도, 결국엔 하나의 스레드만 파이썬 오브젝트에 접근할 수 밖에 없기 때문에, 사실상 Single-threaded 프로그램과 다를 바 없으며, 그래서 원한만큼 효율을 높이는 데에는 한계가 있음을 알 수 있다. 이러한 특징으로 파이썬에서는 병렬화된 프로그래밍을 한다고 하면, 프로세스를 늘리는 형태로 ..

serving, pytorch.

꽤나 오랜만에 글을 쓰는 것 같은데, 참 오랫동안 ML 관련된 일을 하고 있다. 개인적으로는 backend, bigdata 관련 개발자이기도 하고, ML 을 오랫동안 하고 있다는 것 때문에 최근에 많이 요구하는 일들 중 하나가 serving 이다. serving 이 뭔데? 라고 물으신다면, scikit-learn/tensorflow/pytorch/mxnet 등등.. 다양한 ML 로 만들어진 Model을 서비스로 제공하는 방법을 말한다. 사실 scikit-learn 같은 경우엔 별 문제가 없다. scikit-learn 은 좀 헤비하다고 해도, 가벼운 수준이라 flask 같은 걸로 api 만들고, call 하면 그만이고, GPU 자원을 사용하는 것들도 없거나, 적어서 flask 만을 사용해도 별 무리가 없다..