컴퓨터 시스템에서 캐시(cache)는 데이터 처리 속도를 향상시키는 중요한 역할을 한다.
오늘은 소프트캐시와 하드캐시의 차이점과 각각의 역할과 목적을 정리해보려한다.
하드캐시 (Hardware Cache)
하드캐시는 CPU 또는 GPU 내부에 위치한 빠른 메모리 공간인데, 속도가 느린 주 기억장치(RAM)와 빠른 CPU/GPU 사이의 속도 차이를 극복하기 위해 사용된다. 하드캐시는 자주 접근하는 데이터와 명령어를 저장하여, 프로세서가 빠르게 접근할 수 있도록 도와주며, 당연하지만, 하드캐시의 경우 내부가 가득찼을때 또는 새로운 데이터가 필요할때, 내부 매커니즘에 따라 삭제를 진행한다. 가장 대표적으로 LRU(Least Recently Used)와 같은 알고리즘을 사용한다.
특징:
매우 빠른 접근 속도.
용량이 제한적.
자동 관리되며 사용자 개입 불필요.
역할:
시스템의 전반적인 성능 향상.
데이터 처리 효율성 증가.
소프트캐시 (Software Cache)
소프트캐시는 소프트웨어 레벨에서 구현된 캐시로, 하드 디스크나 SSD에 위치하며, 이는 주로 대규모 데이터셋, 다운로드한 파일, 웹 콘텐츠 등을 임시로 저장하는 데 사용된다.
특징:
사용자가 설정 및 관리할 수 있음.
더 큰 용량을 제공하지만, 하드웨어 캐시보다 접근 속도가 느림.
네트워크 대역폭 및 시간 절약에 도움.
역할:
반복적인 데이터 다운로드 최소화.
오프라인 데이터 접근 향상.
성능 최적화 및 사용자 경험 개선.
소프트웨어 캐시의 예시: SentenceTransformer
딥러닝 모델으 활용함에 있어, soft cache를 사용하는 예시를 들자면,
SentenceTransformer와 같은 HuggingFace의 모델을 로드할때를 예로 들 수 있는데,
자연어 처리 분야에서 사용되는 사전 학습된 모델을 캐시하는 데 소프트웨어 캐시를 사용한다.
이는 문장 임베딩을 생성하는 데 사용되는 도구로, 다음과 같이 작동한다.
Model Load:
SentenceTransformer는 SentenceTransformer('모델명')을 통해
Hugging Face의 모델 허브에서 사전 학습된 모델을 불러온다.
Cache 사용:
처음 모델을 다운로드할 때, 모델 데이터는 소프트웨어 캐시 디렉토리에 저장하는데,
이후 모델을 사용할 때, 캐시된 데이터를 불러와 시간과 네트워크 자원을 절약할 수 있다.
Cache 관리:
사용자는 환경 변수나 cache_folder 옵션을 통해 캐시 디렉토리를 설정할 수 있고,
이를 통해 사용자는 캐시 데이터의 저장 위치를 제어하고 관리할 수 있다.
위 내용을 정리 하면, 하드캐시와 소프트캐시는 각기 다른 방식으로 컴퓨터 시스템의 성능을 최적화한다. 하드캐시는 CPU/GPU의 빠른 데이터 처리를 위해, 소프트캐시는 대용량 데이터의 효율적 관리를 위해 사용된다. SentenceTransformer 같은 도구를 사용할 때 소프트캐시의 역할은 데이터 접근성과 효율성을 크게 향상시키며, 이러한 캐시 메커니즘의 이해는 데이터 처리와 관련된 다양한 작업에서 중요한 역할을 하게된다.
'DEVELOP_NOTE > 그 외' 카테고리의 다른 글
[CUDA] torch.cuda.is_available() 를 True로 만들자! (GPU셋팅하기) (0) | 2023.07.21 |
---|---|
[GitLab]소스코드 관리, GitLab으로 완벽 해결하기 (0) | 2023.07.21 |
[Flower]Celery웹 모니터링 도구 'Flower'을 분해해보자. (0) | 2023.03.29 |
[WAS]Django를 활용한 웹 어플리케이션 구조 분해 (0) | 2023.03.26 |
[Git]Branch 조회 & 기본 Branch 변경 (0) | 2023.03.24 |