파이썬 너무 느려요? 하이퍼커넥트의 파이썬 ML 백엔드 최적화 방법
“파이썬은 느리다”는 얘기를 많이들 하는데요. 네, 파이썬 느립니다. 안 그래도 느린데, 잘 쓰기도 어렵고 잘못쓰면 정말 많이 느려요. 그래도 데이터 처리 분야의 방대한 라이브러리를 포기하기도 아쉽죠. 잘 쓰면 또 쓸만하니까요. 이런 고민으로 하이퍼커넥트에서 ML 백엔드 서비스를 파이썬으로 쓰면서 최적화한 방법을 글로 써주셨네요. ML 서비스에 가져다 쓰기 너무 좋고, 이외 분야에서도 참고하기 좋은 부분이 많습니다. 난이도가 높은 부분도 있는데, 어려운 부분은 슥슥 넘기면서 끝까지 읽어보시면 좋습니다. 아래 내용들을 자세하게 다룹니다. — - 상황에 따라 gc가 병목일 수 있다. 이런 경우 gc 발동 조건을 튜닝할 수 있다. - Built-in list는 충분히 빠르지 않다. 필요시 array나 numpy를 사용하자. - multiprocess는 커뮤니케이션 오버헤드가 높기에, low-latency 시나리오에서 조심히 사용해야한다. - Pytorch를 multiprocess 환경에서 쓴다면 num_threads를 조정하자. - Pydantic은 아주 느리다. 불필요한 곳에서 가급적 사용하지 말자. - Pandas DataFrame은 생성에 많은 시간이 걸리므로, 유의해서 사용해야 한다. - 바닐라 json 패키지는 느리다. orjson이나 ujson을 사용하자. - Class는 충분히 빠르지 않을 수 있다. 너무 문제가 되면 dict를 사용하자. - Python 3.11은 덜 느리다. - (보너스) line profiler 사용법