콘다 + 시를 사용하는 것이 말이 됩니까?
기계 학습 프로젝트에 콘다 + 시를 사용하는 것이 말이 됩니까?저의 (초보적인) 이해를 공유할 수 있도록 해주시고, 저에게 수정하거나 알려주시기 바랍니다.
제가 알기로는 콘다와 시는 목적은 다르지만 대부분 중복됩니다.
- Conda는 기본적으로 환경 관리자(실제로 Python일 필요는 없지만)이지만 패키지 및 종속성도 관리할 수 있습니다.
- Poetry는 주로 Python 패키지 관리자(예: pip 업그레이드)이지만 Python 환경을 만들고 관리할 수도 있습니다(예: Pyenv 업그레이드).
저의 생각은 콘다를 환경 매니저로, 시를 패키지 매니저로 둘 다 사용하고 그들의 역할을 구분하는 것입니다.제 추론으로는 Conda가 환경 관리에 가장 적합하고 특히 CUDA 드라이버(GPU 기능용)를 컴파일하고 설치하는 데 사용할 수 있는 반면 Poetry는 Python 패키지 관리자로서 Conda보다 더 강력합니다.
저는 콘다 환경에서 시를 사용함으로써 이 작품을 꽤 쉽게 만들 수 있었습니다.비결은 Poetry를 사용하여 Python 환경을 관리하지 않는 것입니다.다음과 같은 명령을 사용하지 않습니다.poetry shell
또는poetry run
, 친구들.poetry init
,poetry install
등(콘다 환경을 활성화한 후).
전체 공개를 위해 내 environment.yml 파일(콘다의 경우)은 다음과 같습니다.
name: N
channels:
- defaults
- conda-forge
dependencies:
- python=3.9
- cudatoolkit
- cudnn
그리고 내 시.toml 파일은 다음과 같습니다.
[tool.poetry]
name = "N"
authors = ["B"]
[tool.poetry.dependencies]
python = "3.9"
torch = "^1.10.1"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
솔직히 제가 이렇게 진행한 이유 중 하나는 Conda 없이 CUDA(GPU 지원용) 설치에 어려움을 겪었기 때문입니다.
이 프로젝트 설계가 합리적으로 보이나요?
저는 콘다 + 시를 설치한 경험이 있으며, 잘 작동하고 있습니다.은 내의성의다은명있시다습니어되음에에 명시되어 있습니다.pyproject.toml
할 수 없는하는 것이 쉬울 때, 을 PyPI에 합니다.environment.yml
관리자로 되며, Poetry와 잘 합니다: ""를 사용할 : "Poetry": "Conda"를 사용할 수 있습니다.poetry run
또는poetry shell
적절한 콘다 환경을 활성화하기에 충분합니다.
재현 가능한 환경을 만들기 위한 팁
- (필요한 경우) 버전 번호가 포함된 시를 종속 항목으로 추가합니다.
environment.yml
를 실행할 때 Poice를 설치하도록 합니다.conda create
및 및 Non-Python함 께 Pi 됩니다.PI 종속성. - 더하다
conda-lock
있는 콘다 합니다. 마치 당신이 가지고 있는 것처럼.poetry.lock
시에 대한 의존성. - 사을고려다니합을 사용하는 것을 .
mamba
은 일반적으로 으와로호는되환반일과 호환됩니다.conda
충돌을 더 잘 해결하고 훨씬 더 빠릅니다.추가적인 이점은 설치 프로그램의 모든 사용자가 로컬로 설치된 Conda 버전과 관계없이 동일한 패키지 확인 프로그램을 사용한다는 것입니다. - 기본적으로 Python 종속성을 추가하는 데 Poetry를 사용합니다.이유가 있는 경우 Conda를 통해 패키지를 설치합니다(예: CUDA 지원 버전을 얻으려면).이러한 경우 패키지의 정확한 버전을 다음에 지정하는 것이 가장 좋습니다.
environment.yml
설치 후 버전 사양이 동일한 항목을 Poetry's에 추가합니다.pyproject.toml
(^
또는~
버전 번호 앞).이렇게 하면 Poetry에서 패키지가 있으며 업그레이드해서는 안 된다는 것을 알 수 있습니다. - 동일한 패키지를 제공하는 다른 채널을 사용하는 경우 특정 패키지가 어느 채널에서 다운로드되는지 알 수 없습니다.입니다(" ": " " " " ").
pytorch
아래 항목), 그리고 또 다른 솔루션은 엄격한 채널 우선 순위를 활성화하는 것입니다.안타깝게도 Conda 4.x에서는 이 옵션을 활성화할 수 있는 방법이 없습니다.environment.yml
. - Python은 다음에 사용자 사이트 패키지를 추가합니다.
sys.path
사용자가 Conda 환경 외부에 Python 패키지를 설치한 경우 이로 인해 재현성이 저하될 수 있습니다.한 가지 가능한 해결책은 환경 변수를 다음과 같이 설정하는 것입니다.True
(또는 비어 있지 않은 다른 값으로).
예
environment.yml
:
name: my_project_env
channels:
- pytorch
- conda-forge
# We want to have a reproducible setup, so we don't want default channels,
# which may be different for different users. All required channels should
# be listed explicitly here.
- nodefaults
dependencies:
- python=3.10.* # or don't specify the version and use the latest stable Python
- mamba
- pip # pip must be mentioned explicitly, or conda-lock will fail
- poetry=1.* # or 1.1.*, or no version at all -- as you want
- tensorflow=2.8.0
- pytorch::pytorch=1.11.0
- pytorch::torchaudio=0.11.0
- pytorch::torchvision=0.12.0
# Non-standard section listing target platforms for conda-lock:
platforms:
- linux-64
virtual-packages.yml
(예: 우리가 원할 때 사용할 수 있습니다.conda-lock
CUDA가 없는 플랫폼에서도 CUDA 사용 잠금 파일을 생성합니다.)
subdirs:
linux-64:
packages:
__cuda: 11.5
초기 설정
할 수 .conda-lock
,mamba
그리고.poetry
대상 환경 외부에 이미 설치되어 있습니다.
# Create a bootstrap env
conda create -p /tmp/bootstrap -c conda-forge mamba conda-lock poetry='1.*'
conda activate /tmp/bootstrap
# Create Conda lock file(s) from environment.yml
conda-lock -k explicit --conda mamba
# Set up Poetry
poetry init --python=~3.10 # version spec should match the one from environment.yml
# Fix package versions installed by Conda to prevent upgrades
poetry add --lock tensorflow=2.8.0 torch=1.11.0 torchaudio=0.11.0 torchvision=0.12.0
# Add conda-lock (and other packages, as needed) to pyproject.toml and poetry.lock
poetry add --lock conda-lock
# Remove the bootstrap env
conda deactivate
rm -rf /tmp/bootstrap
# Add Conda spec and lock files
git add environment.yml virtual-packages.yml conda-linux-64.lock
# Add Poetry spec and lock files
git add pyproject.toml poetry.lock
git commit
사용.
위의 설정은 복잡해 보일 수 있지만 상당히 간단한 방법으로 사용할 수 있습니다.
환경 조성
conda create --name my_project_env --file conda-linux-64.lock
conda activate my_project_env
poetry install
환경 활성화
conda activate my_project_env
환경 업데이트
# Re-generate Conda lock file(s) based on environment.yml
conda-lock -k explicit --conda mamba
# Update Conda packages based on re-generated lock file
mamba update --file conda-linux-64.lock
# Update Poetry packages and re-generate poetry.lock
poetry update
@michau의 답변을 사용하지만 시를 포함한 문제가 있는 모든 사람에게.environment.yml
현재 시 버전 1.2 이상은 콘다 단조로 지원되지 않습니다.여전히 v1.2 시를 포함할 수 있습니다..yml
다음을 대안으로 제시합니다.
dependencies:
- python=3.9.*
- mamba
- pip
- pip:
- "poetry>=1.2"
언급URL : https://stackoverflow.com/questions/70851048/does-it-make-sense-to-use-conda-poetry
'source' 카테고리의 다른 글
SQL에서 count(열)와 count(*)의 차이점은 무엇입니까? (0) | 2023.09.04 |
---|---|
Angular 2의 하위 구성 요소에서 상위 구성 요소 속성 업데이트 (0) | 2023.09.04 |
-1103 오류 Domain=NSURLerrorDomain Code=-1103 "리소스가 최대 크기를 초과합니다" iOS 13 (0) | 2023.09.04 |
IIS Express를 클래식 파이프라인 모드로 강제 설정 (0) | 2023.09.04 |
전체 화면을 채우시겠습니까? (0) | 2023.08.30 |