가상 환경 (Virtual Environment)

컴퓨터과학·AI
한 줄 정의: 프로젝트마다 독립된 파이썬(또는 다른 언어) 실행 환경과 패키지 버전을 구성해, 서로 다른 프로젝트 간의 라이브러리 충돌을 방지하는 격리 기법.

쉽게 풀면

컴퓨터 한 대에서 여러 연구 프로젝트를 진행하다 보면, 프로젝트마다 필요한 라이브러리 버전이 서로 다를 수 있다. 한 프로젝트에는 특정 라이브러리의 옛날 버전이 필요하고 다른 프로젝트에는 최신 버전이 필요하면 충돌이 생긴다. 가상 환경은 프로젝트별로 독립된 별도의 설치 공간을 만들어, 서로 다른 버전의 라이브러리를 각자의 상자 안에서 문제없이 쓸 수 있게 해준다. conda나 venv가 널리 쓰이는 도구이다.

왜 중요한가

연구 재현성(reproducibility)은 계산과학·데이터과학 논문 전반에서 중요한 평가 기준인데, 사용한 라이브러리 버전이 조금만 달라져도 결과가 재현되지 않는 경우가 흔하기 때문에 가상 환경을 통한 의존성 명시는 실험 신뢰성을 뒷받침하는 기본 절차로 다뤄집니다. 또한 여러 연구자가 협업하거나 코드를 공개할 때 동일한 환경을 손쉽게 재구성할 수 있게 해준다는 점에서, 오픈사이언스와 재현 가능한 연구 관행을 논의하는 방법론 섹션에서 자주 언급됩니다.

논문에서는 이렇게 쓰입니다

"모든 실험은 conda로 생성한 독립적인 파이썬 3.9 가상 환경에서 실행되었다."

다른 프로젝트와의 라이브러리 충돌을 막기 위해 이 연구 전용으로 격리된 파이썬 실행 환경을 만들어 실험을 진행했다는 뜻이다.

"연구 재현성을 위해 사용된 모든 패키지 버전은 requirements.txt로 고정하고, 별도의 venv 가상 환경에서 학습을 재현하였다."

사용한 라이브러리 버전을 정확히 기록해 두고, 그 목록대로 독립된 환경을 다시 만들어 동일한 결과가 나오는지 확인했다는 뜻이다.

"딥러닝 모델 학습을 위한 가상 환경은 도커 이미지 내부에 conda 환경으로 구성하여 서버 간 이식성을 확보하였다."

여러 대의 서버에서 똑같은 실험 환경을 쓸 수 있도록, 도커라는 더 큰 격리 단위 안에 가상 환경을 함께 넣어 구성했다는 의미다.

조금 더 깊게 보면

가상 환경은 파이썬 인터프리터와 설치된 패키지들의 경로를 프로젝트별로 분리하는 방식으로 동작하며, venv는 표준 라이브러리에 내장된 경량 도구인 반면 conda는 파이썬 외의 시스템 라이브러리나 다른 언어 패키지까지 함께 관리할 수 있다는 차이가 있습니다. 다만 가상 환경은 어디까지나 언어·패키지 수준의 격리이므로, 운영체제 버전이나 하드웨어 드라이버 차이까지 통제하려면 도커 컨테이너와 같은 더 상위 수준의 격리 기술이 함께 필요한 경우가 많습니다.

주의할 점

가상 환경 자체는 도커 컨테이너와 달리 운영체제 수준까지는 격리하지 않으며, 파이썬 패키지 등 언어 차원의 의존성만 분리해 준다.

관련 용어