LLM 트윈 프로젝트 – 두 번째 세미나 – 2장 1/2
2장에서는 LLM Twin 프로젝트 구현 및 배포에 사용될 필수 도구들을 소개합니다.
이 글은 2장 두 개의 글 중 첫 번째 글로 파이썬과 관련된 도구들에 대해 이야기합니다.
- 파이썬 인터프리터: 책의 모든 코드는 Python 3.11.8에서 테스트되었습니다. https://www.python.org/downloads/에서 다운로드할 수 있지만, 여러 버전의 Python을 관리하기 위해
pyenv
사용을 권장합니다. pyenv
를 이용한 Python 버전 관리:pyenv
(https://github.com/pyenv/pyenv?tab=readme-ov-file#installation)는 여러 Python 버전을 관리하는 도구입니다.pyenv install 3.11.8
명령어로 Python 3.11.8을 설치하고,pyenv versions
로 설치된 버전을 확인할 수 있습니다.pyenv global 3.11.8
명령어는 시스템 전체의 기본 Python 버전을 3.11.8로 설정하지만, 레포지토리 내에서만 특정 버전을 사용하기 위해.python-version
파일을 활용하는 방법을 제시합니다.- 레포지토리 클론 및
.python-version
파일:git clone https://github.com/PacktPublishing/LLM-Engineers-Handbook.git
명령어로 레포지토리를 복제합니다.- 레포지토리 내에서
pyenv local 3.11.8
명령어를 한 번 실행하면.python-version
파일이 생성되어 해당 디렉토리 내에서 Python 3.11.8을 사용하도록 설정됩니다.python --version
명령어로 설정된 Python 버전을 확인할 수 있습니다.
Poetry – 의존성 및 가상 환경 관리를 위한 도구
- 의존성 관리자의 역할:
- 파이썬 프로젝트는 다양한 외부 라이브러리(의존성)에 의존합니다. 의존성 관리자는 이러한 의존성을 정의, 설치, 업데이트, 관리하는 도구입니다.
- Poetry의 장점:
- 의존성 고정:
pyproject.toml
파일에서 의존성의 버전 범위를 지정하면, Poetry는 정확한 버전을poetry.lock
파일에 기록합니다. 이를 통해 모든 설치에서 동일한 버전의 패키지를 사용하여 예측 가능한 동작을 보장합니다. “내 컴퓨터에서는 작동하는데…”와 같은 문제를 방지합니다. - 가상 환경 생성: Poetry는 프로젝트별로 독립적인 가상 환경을 생성합니다. 이를 통해 프로젝트 간 의존성 충돌을 방지합니다.
- 의존성 고정:
- Poetry 설치 및 사용:
- https://python-poetry.org/docs/ 에서 Poetry를 설치할 수 있습니다.
LLM-Engineers-Handbook
레포지토리에서poetry install --without aws
명령어를 사용하여 의존성을 설치하고,poetry shell
또는poetry run
명령어로 가상 환경을 활성화합니다.
- https://python-poetry.org/docs/ 에서 Poetry를 설치할 수 있습니다.
pyproject.toml
과poetry.lock
파일의 차이:pyproject.toml
파일은 의존성의 버전 범위를 지정하고,poetry.lock
파일은 실제 설치된 의존성의 정확한 버전과 하위 의존성까지 기록합니다.poetry.lock
파일은 프로젝트의 일관성을 유지하는 데 중요한 역할을 합니다.
- Poetry와 유사한 도구:
- Venv와 Conda는 가상 환경 생성 도구이지만 의존성 관리 기능이 부족합니다. Pipenv는 Poetry와 유사하지만 속도가 느리고, uv는 Rust로 작성된 빠른 대안입니다. (https://github.com/astral-sh/uv)
참고 블로그 글: poetry 의 거의 모든것 (튜토리얼)
Poe the Poet – CLI 명령어 관리를 위한 도구
- Poe the Poet의 역할:
- Poe the Poet는 Poetry 플러그인으로, 프로젝트와 상호 작용하는 데 필요한 모든 CLI 명령어를 관리하고 실행하는 데 사용됩니다. Makefile, Invoke, shell 스크립트 등 다른 옵션도 있지만, Poe the Poet는 별도의 스크립트 작성 없이 Poetry의
pyproject.toml
파일에서 작업을 정의하고 실행할 수 있도록 합니다. 이는 프로젝트 작업 관리를 위한 우아한 방법이며, 동시에 명령어에 대한 문서화 역할도 수행합니다.
- Poe the Poet는 Poetry 플러그인으로, 프로젝트와 상호 작용하는 데 필요한 모든 CLI 명령어를 관리하고 실행하는 데 사용됩니다. Makefile, Invoke, shell 스크립트 등 다른 옵션도 있지만, Poe the Poet는 별도의 스크립트 작성 없이 Poetry의
- Poe the Poet의 사용 예:
pyproject.toml
파일에 다음과 같이 작업을 정의할 수 있습니다.-
12345[tool.poe.tasks]test = "pytest"format = "black ."start = "python main.py"
그리고poe test
,poe format
,poe start
명령어로 작업을 실행할 수 있습니다.
-
- Poe the Poet 설치:
poetry self add 'poethepoet[poetry_plugin]'
명령어로 Poetry 플러그인으로 설치합니다.
LLM-Engineers-Handbook
레포지토리 설정:pyenv
와 Poetry가 설치되어 있다면, 다음 명령어로 레포지토리를 복제하고 의존성과 Poe the Poet 플러그인을 설치할 수 있습니다.-
12345git clone https://github.com/PacktPublishing/LLM-Engineers-Handbook.gitcd LLM-Engineers-Handbookpoetry install --without awspoetry self add 'poethepoet[poetry_plugin]'
-
- 레포지토리의 완벽한 작동을 위해서는
.env
파일 설정과 OpenAI, Hugging Face 토큰 획득 등 추가 단계가 필요하지만, 설치 가이드가 아니므로 레포지토리의 README(https://github.com/PacktPublishing/LLM-Engineers-Handbook)에 자세한 내용이 제공됩니다.