logo
logo
ML/AI 개발자를 위한 단계별 Python 최적화 가이드라인
코드너리  |  2023. 03. 18
머신러닝
성능 개선
사용된 기술:
python-image

개요:

ML/AI 분야는 아이디어 구현의 용이성을 중시하여 TensorFlow, PyTorch 등의 DL Frameworks를 필두로 Python 기반 EcoSystem이 구축되어 있습니다. 덕분에 많은 개발자가 Python을 베이스로 아이디어를 구현하고 빠르게 ML/AI 분야를 발전시켜올 수 있었습니다.

그렇지만 Python은 High-level programming language로 분류되는 언어들 중에서도 Global Interpreter Lock (GIL)로 대표되는 다양한 제약에 의해 속도 최적화의 한계가 가장 두드러지는 언어입니다. 따라서 Python 기반 엔진의 속도, 특히 CPU time을 최적화하는 것은 쉽지 않은 일입니다.

이는 일정 수준의 응답속도를 요구하는 서비스에서는 치명적입니다. 하지만 Python이 활용되어온 배경을 무시하고 개발자에게 무작정 Low-level 최적화를 강요할 수는 없습니다.

본 세션에서는 Python만을 이용하고 싶은 개발자가 병목을 찾고 개선하는 방법부터 C/C++에 익숙하여 Python과 결합하고 싶은 분, 그리고 그 중간에 계신 분들까지.

각자의 수준과 기호에 맞는 Python 최적화를 할 수 있도록 단계별 최적화 방법론을 소개합니다. 추가로 모든 단계를 직접 거쳐본 경험, 교훈 등을 공유합니다.

목차

0. 모델러 출신이 CPU 속도를 신경쓰게된 배경1. Python 간단 프로파일링

  • line profiler 소개 및 사용법
  • profile 중 사고 방식 및 주의점

2. Python level 최적화

  • 베이스 Python 코드 작성시 주의점
  • OpenCV/NumPy 등 기존 Python 패키지 잘 쓰는 법

3. Semi-C level 최적화

  • Cython/Numba를 활용한 최적화
  • Numba/Cython 활용시 주의점 (언제 어떻게 써야하는가)

4. C level 최적화

  • Python/C API로 C extension 만들기
  • C 라이브러리 활용하기 (feat. OpenMP 도입하기)
  • 기존 Python 패키지 (OpenCV/NumPy)와 호환 가능한 C extension 만들기
  • C extension 개발 시 주의점 (lifetime 관리, memory leak 예방)

5. 기타

  • 도커 환경 및 환경 변수에 대한 이야기
Copyright © 2024. Codenary All Rights Reserved.