반응형

컴퓨터 46

[NNI] Dependency-aware Mode

*본 포스팅은 NNI 도큐먼트의 'Dependency-aware Mode' 항목을 번역한 것입니다. (nni.readthedocs.io/en/latest/Compression/DependencyAware.html) Dependency-aware Mode for Filter Pruning 지금까지 FPGM, L1, L2 APoZ Filter Pruner와 같이 컨볼루션 레이어를 위한 필터 프루닝 알고리즘을 봤다. 필터 프루닝 알고리즘은 컨볼루션 신경망을 독립적으로 프루닝한다. 그리고, 컨볼루션 레이어를 프루닝하는 동안 알고리즘은 각 규칙(예: L1-norm)에 따라 필터의 중요도를 계산하고 덜 중요한 필터를 프루닝한다. Dependency analysis utils에서 봤던 것처럼 두 개의 컨볼루션 레이어..

컴퓨터/Etc 2020.10.29

Neural Processor (NPU)

뉴럴 프로세서는 머신러닝 알고리즘을 실행하는데 필요한 control이나 arithmetic logic을 갖고 있는 특화된 프로세서다. 종종 tpu, nnp, ipu와 같은 이름으로도 불린다. cnn같은 dnn을 실행하는건 보통 수십회의 iteration을 돌려야한다. 근데 특징은 반복되는 연산을 한다는 거. 가령 cnn의 연산량의 대부분을 차지하는 것은 convolution인데, 이는 규칙성을 갖고 있으니 이 점을 이용해 전용 뉴럴 프로세서를 개발한다. 대개 systolic array를 사용한다. 이는 convolution의 연산결과가 어차피 다음 레이어에서도 쓰일 것이니 이걸 메모리에 저장하지 않고 systolic array라는 임시 저장 장치에 넣어두고 계산할 때마다 바로바로 쓰면 메모리 접근 횟수를..

컴퓨터/Etc 2020.07.30

Pycharm 원격 인터프리터로 빌드하기

1. 파이참 톱니바퀴 모양 configuration을 눌러 Prefences를 클릭 2. Default Project 항목의 Project Interpreter를 클릭 3. Project Interpreter에서 톱니바퀴 모양을 클릭하면 Add가 나오는데 클릭 4. SSH Interpreter에서 New server configuration에 있는 Host에 서버 주소, Port에는 포트 번호 입력, Username에는 서버 아이디 입력 5. 비밀번호 입력한 뒤에 서버 내에서 자기가 쓸 인터프리터 클릭 (Anaconda3를 사용하는 경우에는 보통 Anaconda3 > envs > 가상환경 > bin > python 요렇게 드가면 있다.) 여기까지 하면 원격 인터프리터를 파이참에 등록. 6. Create ..

컴퓨터/Etc 2020.04.27

[OS] Thread (3)

이전에서 스레드 모델 이야기를 했다. 유저 레벨 스레드의 경우, 스레드를 제한없이 만들 수 있다는 등의 이야기를 했는데 스레드를 많이 사용하다보면 이를 생성/제거하는 것이 성능상의 오버헤드가 될 수 있다. 관리를 잘 못해주면 프로그램이 오작동할 수도 있다. 그래서 이를 잘 관리 해주기 위해 implicit threading을 해주는 툴들이 개발됐다. 이 툴들은 스레드 생성/관리를 런타임 라이브러리, 컴파일러를 통해 사용된다. 툴에는 Thread Pool과 OpenMP 두가지가 대표적이다. Thread Pool 서버-클라이언트 시스템에서 스레드를 사용하는 모델이 있다고 생각해보자. 클라이언트가 서버에 리퀘스트를 보내면, 서버는 이를 실행시키기 위해 스레드를 생성하여 리퀘스트를 핸들링할 것이다. 그리고 작업..

[ACA] Advanced Cache Optimization

Way Prediction (to reduce hit time) Idea: 다음 캐시에 어떤 way나 block이 사용될 지 예측하자. - Set-associative cache는 블록을 묶어서 캐시 미스를 줄였지만 태그 매칭하는 것이 오버헤드가 된다. 만약에, 다음 캐시에 어떤 way나 block이 사용될 지 예측하여 캐싱을 해두면 성능 향상을 가져올 수 있을 것이다. 1. 예측이 맞다면, hit time을 줄일 수 있을 것이다. 그리고 다른 엔트리를 훑어보지 않아도 되기 때문에 에너지 소모가 적어진다. 2. 예측이 틀리면, 다른 엔트리를 확인해야 하기 때문에 hit time이 늘어날 것이다. 실행하는 프로그램의 지역성(locality)이 높아서 어떤 way나 block이 사용될 지 쉽게 예측할 수 있..

[Compiler] Formal Language (형식 언어)

Language는 Nautral Language와 Formal Language로 나뉜다. Natural Language는 한국어, 영어, 중국어와 같은 일상 언어를 지칭한다. 이는 진화한다는 특징을 갖고 있다. 100년, 200년 전에 쓰이던 한국어와 현재 쓰이는 한국어가 다른 것을 생각해보면 된다. 두번째로는 언어에 융통성, 내지는 유연성이 있다. 두 사람이 표준어가 아닌 말을 하더라도 의사소통에는 지장이 없는 것을 생각해보면 된다. 반면, Formal Language는 유연성이 없고, 정확한 포맷을 갖고서, 엄격한 규칙을 갖고서 이야기를 해야한다. C, C++, Java와 같은 언어의 끝에는 세미콜론을 꼭 붙이는 것을 생각해보면 된다. Formal Language를 알기 위해서는 Language와 G..

반응형