SYDLAB_inha/AI semiconductor

AI.semi - 수상작 review 및 idea..

빈그레 2023. 10. 27. 14:42

 

 

 


 

 

 

인공지능 반도체에서는 큰 size의 내부 buffer를 사용하지 않는다.

 

*** buffer : 데이터를 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영

 

큰 size의 input buffer를 사용하게 되면 작은 input을 다룰 때에는 input buffer가 모두 사용되지 않아, 하드웨어적 낭비가 심하다. 하지만 외부 메모리의 접근을 줄일 수는 있음!! 

 

하드웨어적 낭비를 최소화하기 위하여 

buffer를 layer의 특성에 맞춰서 다양하게 활용 가능하도록  

 

하나의 버퍼를 다양한 용도로 사용하는 방법 -> 위험 //mux와 routing이 복잡해짐 

-> 주소값으로 접근해서 datapath 하나로

 

 


on-chip memory 제한적  -> 효율적 계산 필요

 

 

초반 layer : input feature 의 값이 많고 parameter 값이 적음

 

후반 layer : input feature map은 줄어드나, parameter값이 많아짐

 

모든 data를 모두 on-chip memory(buffer)에 저장할 수없어 off-chip memory인 DRAM에서 불러와야함

-> DRAM에서 가져올 때는 시간이 오래걸리고 power 소모가 큼  -> 내부 메모리 최대한 활용하기

 

내부에서 처리할 data와 외부에서 가져올 data에 대한 구분이 필요함 // 어떤 데이터를 안에 둘 것이냐

 

#Data flow

 데이터를 어떻게 전달하느냐가 성능에 가장 큰 영향을 미침 

 layer에 맞추어 data flow 조절

 

 

 


target network

 

quantization : 속도를 높이고 에너지 소모를 줄인다.

 

Flating point  : 실수를 컴퓨터에서 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 표현하는 방식

 

fixed point :  실수를 컴퓨터에서 표현할 때 소수점의 위치를 고정하여 해당하는 실수를 표현하는 방식

 

Quantization 방법도 여러가지가 ..있다..? DCT 에 쓰이는 거 말고 다른 거 더 찾아보기

 

 

맨 처음 layer와 마지막 layer만 dram에 접근하도록 설계 //나머지는 on-chip에

data가 커서 on-chip에 모두 저장할 수 없는 경우 convolution hiding을 통해,

off-chip에서 weight를 읽어오는 동안 나머지 연산을 전부 처리하도록 설계

//읽어오는 동안 연산처리해서 delay 안 생기게 

 

 

일반적으로 NPU에서는 feature map, weights, scale bias를 각각 다른 buffer에 저장하는 방법이 쓰임

CNN에서는 layer마다 data 저장 공간 차이가 많이 남 // layer마다 feature map 크기와 weight크기에 차이가 있음

 

차이를 커버하기 위해 하드웨어 낭비가 생길 수 있음 //큰 거 기준으로 잡아서

-> global buffer 사용하여 각 layer 의 data간 memory를 공유할 수 있도록 설계 -> on-chip 활용도 올림

 

 

 

 


https://www.youtube.com/watch?v=adtbRxg-ZOI

 

 

  1. 모델 압축:
    • 통합 양자화 (Quantization): 가중치와 활성화를 표현하는 비트 수를 줄이는 양자화를 사용하여 모델 파라미터를 압축할 수 있습니다.
    • 가중치 클러스터링: 유사한 가중치를 그룹화하고 대표 가중치를 사용하여 모델 크기를 줄입니다.
  2. 피쳐 압축:
    • 이산 웨이블릿 변환 (Discrete Wavelet Transform): 피쳐 맵을 변환하여 세부 정보와 근사치로 분리하고 중요한 정보만 유지합니다.
    • 텐서 압축: 텐서 분해 기술을 사용하여 텐서를 저차원으로 표현하고, 중요한 부분만 유지하는 방법입니다.
  3. 데이터 압축:
    • Run-Length Encoding (RLE): 연속된 값이나 패턴을 나타내어 데이터를 압축합니다.
    • Huffman Coding: 데이터의 빈도에 따라 가변 길이의 코드를 사용하여 압축합니다.
  4. 메모리 효율적인 구조:
    • 효율적인 메모리 배치: 데이터를 메모리에 효율적으로 배치하여 데이터 로딩 및 저장을 최적화합니다.
    • 메모리 버퍼링: 메모리에 미리 로드된 데이터를 재사용하여 전체적인 메모리 액세스를 줄입니다.
  5. 전송 최적화:
    • 분할 및 전송 (Slice and Transfer): 대용량 데이터를 작은 블록으로 나누어 전송하고 필요한 경우에만 필요한 블록을 전송하여 대역폭을 절약합니다.
  6. 동적 메모리 할당 최적화:
    • 메모리 요구 사항 동적 조절: 실행 중에 메모리 요구 사항에 따라 동적으로 메모리를 조절하여 효율적으로 사용합니다.

 

 

 

 

 

 

DCT(Discrete Cosine Transform)와 Wavelet 변환은 모두 신호 처리 및 데이터 압축 분야에서 사용되는 변환 기술이지만, 몇 가지 중요한 차이점이 있습니다.

  1. 기저 함수 (Basis Functions):
    • DCT: DCT는 코사인 함수를 기저 함수로 사용합니다. 주로 이미지 및 음성 압축에서 사용되며, 이미지 또는 음성 신호의 에너지 집중이 적은 부분을 제거하여 압축을 달성합니다.
    • Wavelet 변환: 웨이블릿 변환은 다양한 웨이블릿 함수를 기저 함수로 사용합니다. 이러한 함수는 시간 및 주파수 영역에서 로컬한 정보를 표현하는 데 효과적입니다. 웨이블릿은 신호의 특정 부분에 집중하여 세부 정보를 추출할 수 있습니다.
  2. 표현 능력:
    • DCT: DCT는 에너지가 집중된 신호를 잘 표현할 수 있습니다. 하지만 고주파 성분에 대한 능력이 상대적으로 떨어지는 특징이 있습니다.
    • Wavelet 변환: 웨이블릿은 다양한 주파수 대역에서 신호를 분석하므로 고주파와 저주파 성분에 대한 정보를 더 효과적으로 표현할 수 있습니다.
  3. 다중 해상도 분석:
    • DCT: DCT는 고정된 해상도에서만 작동하며, 세부 정보와 근사치를 분리하기 어려울 수 있습니다.
    • Wavelet 변환: 웨이블릿은 다중 해상도 분석이 가능합니다. 즉, 원본 신호를 다양한 해상도 레벨로 분해할 수 있어 세부 정보를 다르게 처리할 수 있습니다.
  4. 에너지 보존:
    • DCT: DCT는 에너지를 보존하는 특성이 있습니다.
    • Wavelet 변환: 웨이블릿 변환은 에너지를 보존하지 않는 특성이 있습니다. 이는 웨이블릿 변환을 통해 세부 정보를 추출하면 전체 에너지가 유지되지 않을 수 있다는 것을 의미합니다.

'SYDLAB_inha > AI semiconductor' 카테고리의 다른 글

AI.semi - ppt개요  (0) 2023.11.09
AI.semi - 전문가 멘토링  (0) 2023.11.09
AI. semi - MPEG 압축 알고리즘  (0) 2023.10.25
AI.semi - Encoder & Decoder (for image compression)  (0) 2023.10.25
AI.semi - 1차 미팅 정리  (0) 2023.10.25