본문 바로가기

전체 글465

A Survey of Quantization Methods 리뷰 References A Survey of Quantization Methods for Efficient Neural Network Inference (link) Introduction 딥러닝이 급속도로 발전하면서 모델의 크기는 기하급수적으로 커졌고, 이로 인하여 제한된 리소스의 어플리케이션들에 배포하는 것이 불가능해졌다. 즉, 리소스가 제한되는 환경에서 높은 에너지 효율과 정확도로 실시간 추론이 필요한 분야에서 딥러닝을 활용하는데 문제가 된다. 이는 실시간 헬스케어 모니터링, 자율주행, 오디오 분석, 음성 인식 등 다양한 어플리케이션에 큰 영향을 미칠 것으로 예상된다. 최적의 정확도와 함께 효율성 및 실시간성을 달성하기 위한 많은 연구가 이루어지고 있다. 이러한 연구는 크게 다음과 같이 분류될 수 있다... 2024. 2. 13.
Integer Quantization for Deep Learning Inference 리뷰 References Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation (link) 이 논문은 뉴럴 네트워크의 INT quantization에 대한 수학적인 배경과 성능과 관련하여 quantization parameter를 선택하는 몇 가지 방법을 이야기한다. 또한, quantization workflow를 제안하며 이를 통해 모든 네트워크에서 1% 이내의 정확도 손실로 양자화할 수 있다는 것을 보여준다. Intro 양자화(quantization) 기법은 높은 처리량의 integer instruction을 활용하여 딥뉴럴 네트워크의 크기를 줄이고 추론 속도를 향상시킬 수 있다. 일반적으로 32비트의 si.. 2024. 2. 7.
High Performance C++ References Ch 9, The Art of Writing Efficient Programs Contents Move Semantics RVO (Return Value Optimization), Named RVO (NRVO) How to Avoid (Unnecessary) Copying Unnecessary Memory Allocations Memory Management in Concurrent Programs Optimization of Conditional Execution 이번 포스팅에서는 C++에서 고효율의 코드를 작성하는 방법에 대해서 살펴보고, 수행하고자 하는 작업을 명확하게 표현하는 코드를 작성하는 것에 대해서 살펴본다. 포스팅에서 사용된 전체 코드는 링크에서 확인할 수 있다. Unn.. 2024. 2. 5.
Concurrent Data Structures References Ch 6, The Art of Writing Efficient Programs Contents Building Blocks for Concurrent Programming Counters and Accumulators Publishing Protocol Publishing Pointer Thread-Safe Shared Pointer (Atomic Shared Pointer) 포스팅에서 사용된 모든 코드는 link에서 확인할 수 있음 동시 프로그램 개발은 일반적으로 상당히 어려운 편에 속한다. 특히 몇 가지 요소에 의해서 더 어려워진다. 예를 들어, 정확성과 효율성을 모두 만족하는 동시 프로그램, 뮤텍스가 많은 복잡한 프로그램이나 lock-free 프로그램은 더욱 어렵다. 이러한 복잡.. 2024. 2. 3.
Lock-Based, Lock-Free, Wait-Free Program References Ch6, The Art of Writing Efficient Programs Contents Amdahl's Law Compare-And-Swap (CAS) Lock-based, Lock-free, and Wait-free Programs Spinlock Deadlock, Livelock, Convoying 포스팅에서 사용되는 전체 코드는 link를 참조 Memory Model (Memory Order and Barrier) References Ch5, The Art of Writing Efficient Programs Contents Concurrency and Order Memory Model (Memory Order and Barrier) Relaxed Memory Order A.. 2024. 2. 2.
Memory Model (Memory Order and Barrier) References Ch5, The Art of Writing Efficient Programs Contents Concurrency and Order Memory Model (Memory Order and Barrier) Relaxed Memory Order Acquire-Release Memory Order Release Memory Order Sequentially Consistent Memory Order Threads and Memory References Ch5, The Art of Writing Efficient Programs Contents Threads and Memory (Data Sharing) Concurrency and Memory Syncrhonization Mutex, Ato.. 2024. 1. 27.
Threads and Memory References Ch5, The Art of Writing Efficient Programs Contents Threads and Memory (Data Sharing) Concurrency and Memory Syncrhonization Mutex, Atomic Variables False Sharing 요좀 고성능 컴퓨터는 여러 CPU를 가지거나 여러 CPU 코어를 갖는다. 대부분의 노트북도 최소 2개에서 4개의 코어를 가지고 있다. 성능 측면에서 효율이 높으려면 하드웨어를 유후 상태로 두지 않아야 한다. 많은 CPU 코어 중 하나만 사용하는 것과 같이 전체 하드웨어 성능의 일부만 사용하는 경우에는 프로그램이 효율적이거나 고성능일 수가 없다. 프로그램이 한 번에 둘 이상의 프로세서를 사용하는 방법.. 2024. 1. 25.
Cache References Ch4, The Art of Writing Efficient Program Contents Memory Architecture Measuring Memory Access Speed Optimizing Memory Performance 포스팅에서 사용된 모든 코드는 link에서 확인할 수 있다. CPU 다음으로 메모리가 전체 프로그램의 성능을 제한하는 경우가 많다. 이번 포스팅에서는 현대 메모리의 아키텍처, 약점, 그리고 이러한 약점을 해결하거나 최소한 숨기는 방법에 대해 살펴본다. 많은 프로그램에서 성능은 프로그래머가 하드웨어의 기능을 활용하여 메모리 성능을 얼마나 향상하는지에 전적으로 달려있다. Superscalar Instruction-Level Parallelism (ILP) R.. 2024. 1. 22.
Pipelining & Branch Optimizations References Ch3, The Art of Writing Efficient Programs Contents CPU Pipelines and Speculative Execution Branch Optimization and Branchless Computing (branch prediction) Branchless Computing 이전 포스팅에 이어서 CPU 아키텍처 이해를 바탕으로 수행되는 최적화에 대해서 살펴보자. Instruction-Level Parallelism (ILP) References Ch3, The Art of Writing Efficient Program Contents CPU Architecture Internal concurrency of the CPUs for optimum.. 2024. 1. 21.
Instruction-Level Parallelism (ILP) References Ch3, The Art of Writing Efficient Program Contents CPU Architecture Internal concurrency of the CPUs for optimum performance (Super Scalar, ILP) Visualizing ILP CPU Architecture 효율적인 프로그램은 사용 가능한 리소스를 낭비하지 않으며 최대한 활용하는 프로그램이다. 일반적으로 성능(performance)은 특정 목표를 가지고 정의되기 때문에 간단하게 고성능 프로그램을 정의할 수는 없다. 다만, 일반적으로 아래의 두 성능에 대해 크게 관심을 갖는다. Computational Performance Throughput 이 두 가지 성능은 효율성과 밀접한.. 2024. 1. 20.