GitHub Actions에서 Python 의존성 설치 시간을 단축하려면, 캐시(Cache)를 활용해서 이미 설치한 라이브러리를 재사용하도록 구성하는 방법이 가장 간단하고 효과적입니다. 특히 actions/cache를 이용해 pip가 내려받은 패키지를 캐싱해두면, 매번 새로 설치할 필요가 없어져 실행 시간이 크게 단축됩니다.
아래와 같이 케시 작업을 workflow내에 추가합니다.
- name: Cache pip dependencies
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }}
restore-keys: |
${{ runner.os }}-pip-
설명하자면 아래와 같습니다.
- uses: actions/cache@v2: GitHub 마켓플레이스에서 공식 엑션을 쓰겠다는 것입니다. 버전은 v2입니다. 현재나와있는 버전은 v4까지지원된다고하며, 2025년 2월 1일내에 v4또는 v3로 버전업하라고 안내가 되어있내요.
- path: ~/.cache/pip: pip가 패키지를다운로드할 때 사용하는 캐시 디렉터리입니다. pip install이 실행되면 라이브러리를 먼저 '~/.cache/pip'에 설치를 진행합니다. 이 경로를 캐시해둠으로써, 다음 엑션시에 패키지 다운로드 과정을 스킵합니다.
- key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }} : 캐시를 구분하기 위한 식별자입니다. runner.os은 (os별로 캐시를 구분하는 역할, 예, linux, Windows, macOS)에 해당합니다. 그리고 뒤에 hashFiles('requirements-dev.txt') 은 의존성 목록에 해당하는 'requirements-dev.txt'을 해시하여(checksum)하여 키에 추가합니다. 만일 'requirements-dev.txt'가 일부라도 바뀐다면 체크섬이 다르기에 새로운 캐시를 생성합니다.
- restore-keys: |: 키가 완전히 일치하지 않는 경우, 접두사(Prefix)와 일치하는 근접한 캐시를 살펴보기 위한 명령입니다. 딱히 필요없을 수 도 있습니다. 이 기능은 위의 key가 'Linux-pip-'라는 것으로 시작하기만해도 비슷한 내용으로 일부라도 캐시를 사용하겠다는 것입니다.
첫 적용시에는 아래와 같이 cache pip dependencies에 key을 조회하고 설치가 없다고 나옵니다.
같은 액션에서, 하단에 케시를 아래와 같이 저장합니다.
이후, 이 엑션이 다시 실행되면 아래와 같이 케시를 사용하는 것을 알 수 있습니다.
주의
* actions/cache 사용시 캐시 크기 제한이 약5GB가 있으므로, 너무 큰 라이브러리는 불가능할 수 있습니다.
'Data science' 카테고리의 다른 글
[5분 안에 이해하는] 프롬프트 엔지니어링 핵심기법: Few shot ,CoT, SC, ReACT, RAG (0) | 2024.04.15 |
---|---|
구글드라이브 파일 wget 사용하기 (0) | 2022.11.11 |
오토마우스: 간호사, 의사 보수교육 사이버연수 자동클릭 (0) | 2022.10.29 |
Data structure (0) | 2020.01.28 |
데이터사이언티스트 면접 (0) | 2020.01.15 |