익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
텐서 압축
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
텐서 압축(Tensor Compression)은 고차원 배열(텐서)을 저장·처리할 때 메모리 사용량과 계산 복잡도를 줄이기 위해 희소성(sparsity) 또는 저차(rank) 구조를 이용하여 데이터를 압축하는 기법이다. ==개념== 고차원 텐서란 3차원 이상(예: 3‑way, 4‑way…) 배열을 의미하며, 텐서 압축은 이러한 배열에서 대부분이 0이거나 중요도가 낮은 원소를 효율적으로 표현하는 방식이다. 압축 기법은 대략 두 가지 축을 따른다: *희소 저장(sparse storage) — 비제로(non‑zero)가 극히 적은 텐서에서 인덱스‑값 쌍만 저장하는 방식 *저차 분해(low‑rank decomposition) — 텐서를 여러 저차 텐서의 곱 또는 합으로 나타내어 차원 또는 순위를 줄이는 방식 ==구성 요소 및 방식== 텐서 압축에서 흔히 쓰이는 일부 형식은 다음과 같다: *Compressed Sparse Fiber(CSF) 형식 — 다차원 텐서의 섬유(fiber)를 기준으로 계층적 압축을 수행하는 방식 *좌표 형식(Coordinate, COO) 확장 — 텐서의 각 비제로 원소를 (모드1 인덱스, 모드2 인덱스, …, 값) 형태로 저장하는 방식 *혼합형 모드 압축(level‑based) — 각 차원(모드)에 대해 ‘dense’ 또는 ‘compressed’ 저장 여부를 지정하는 방식 이들 방식은 각각 다음 배열 구조를 가진다: *values — 비제로 원소들의 값 배열 *indices 모드별 배열 — 각 비제로 원소의 각 차원 인덱스를 저장 *pointer 또는 pos 배열 — 특정 모드(또는 계층)에서 섬유가 시작되는 위치 정보를 저장 ==특징 및 동작== *희소 텐서에서 메모리 사용량을 대폭 절감할 수 있다. 예컨대 대부분 원소가 0인 경우 저장량을 비제로 개수 수준으로 줄일 수 있다. *텐서 연산(예: 텐서·행렬 곱, 텐서 분해)에서 불필요한 0 연산을 회피할 수 있어 성능 개선이 가능하다. *하지만 압축 형태가 복잡할수록 인덱스 관리, 탐색, 업데이트가 까다로워질 수 있다. *텐서의 차원(모드) 수가 많아질수록 압축 인덱스의 중복 제거나 탐색 비용이 증가할 수 있다. ==장점== *대용량 고차원 데이터셋(예: 추천 시스템의 사용자×아이템×시간, 과학적 시뮬레이션의 공간×시간×파라미터 등)에서 저장 공간 및 메모리 대역폭을 효율적으로 사용 가능하다. *연산 시 불필요한 0 또는 미사용 원소를 건너뛰어 계산 비용을 낮출 수 있다. *다양한 라이브러리나 컴파일러 인프라에서 지원되기 시작하고 있어 활용성이 증가하고 있다. ==단점== *압축된 형식에 맞춘 알고리즘을 설계해야 하므로 구현이 복잡해질 수 있다. *압축‑저장 방식이 특정 연산 방식이나 하드웨어에 적합하지 않을 수 있다. 즉, 형식과 연산 패턴이 맞아야 효율이 올라간다. *압축 상태에서의 동적 수정(예: 원소 삽입, 삭제, 구조 변경)이 어렵거나 비효율적일 수 있다. ==응용 및 변환== *머신러닝 및 데이터마이닝 영역에서 희소 텐서 분해(sparse tensor decomposition), 텐서 회귀 분석 등에 사용된다. *컴파일러 및 하드웨어 설계에서는 텐서 압축 저장 형식을 명시하고 그에 최적화된 코드·하드웨어를 생성하는 연구가 진행 중이다. *압축 방식 간 변환도 가능하며, 예컨대 COO 형식으로 표현된 희소 텐서를 CSF 형식으로 변환하여 연산 효율을 높이는 방식 등이 있다. ==예시== 다음은 3‑모드(3차원) 희소 텐서를 압축 저장하는 간단한 예이다. 텐서 X 형태: 차원 (I×J×K) = (3×3×2) 비제로 원소: *X[0,1,0] = 5 *X[2,2,1] = 7 *X[1,0,1] = 4 위 비제로 원소만 저장한다고 가정하면, 좌표 형식(COO 방식 확장)으로는 다음과 같이 저장할 수 있다: *indices_mode0 = [0, 2, 1] *indices_mode1 = [1, 2, 0] *indices_mode2 = [0, 1, 1] *values = [5, 7, 4] 보다 효율적인 형식으로 모드‑0를 ‘compressed’, 모드‑1 · 모드‑2를 좌표로 저장하는 CSF 유사 방식이라면 다음과 같은 구조를 쓸 수 있다: *ptr_mode0 = [0, 2, 3] (모드‑0 인덱스별 값 시작 위치) *indices_mode0 = [0, 2, 1] *indices_mode1 = [1, 2, 0] *indices_mode2 = [0, 1, 1] *values = [5, 7, 4] 이렇게 하면 각 모드‑0 인덱스(0, 2, 1)마다 연관된 비제로들이 연속 저장되고, 모드‑0를 기준으로 빠르게 섬유(fiber) 단위 접근이 가능하다. ==같이 보기== *[[희소 행렬 압축]] *[[COO (압축)]] *[[CSR (압축)]] ==참고 문헌== *Tew, P. A., Meng, J. “An investigation of sparse tensor formats for tensor libraries.” MIT, 2016. *Baskaran, M. et al. “Efficient and Scalable Computations with Sparse Tensors.” IEEE HPEC, 2012. *Helal, A. E. et al. “ALTO: Adaptive Linearized Storage of Sparse Tensors.” arXiv:2102.10245, 2021. ==각주== [[분류:인공지능]] [[분류:압축]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록