<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devhrxoobm.itwiki.kr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EC%9D%B8%EA%B3%B5%EB%AC%B4%EB%8A%A5</id>
	<title>IT 위키 - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://devhrxoobm.itwiki.kr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EC%9D%B8%EA%B3%B5%EB%AC%B4%EB%8A%A5"/>
	<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/w/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/%EC%9D%B8%EA%B3%B5%EB%AC%B4%EB%8A%A5"/>
	<updated>2026-09-16T00:18:53Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=PICACHU_(%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5)&amp;diff=41795</id>
		<title>PICACHU (인공지능)</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=PICACHU_(%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5)&amp;diff=41795"/>
		<updated>2025-12-10T21:33:07Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;PICACHU(Plug-In CGRA for Nonlinear Operations in LLMs)&amp;#039;&amp;#039;&amp;#039;는 대규모 언어 모델(LLM)에서 반복적으로 등장하는 비선형 연산(Softmax, GELU, LayerNorm, RMSNorm, RoPE 등)을 전용 하드웨어에서 가속하기 위해 고안된 &amp;#039;&amp;#039;&amp;#039;플러그인(Plug-In) CGRA(Coarse-Grained Reconfigurable Architecture) 기반 가속기&amp;#039;&amp;#039;&amp;#039;이다.  PICACHU는 전용 컴파일러, 연산 알고리즘 최적화, 그리고 비선형 연산 전용 재구성 가능 연산 유닛(FU)...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PICACHU(Plug-In CGRA for Nonlinear Operations in LLMs)&#039;&#039;&#039;는 대규모 언어 모델(LLM)에서 반복적으로 등장하는 비선형 연산(Softmax, GELU, LayerNorm, RMSNorm, RoPE 등)을 전용 하드웨어에서 가속하기 위해 고안된 &#039;&#039;&#039;플러그인(Plug-In) CGRA(Coarse-Grained Reconfigurable Architecture) 기반 가속기&#039;&#039;&#039;이다.  PICACHU는 전용 컴파일러, 연산 알고리즘 최적화, 그리고 비선형 연산 전용 재구성 가능 연산 유닛(FU)을 결합하여 기존 GPU가 병목으로 겪는 비선형 연산을 빠르게 처리하도록 설계되었다.&lt;br /&gt;
&lt;br /&gt;
본 기술은 다음 논문을 기반으로 한다:  Qin, Jiajun, et al. &amp;quot;PICACHU: Plug-In CGRA Handling Upcoming Nonlinear Operations in LLMs.&amp;quot; (ASPLOS 2025).&lt;br /&gt;
==배경: 왜 PICACHU가 필요한가?==&lt;br /&gt;
대규모 언어 모델은 대부분의 연산이 행렬곱(GEMM)으로 구성되며, 이는 GPU에서 매우 빠르게 처리된다.  그러나 다음과 같은 &#039;&#039;&#039;비선형 함수들은 GPU에서 상대적으로 느리고 병목이 된다&#039;&#039;&#039;.&lt;br /&gt;
*Softmax&lt;br /&gt;
*GELU&lt;br /&gt;
*Sigmoid / SiLU&lt;br /&gt;
*LayerNorm / RMSNorm&lt;br /&gt;
*RoPE (Rotary Positional Embedding)&lt;br /&gt;
이 함수들은 다음과 같은 고비용 연산을 포함한다:&lt;br /&gt;
*지수(exp)&lt;br /&gt;
*로그(log)&lt;br /&gt;
*나눗셈(division)&lt;br /&gt;
*제곱근 / 역제곱근(sqrt / inverse sqrt)&lt;br /&gt;
*삼각함수(sin, cos)&lt;br /&gt;
따라서 전체 추론(latency)의 15~30%가 비선형 함수 처리에 소요되는 경우가 발생한다.  &#039;&#039;&#039;PICACHU는 이러한 병목을 완전히 해결하기 위해 설계된 하드웨어 가속기이다.&#039;&#039;&#039;&lt;br /&gt;
==PICACHU의 전체 구조==&lt;br /&gt;
다음 구성요소로 이루어진다.&lt;br /&gt;
===1. Compiler (비선형 연산 탐지 및 오프로딩)===&lt;br /&gt;
PICACHU 전용 컴파일러는 LLM 모델 그래프 내에서 다음 패턴들을 자동으로 탐지한다.&lt;br /&gt;
*&amp;lt;code&amp;gt;call_cgra_GELU&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;call_cgra_SOFTMAX&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;call_cgra_LAYERNORM&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;call_cgra_RMSNORM&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;call_cgra_ROPE&amp;lt;/code&amp;gt;&lt;br /&gt;
탐지된 비선형 연산은 기존 GPU가 아닌 PICACHU CGRA 쪽으로 오프로딩된다.  컴파일러는 다음 과정을 수행한다.&lt;br /&gt;
*패턴 매칭 및 오프로딩&lt;br /&gt;
*Loop Transformation (Unroll &amp;amp; Vectorize)&lt;br /&gt;
*정밀도 변환(FP / INT)&lt;br /&gt;
*CGRA용 제어 신호(Control Signals) 생성&lt;br /&gt;
*Tile 분할 및 맵핑(Tune &amp;amp; Map)&lt;br /&gt;
===2. Algorithm Layer (수학적 최적화)===&lt;br /&gt;
비선형 함수들은 계산 비용을 절감하기 위해 다음과 같은 방식으로 단순화된다.&lt;br /&gt;
*Softmax → 근사 exp + sum + division&lt;br /&gt;
*GELU → 다항식 근사 또는 x·σ(ax + b) 형태로 변환&lt;br /&gt;
*SiLU / Sigmoid → exp 기반 근사&lt;br /&gt;
*LayerNorm → mean/variance 계산 + inverse sqrt 근사&lt;br /&gt;
*RMSNorm → sqrt 근사&lt;br /&gt;
*RoPE → sin/cos 근사 및 LUT 활용&lt;br /&gt;
이 구조는 하드웨어에서 빠르게 수행될 수 있도록 함수들을 &#039;&#039;&#039;기초 수학 연산(exponential, division, inverse sqrt, trigonometric)&#039;&#039;&#039;으로 분해한다.&lt;br /&gt;
===3. Architecture (PICACHU CGRA)===&lt;br /&gt;
PICACHU의 핵심은 구조적으로 재구성 가능한 연산 어레이(FU Array)이다.&lt;br /&gt;
&lt;br /&gt;
주요 구성 요소:&lt;br /&gt;
*Precision-aware Functional Units (FU)&lt;br /&gt;
*Shared Buffer&lt;br /&gt;
*Streaming Interface&lt;br /&gt;
*Local Interconnect Network&lt;br /&gt;
*DMA 엔진&lt;br /&gt;
*CPU 제어 모듈&lt;br /&gt;
CGRA는 특정 비선형 함수에 맞춰 데이터 경로를 재구성하여 최적의 병렬 처리 구조를 만든다.&lt;br /&gt;
==LLM의 비선형 연산 분류==&lt;br /&gt;
PICACHU는 다음과 같은 함수들을 모두 처리한다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Category!!Nonlinear Operation!!Mathematical Operator!!사용 LLM 예시&lt;br /&gt;
|-&lt;br /&gt;
|Activation Function||Softmax||exp, division||OPT, TS 등 대부분&lt;br /&gt;
|-&lt;br /&gt;
|Activation Function||GELU(x), GeLU(U·W + b)||division + exponential||GPT, LLaMA, BLOOM 등&lt;br /&gt;
|-&lt;br /&gt;
|Activation Function||SwiGLU / SiLU(x)||division + exponential||PaLM, DeepSeek, InternLM&lt;br /&gt;
|-&lt;br /&gt;
|Activation Function||ReLU(x) = max(x, 0)||maximum||모든 LLM&lt;br /&gt;
|-&lt;br /&gt;
|Normalization||LayerNorm(x)||inverse square root||GPT, Falcon 등&lt;br /&gt;
|-&lt;br /&gt;
|Normalization||RMSNorm(x)||square root||LLaMA, Qwen 등&lt;br /&gt;
|-&lt;br /&gt;
|Positional||RoPE||sine, cosine||GPT-NeoX, LLaMA 등&lt;br /&gt;
|}문서의 핵심은 다음과 같다:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LLM에서 등장하는 모든 비선형 연산은 결국 &amp;quot;기초적인 수학 연산&amp;quot;들의 조합이며, PICACHU는 이들 연산을 전용 하드웨어에서 가속한다.&#039;&#039;&#039;&lt;br /&gt;
==PICACHU의 장점==&lt;br /&gt;
*비선형 연산의 전용 가속으로 GPU 병목을 제거&lt;br /&gt;
*GEMM과 비선형 연산의 파이프라이닝 가능&lt;br /&gt;
*FP/INT 정밀도 혼합으로 에너지 효율 증가&lt;br /&gt;
*컴파일러가 자동 오프로딩하여 개발자 부담 감소&lt;br /&gt;
*기존 시스템(GPU/CPU)에 플러그인 형태로 통합 가능&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:하드웨어]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%8C%EC%9D%BC%EB%9F%AC_%EA%B7%BC%EC%82%AC&amp;diff=41794</id>
		<title>테일러 근사</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%8C%EC%9D%BC%EB%9F%AC_%EA%B7%BC%EC%82%AC&amp;diff=41794"/>
		<updated>2025-12-10T21:10:15Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;테일러 근사(Taylor approximation, Taylor 다항식)는 어떤 함수 \(f(x)\)를 그 도함수들을 사용하여 특정한 점 근처에서 다항식으로 근사하는 방법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
테일러 근사는 복잡하거나 해석적 표현이 어려운 함수를, 함수의 도함수 값을 이용해 단순한 다항식으로 근사함으로써 계산, 해석, 근삿값 추정 등에 유용한 도구이다. 특히 함수가 충분히 매끄럽고 도함수가 존재할 경우, 국소 근사(local approximation)가 가능하다.&lt;br /&gt;
==정의 및 표현 ==&lt;br /&gt;
함수 \(f\)가 점 \(a\)를 중심으로 \(n\)차까지 도함수가 존재한다면, 그 주변에서의 테일러 \(n\)차 다항식 \(T_n(x)\)는 다음과 같이 정의된다:&lt;br /&gt;
&lt;br /&gt;
\[ T_n(x) = f(a) + f&#039;(a)(x-a) + \frac{f&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;(a)}{2!}(x-a)^2 + \dots + \frac{f^{(n)}(a)}{n!}(x-a)^n \]&lt;br /&gt;
&lt;br /&gt;
즉,  \[ T_n(x) = \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x-a)^k \]&lt;br /&gt;
&lt;br /&gt;
이 다항식은 \(x\)가 \(a\) 근처일수록 \(f(x)\)에 가까워지는 근사치를 제공한다.&lt;br /&gt;
==테일러 정리 (오차항 포함)==&lt;br /&gt;
테일러 근사가 얼마나 정확한지 알려주는 것은 오차(잔차, remainder)항의 존재이다. 만약 추가 조건이 만족된다면 함수 \(f\)는 다음과 같이 표현될 수 있다:&lt;br /&gt;
&lt;br /&gt;
\[ f(x) = T_n(x) + R_n(x) \]&lt;br /&gt;
&lt;br /&gt;
여기서 \(R_n(x)\)는 오차 항이며, 흔히 다음과 같은 형태로 주어진다.&lt;br /&gt;
&lt;br /&gt;
\[ R_n(x) = \frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1} \]  단, \(c\)는 \(a\)와 \(x\) 사이의 어떤 값이다.&lt;br /&gt;
&lt;br /&gt;
이 표현은 중심점 \(a\)에서의 다항식 근사에 대한 정확도를 추정할 수 있게 해 준다.&lt;br /&gt;
==특수한 경우 및 주요 전개==&lt;br /&gt;
*중심점을 0으로 한 근사는 특히 중요하며, 이를 매클로린 급수(Maclaurin series)라고 부른다. 즉 \(a = 0\)일 때의 테일러 전개이다.&lt;br /&gt;
*함수가 무한번 미분 가능하고, 적절한 수렴 조건이 만족되면 무한급수 형태로 극한을 취해 함수의 값을 완전히 복원하기도 한다.&lt;br /&gt;
*예:&lt;br /&gt;
**지수 함수 \(e^x\) : \(e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \dots\)&lt;br /&gt;
**삼각 함수 \(\sin x\), \(\cos x\) 도 비슷하게 전개 가능&lt;br /&gt;
==활용 및 응용==&lt;br /&gt;
테일러 근사는 다음과 같은 분야 및 목적에서 널리 사용된다.&lt;br /&gt;
* 복잡한 함수에 대해 근삿값을 계산할 때&lt;br /&gt;
*수치해석, 컴퓨터 계산에서 함수 값을 근사할 때&lt;br /&gt;
*미분방정식, 최적화, 물리모델 등에서 비선형 함수를 선형 또는 다항식으로 근사하여 해를 구할 때&lt;br /&gt;
*근사 오차 분석 및 수렴성 연구&lt;br /&gt;
===현대적 활용 예시===&lt;br /&gt;
최근 인공지능 및 딥러닝 분야에서도 테일러 근사는 효율적 계산을 위한 수단으로 활용되고 있다.&lt;br /&gt;
&lt;br /&gt;
소프트맥스(softmax) 함수는 분류 모델의 출력 확률을 계산할 때 사용되며, 다음과 같이 정의된다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;\[ \text{softmax}(v_i) = \frac{e^{v_i}}{\sum_j e^{v_j}} \]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이때 지수 함수 \(e^x\)의 계산이 비용이 클 수 있어, 이를 \(2^x\) 형태로 변형하고, 테일러 급수로 근사하여 계산을 단순화하는 방법이 사용된다. 예를 들어,&lt;br /&gt;
&lt;br /&gt;
\[ 2^x \approx 1 + x \ln 2 + \frac{(x \ln 2)^2}{2!} \]&lt;br /&gt;
&lt;br /&gt;
와 같은 2차 근사식을 사용하면, 곱셈과 덧셈만으로 근사 지수값을 빠르게 계산할 수 있다. 이러한 방식은 임베디드 시스템, 실시간 추론 등에서 연산 효율을 높이는 데 유용하다.&lt;br /&gt;
==제한점과 유의사항==&lt;br /&gt;
테일러 근사가 항상 유용한 것은 아니다. 다음과 같은 한계가 있다.&lt;br /&gt;
*함수가 충분히 미분 가능해야 한다.&lt;br /&gt;
*중심점 \(a\)에서 멀리 떨어진 \(x\)에 대해서는 오차가 커질 수 있다.&lt;br /&gt;
*무한급수 전개가 반드시 수렴하는 것은 아니다 — 실제로 다수의 함수에서는 테일러 급수가 존재하더라도 수렴 구간이 제한적일 수 있다.&lt;br /&gt;
==예시==&lt;br /&gt;
예를 들어 함수 \(f(x) = \ln(1 + x)\)을 \(a = 0\)에서 세차 다항식으로 근사하면,  \[ \ln(1 + x) \approx x - \frac{x^2}{2} + \frac{x^3}{3} \]  이 근사는 \(|x| &amp;lt; 1\) 구간 안에서 비교적 정확하다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[매클로린 급수]]&lt;br /&gt;
*[[테일러 정리]]&lt;br /&gt;
*[[급수 전개]]&lt;br /&gt;
*[[소프트맥스 함수]]&lt;br /&gt;
*[[수치해석]]&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:수학]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%8C%EC%9D%BC%EB%9F%AC_%EA%B7%BC%EC%82%AC&amp;diff=41793</id>
		<title>테일러 근사</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%8C%EC%9D%BC%EB%9F%AC_%EA%B7%BC%EC%82%AC&amp;diff=41793"/>
		<updated>2025-12-10T21:08:52Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;테일러 근사(Taylor approximation, Taylor 다항식)는 어떤 함수 \(f(x)\)를 그 도함수들을 사용하여 특정한 점 근처에서 다항식으로 근사하는 방법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
테일러 근사는 복잡하거나 해석적 표현이 어려운 함수를, 함수의 도함수 값을 이용해 단순한 다항식으로 근사함으로써 계산, 해석, 근삿값 추정 등에 유용한 도구이다. 특히 함수가 충분히 매끄럽고 도함수가 존재할 경우, 국소 근사(local approximation)가 가능하다.&lt;br /&gt;
==정의 및 표현 ==&lt;br /&gt;
함수 \(f\)가 점 \(a\)를 중심으로 \(n\)차까지 도함수가 존재한다면, 그 주변에서의 테일러 \(n\)차 다항식 \(T_n(x)\)는 다음과 같이 정의된다:&lt;br /&gt;
&lt;br /&gt;
\[ T_n(x) = f(a) + f&#039;(a)(x-a) + \frac{f&#039;&#039;(a)}{2!}(x-a)^2 + \dots + \frac{f^{(n)}(a)}{n!}(x-a)^n&#039;&#039; \]&lt;br /&gt;
&lt;br /&gt;
즉,  \[ T_n(x) = \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x-a)^k \]&lt;br /&gt;
&lt;br /&gt;
이 다항식은 \(x\)가 \(a\) 근처일수록 \(f(x)\)에 가까워지는 근사치를 제공한다.&lt;br /&gt;
==테일러 정리 (오차항 포함)==&lt;br /&gt;
테일러 근사가 얼마나 정확한지 알려주는 것은 오차(잔차, remainder)항의 존재이다. 만약 추가 조건이 만족된다면 함수 \(f\)는 다음과 같이 표현될 수 있다:&lt;br /&gt;
&lt;br /&gt;
\[ f(x) = T_n(x) + R_n(x) \]&lt;br /&gt;
&lt;br /&gt;
여기서 \(R_n(x)\)는 오차 항이며, 흔히 다음과 같은 형태로 주어진다.&lt;br /&gt;
&lt;br /&gt;
\[ R_n(x) = \frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1} \]  단, \(c\)는 \(a\)와 \(x\) 사이의 어떤 값이다.&lt;br /&gt;
&lt;br /&gt;
이 표현은 중심점 \(a\)에서의 다항식 근사에 대한 정확도를 추정할 수 있게 해 준다.&lt;br /&gt;
==특수한 경우 및 주요 전개==&lt;br /&gt;
*중심점을 0으로 한 근사는 특히 중요하며, 이를 매클로린 급수(Maclaurin series)라고 부른다. 즉 \(a = 0\)일 때의 테일러 전개이다.&lt;br /&gt;
*함수가 무한번 미분 가능하고, 적절한 수렴 조건이 만족되면 무한급수 형태로 극한을 취해 함수의 값을 완전히 복원하기도 한다.&lt;br /&gt;
*예:&lt;br /&gt;
**지수 함수 \(e^x\) : \(e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \dots\)&lt;br /&gt;
**삼각 함수 \(\sin x\), \(\cos x\) 도 비슷하게 전개 가능&lt;br /&gt;
==활용 및 응용==&lt;br /&gt;
테일러 근사는 다음과 같은 분야 및 목적에서 널리 사용된다.&lt;br /&gt;
* 복잡한 함수에 대해 근삿값을 계산할 때&lt;br /&gt;
*수치해석, 컴퓨터 계산에서 함수 값을 근사할 때&lt;br /&gt;
*미분방정식, 최적화, 물리모델 등에서 비선형 함수를 선형 또는 다항식으로 근사하여 해를 구할 때&lt;br /&gt;
*근사 오차 분석 및 수렴성 연구&lt;br /&gt;
===현대적 활용 예시===&lt;br /&gt;
최근 인공지능 및 딥러닝 분야에서도 테일러 근사는 효율적 계산을 위한 수단으로 활용되고 있다.&lt;br /&gt;
&lt;br /&gt;
소프트맥스(softmax) 함수는 분류 모델의 출력 확률을 계산할 때 사용되며, 다음과 같이 정의된다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;\[ \text{softmax}(v_i) = \frac{e^{v_i}}{\sum_j e^{v_j}} \]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이때 지수 함수 \(e^x\)의 계산이 비용이 클 수 있어, 이를 \(2^x\) 형태로 변형하고, 테일러 급수로 근사하여 계산을 단순화하는 방법이 사용된다. 예를 들어,&lt;br /&gt;
&lt;br /&gt;
\[ 2^x \approx 1 + x \ln 2 + \frac{(x \ln 2)^2}{2!} \]&lt;br /&gt;
&lt;br /&gt;
와 같은 2차 근사식을 사용하면, 곱셈과 덧셈만으로 근사 지수값을 빠르게 계산할 수 있다. 이러한 방식은 임베디드 시스템, 실시간 추론 등에서 연산 효율을 높이는 데 유용하다.&lt;br /&gt;
==제한점과 유의사항==&lt;br /&gt;
테일러 근사가 항상 유용한 것은 아니다. 다음과 같은 한계가 있다.&lt;br /&gt;
*함수가 충분히 미분 가능해야 한다.&lt;br /&gt;
*중심점 \(a\)에서 멀리 떨어진 \(x\)에 대해서는 오차가 커질 수 있다.&lt;br /&gt;
*무한급수 전개가 반드시 수렴하는 것은 아니다 — 실제로 다수의 함수에서는 테일러 급수가 존재하더라도 수렴 구간이 제한적일 수 있다.&lt;br /&gt;
==예시==&lt;br /&gt;
예를 들어 함수 \(f(x) = \ln(1 + x)\)을 \(a = 0\)에서 세차 다항식으로 근사하면,  \[ \ln(1 + x) \approx x - \frac{x^2}{2} + \frac{x^3}{3} \]  이 근사는 \(|x| &amp;lt; 1\) 구간 안에서 비교적 정확하다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[매클로린 급수]]&lt;br /&gt;
*[[테일러 정리]]&lt;br /&gt;
*[[급수 전개]]&lt;br /&gt;
*[[소프트맥스 함수]]&lt;br /&gt;
*[[수치해석]]&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:수학]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%8C%EC%9D%BC%EB%9F%AC_%EA%B7%BC%EC%82%AC&amp;diff=41792</id>
		<title>테일러 근사</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%8C%EC%9D%BC%EB%9F%AC_%EA%B7%BC%EC%82%AC&amp;diff=41792"/>
		<updated>2025-12-10T21:01:30Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 테일러 근사(Taylor approximation, Taylor 다항식)는 어떤 함수 \(f(x)\)를 그 도함수들을 사용하여 특정한 점 근처에서 다항식으로 근사하는 방법이다. ==개요== 테일러 근사는 복잡하거나 해석적 표현이 어려운 함수를, 함수의 도함수 값을 이용해 단순한 다항식으로 근사함으로써 계산, 해석, 근삿값 추정 등에 유용한 도구이다. 특히 함수가 충분히 매끄럽고 도함수가 존재...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;테일러 근사(Taylor approximation, Taylor 다항식)는 어떤 함수 \(f(x)\)를 그 도함수들을 사용하여 특정한 점 근처에서 다항식으로 근사하는 방법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
테일러 근사는 복잡하거나 해석적 표현이 어려운 함수를, 함수의 도함수 값을 이용해 단순한 다항식으로 근사함으로써 계산, 해석, 근삿값 추정 등에 유용한 도구이다. 특히 함수가 충분히 매끄럽고 도함수가 존재할 경우, 국소 근사(local approximation)가 가능하다.&lt;br /&gt;
==정의 및 표현==&lt;br /&gt;
함수 \(f\)가 점 \(a\)를 중심으로 \(n\)차까지 도함수가 존재한다면, 그 주변에서의 테일러 \(n\)차 다항식 \(T_n(x)\)는 다음과 같이 정의된다:&lt;br /&gt;
&lt;br /&gt;
\(T_n(x) = f(a) + f&#039;(a)(x-a) + \frac{f&#039;&#039;(a)}{2!}(x-a)^2 + \dots + \frac{f^{(n)}(a)}{n!}(x-a)^n\)  &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
즉,  \[ T_n(x) = \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x-a)^k \]&lt;br /&gt;
&lt;br /&gt;
이 다항식은 \(x\)가 \(a\) 근처일수록 \(f(x)\)에 가까워지는 근사치를 제공한다.&lt;br /&gt;
==테일러 정리 (오차항 포함)==&lt;br /&gt;
테일러 근사가 얼마나 정확한지 알려주는 것은 오차(잔차, remainder)항의 존재이다. 만약 추가 조건이 만족된다면 함수 \(f\)는 다음과 같이 표현될 수 있다:&lt;br /&gt;
&lt;br /&gt;
\(f(x) = T_n(x) + R_n(x)\)&lt;br /&gt;
&lt;br /&gt;
여기서 \(R_n(x)\)는 오차 항이며, 흔히 다음과 같은 형태로 주어진다.&lt;br /&gt;
&lt;br /&gt;
\(\displaystyle R_n(x) = \frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1}\) — 단, \(c\)는 \(a\)와 \(x\) 사이 어딘가이다.&lt;br /&gt;
&lt;br /&gt;
이 표현은 중심점 \(a\)에서의 다항식 근사에 대한 정확도를 추정할 수 있게 해 준다.&lt;br /&gt;
==특수한 경우 및 주요 전개==&lt;br /&gt;
*중심점을 0으로 한 근사는 특히 중요하며, 이를 매클로린 급수(Maclaurin series)라고 부른다. 즉 \(a = 0\)일 때의 테일러 전개이다.&lt;br /&gt;
*함수가 무한번 미분 가능하고, 적절한 수렴 조건이 만족되면 무한급수 형태로 극한을 취해 함수의 값을 완전히 복원하기도 한다.&lt;br /&gt;
*예:&lt;br /&gt;
**지수 함수 \(e^x\) : \(e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \dots\)&lt;br /&gt;
**삼각 함수 \(\sin x\), \(\cos x\) 도 비슷하게 전개 가능&lt;br /&gt;
==활용 및 응용==&lt;br /&gt;
테일러 근사는 다음과 같은 분야 및 목적에서 널리 사용된다.&lt;br /&gt;
*복잡한 함수에 대해 근삿값을 계산할 때&lt;br /&gt;
*수치해석, 컴퓨터 계산에서 함수 값을 근사할 때&lt;br /&gt;
*미분방정식, 최적화, 물리모델 등에서 비선형 함수를 선형 또는 다항식으로 근사하여 해를 구할 때&lt;br /&gt;
*근사 오차 분석 및 수렴성 연구&lt;br /&gt;
==제한점과 유의사항==&lt;br /&gt;
테일러 근사가 항상 유용한 것은 아니다. 다음과 같은 한계가 있다.&lt;br /&gt;
*함수가 충분히 미분 가능해야 한다.&lt;br /&gt;
*중심점 \(a\)에서 멀리 떨어진 \(x\)에 대해서는 오차가 커질 수 있다.&lt;br /&gt;
*무한급수 전개가 반드시 수렴하는 것은 아니다 — 실제로 다수의 함수에서는 테일러 급수가 존재하더라도 수렴 구간이 제한적일 수 있다.&lt;br /&gt;
==예시==&lt;br /&gt;
예를 들어 함수 \(f(x) = \ln(1 + x)\)을 \(a = 0\)에서 세차 다항식으로 근사하면,  \[ \ln(1 + x) \approx x - \tfrac{x^2}{2} + \tfrac{x^3}{3} \]  이 근사는 \(|x| &amp;lt; 1\) 구간 안에서 비교적 정확하다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[매클로린 급수]]&lt;br /&gt;
*[[테일러 정리]]&lt;br /&gt;
*[[급수 전개]]&lt;br /&gt;
*[[수치해석]]&lt;br /&gt;
*[[미분법]]&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:수학]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EC%8B%9C%EC%8A%A4%ED%86%A8%EB%A6%AD_%EB%B0%B0%EC%97%B4&amp;diff=41765</id>
		<title>시스톨릭 배열</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EC%8B%9C%EC%8A%A4%ED%86%A8%EB%A6%AD_%EB%B0%B0%EC%97%B4&amp;diff=41765"/>
		<updated>2025-12-03T20:32:23Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 시스톨릭 아키텍처 시스톨릭 배열(Systolic Array)은 다수의 연산 유닛을 규칙적인 격자 형태로 배치하고, 데이터가 유닛 사이를 흐르듯 전달되면서 연산이 이루어지는 병렬 하드웨어 구조이다. 특히 행렬 곱셈과 같은 대규모 MAC(Multiply-Accumulate) 연산이 필요한 딥러닝 계산에 널리 사용된다.  ==개요== 시스톨릭 배열(systolic array)은...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:시스톨릭 아키텍처.png|섬네일|시스톨릭 아키텍처]]&lt;br /&gt;
시스톨릭 배열(Systolic Array)은 다수의 연산 유닛을 규칙적인 격자 형태로 배치하고, 데이터가 유닛 사이를 흐르듯 전달되면서 연산이 이루어지는 병렬 하드웨어 구조이다. 특히 행렬 곱셈과 같은 대규모 MAC(Multiply-Accumulate) 연산이 필요한 딥러닝 계산에 널리 사용된다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
시스톨릭 배열(systolic array)은 동일한 구조의 연산 셀을 1차원 또는 2차원 격자로 구성하고, 데이터가 일정한 방향으로 이동하면서 각 셀이 입력을 받아 연산을 수행하는 방식의 아키텍처이다. &amp;quot;Systolic&amp;quot;이라는 용어는 데이터가 심장의 수축(systole)처럼 리듬 있게 이동하는 특성에서 유래하였다.&lt;br /&gt;
==특징==&lt;br /&gt;
*&#039;&#039;&#039;높은 병렬성&#039;&#039;&#039;: 많은 MAC 유닛이 동시에 연산을 수행한다.&lt;br /&gt;
*&#039;&#039;&#039;데이터 재사용 최적화&#039;&#039;&#039;: weight와 activation을 칩 내부에서 전달하며 재사용한다.&lt;br /&gt;
*&#039;&#039;&#039;단순한 하드웨어 구조&#039;&#039;&#039;: 규칙적 배열이므로 설계와 배치가 쉽다.&lt;br /&gt;
*&#039;&#039;&#039;파이프라인 처리&#039;&#039;&#039;: 데이터가 흐르는 즉시 연산이 이루어져 처리율이 높다.&lt;br /&gt;
==구조==&lt;br /&gt;
시스톨릭 배열은 일반적으로 다음 요소로 구성된다:&lt;br /&gt;
*&#039;&#039;&#039;시스톨릭 셀(Systolic Cell)&#039;&#039;&#039;: weight를 저장하고, 입력 데이터를 이용해 z = w·x + y 형태의 MAC 연산을 수행한다.&lt;br /&gt;
*&#039;&#039;&#039;데이터 흐름(Dataflow)&#039;&#039;&#039;: 입력 x는 한 방향으로, partial sum y는 다른 방향으로 전달된다.&lt;br /&gt;
*&#039;&#039;&#039;2D 격자 구성&#039;&#039;&#039;: 여러 셀을 2D 배열로 배치해 행렬 곱 전체를 병렬로 계산한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
행렬 곱셈 C = A × B를 계산할 때:&lt;br /&gt;
*A의 행(row)은 한 방향으로, B의 열(column)은 다른 방향으로 배열 내부를 통과한다.&lt;br /&gt;
*각 셀은 A[i,k]와 B[k,j]를 곱해 partial sum을 누적하여 C[i,j]를 점차 완성한다.&lt;br /&gt;
*최종 결과는 배열의 특정 경로를 통해 출력된다.&lt;br /&gt;
==변형 (Dataflow 종류)==&lt;br /&gt;
데이터 재사용 전략에 따라 여러 종류의 dataflow를 사용할 수 있다.&lt;br /&gt;
*&#039;&#039;&#039;Weight Stationary&#039;&#039;&#039;: weight를 셀 내부에 고정하고 activation을 이동시킨다.&lt;br /&gt;
*&#039;&#039;&#039;Output Stationary&#039;&#039;&#039;: partial sum이 셀 내부에 머물고 입력이 이동한다.&lt;br /&gt;
*&#039;&#039;&#039;Input Stationary&#039;&#039;&#039;: 입력 activation이 고정되고 weight가 이동한다.&lt;br /&gt;
==응용 분야==&lt;br /&gt;
시스톨릭 배열 또는 그 변형 구조는 다양한 가속기에서 사용된다:&lt;br /&gt;
*Google TPU&lt;br /&gt;
*NPU(Neural Processing Unit) 기반 모바일/엣지 칩&lt;br /&gt;
*Apple Neural Engine(ANE)&lt;br /&gt;
*Habana Gaudi / Intel NNP&lt;br /&gt;
*Graphcore IPU&lt;br /&gt;
*삼성/퀄컴 SoC의 딥러닝 가속기&lt;br /&gt;
*FPGA 기반 CNN/Transformer 가속기&lt;br /&gt;
==장점==&lt;br /&gt;
*외부 메모리 접근 감소 → 에너지 효율 향상&lt;br /&gt;
*고정된 데이터 흐름 → 파이프라이닝 용이&lt;br /&gt;
*대규모 병렬 처리로 높은 처리량 확보&lt;br /&gt;
==단점==&lt;br /&gt;
*연산 패턴이 고정적이라 범용 GPU보다 유연성이 낮음&lt;br /&gt;
*데이터 흐름이 규칙적이지 않은 연산에는 부적합&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*딥러닝 가속기&lt;br /&gt;
*행렬 곱셈&lt;br /&gt;
*[[곱셈-누산 연산|MAC(Multiply-Accumulate)]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
[[분류:하드웨어]]&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EC%8B%9C%EC%8A%A4%ED%86%A8%EB%A6%AD_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98.png&amp;diff=41764</id>
		<title>파일:시스톨릭 아키텍처.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EC%8B%9C%EC%8A%A4%ED%86%A8%EB%A6%AD_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98.png&amp;diff=41764"/>
		<updated>2025-12-03T20:30:55Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://www.researchgate.net/figure/Systolic-Array-Architecture-for-CNN_fig1_317574806&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41751</id>
		<title>Straight-Through Estimator</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41751"/>
		<updated>2025-11-26T22:06:27Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;스트레이트스루 추정기&#039;&#039;&#039;(Straight-Through Estimator, &#039;&#039;&#039;STE&#039;&#039;&#039;)는 딥러닝에서 미분이 불가능하거나 불연속적인 연산(sign, round, 이산 샘플링 등)을 역전파로 학습 가능하게 만드는 근사 그라디언트(surrogate gradient) 기법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
다음과 같은 연산들은 미분이 불가능하거나, 거의 모든 지점에서 기울기가 0에 가깝다.&lt;br /&gt;
*sign 함수&lt;br /&gt;
*round 함수&lt;br /&gt;
*이진 게이트(0 또는 1)&lt;br /&gt;
*argmax 및 이산 샘플링&lt;br /&gt;
STE의 핵심 아이디어는 다음과 같다.&lt;br /&gt;
*순전파: 원래의 비분리 함수 f(x)를 그대로 사용한다.&lt;br /&gt;
*역전파: f(x)의 실제 미분 대신, 연속적인 근사 함수 g(x)의 미분을 사용한다.&lt;br /&gt;
즉, 학습 시에는 다음과 같이 근사한다.&lt;br /&gt;
*Forward: y = f(x)&lt;br /&gt;
*Backward: dL/dx ≈ dL/dy × (dg(x)/dx)&lt;br /&gt;
==수학적 정의==&lt;br /&gt;
비연속 함수 f(x)에 대해 Straight-Through Estimator는 다음과 같이 정의된다.&lt;br /&gt;
*Forward: y = f(x)&lt;br /&gt;
*Backward: dL/dx ≈ (dL/dy) × (dg(x)/dx)&lt;br /&gt;
여기서 g(x)는 f(x)를 매끄럽게 근사하는 연속 함수이며, 매우 단순한 형태를 사용하기도 한다.&lt;br /&gt;
===예: 기본 sign 함수 STE===&lt;br /&gt;
*Forward: y = sign(x)&lt;br /&gt;
*Backward(기본형): dL/dx ≈ dL/dy&lt;br /&gt;
**sign 연산을 무시하고 그라디언트를 그대로 통과시키는 방식이다.&lt;br /&gt;
===Clipped STE===&lt;br /&gt;
기본 STE는 모든 구간에서 그라디언트를 통과시켜 불안정할 수 있다.  일반적인 clipped 형태는 다음과 같다.&lt;br /&gt;
*Backward:&lt;br /&gt;
\[ \frac{dL}{dx} = \begin{cases} \frac{dL}{dy}, &amp;amp; \text{if } |x| \le 1, \\ 0,             &amp;amp; \text{otherwise}. \end{cases} \]&lt;br /&gt;
&lt;br /&gt;
===Hard-sigmoid 기반 STE===&lt;br /&gt;
이산 게이팅에서 hard-sigmoid나 clipped linear 같은 단순 근사 함수를 사용하여  안정적인 그라디언트를 제공하는 변형도 존재한다.&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*이진 신경망(Binary Neural Networks, BNN)&lt;br /&gt;
** 가중치/활성을 -1 또는 +1로 제한하므로 STE가 필수적&lt;br /&gt;
* 양자화 신경망(Quantized Neural Networks)&lt;br /&gt;
**8비트 이하 또는 비선형 양자화 함수를 위한 역전파 근사&lt;br /&gt;
*선택적 활성화(selective projection)&lt;br /&gt;
**스파스 게이팅, 동적 라우팅 등&lt;br /&gt;
*Mixture-of-Experts의 이산 expert 선택&lt;br /&gt;
*샘플링 기반 확률적 유닛(stochastic neuron)&lt;br /&gt;
==장점==&lt;br /&gt;
*미분 불가능한 연산을 사용해도 역전파 기반 학습이 가능하다.&lt;br /&gt;
*구현이 단순하며 기존 프레임워크(PyTorch, TensorFlow 등)에 쉽게 통합된다.&lt;br /&gt;
*BNN/양자화 모델 등에서 사실상의 표준이다.&lt;br /&gt;
== 한계==&lt;br /&gt;
*실제 미분이 아닌, 편향된(biased) 근사값을 사용한다.&lt;br /&gt;
*g(x)의 선택에 따라 학습 안정성·성능이 크게 달라진다.&lt;br /&gt;
*이론적 최적성 보장은 부족하다.&lt;br /&gt;
==관련 개념==&lt;br /&gt;
*역전파&lt;br /&gt;
*경사하강법&lt;br /&gt;
*이진 신경망&lt;br /&gt;
*양자화&lt;br /&gt;
*Surrogate Gradient&lt;br /&gt;
* Gumbel-Softmax&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41750</id>
		<title>Straight-Through Estimator</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41750"/>
		<updated>2025-11-26T22:02:34Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;스트레이트스루 추정기&#039;&#039;&#039;(Straight-Through Estimator, &#039;&#039;&#039;STE&#039;&#039;&#039;)는 딥러닝에서 미분이 불가능하거나 불연속적인 연산(sign, round, 이산 샘플링 등)을 역전파로 학습 가능하게 만드는 근사 그라디언트(surrogate gradient) 기법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
다음과 같은 연산들은 미분이 불가능하거나, 거의 모든 지점에서 기울기가 0에 가깝다.&lt;br /&gt;
*sign 함수&lt;br /&gt;
*round 함수&lt;br /&gt;
*이진 게이트(0 또는 1)&lt;br /&gt;
*argmax 및 이산 샘플링&lt;br /&gt;
STE의 핵심 아이디어는 다음과 같다.&lt;br /&gt;
*순전파: 원래의 비분리 함수 f(x)를 그대로 사용한다.&lt;br /&gt;
*역전파: f(x)의 실제 미분 대신, 연속적인 근사 함수 g(x)의 미분을 사용한다.&lt;br /&gt;
즉, 학습 시에는 다음과 같이 근사한다.&lt;br /&gt;
*Forward: y = f(x)&lt;br /&gt;
*Backward: dL/dx ≈ dL/dy × (dg(x)/dx)&lt;br /&gt;
==수학적 정의==&lt;br /&gt;
비연속 함수 f(x)에 대해 Straight-Through Estimator는 다음과 같이 정의된다.&lt;br /&gt;
*Forward: y = f(x)&lt;br /&gt;
*Backward: dL/dx ≈ (dL/dy) × (dg(x)/dx)&lt;br /&gt;
여기서 g(x)는 f(x)를 매끄럽게 근사하는 연속 함수이며, 매우 단순한 형태를 사용하기도 한다.&lt;br /&gt;
===예: 기본 sign 함수 STE===&lt;br /&gt;
*Forward: y = sign(x)&lt;br /&gt;
*Backward(기본형): dL/dx ≈ dL/dy&lt;br /&gt;
**sign 연산을 무시하고 그라디언트를 그대로 통과시키는 방식이다.&lt;br /&gt;
===Clipped STE===&lt;br /&gt;
기본 STE는 모든 구간에서 그라디언트를 통과시켜 불안정할 수 있다.  일반적인 clipped 형태는 다음과 같다.&lt;br /&gt;
*Backward:&lt;br /&gt;
$\displaystyle \frac{dL}{dx} \approx \frac{dL}{dy} \cdot \mathbf{1}(|x| \le 1)$&lt;br /&gt;
&lt;br /&gt;
===Hard-sigmoid 기반 STE===&lt;br /&gt;
이산 게이팅에서 hard-sigmoid나 clipped linear 같은 단순 근사 함수를 사용하여  안정적인 그라디언트를 제공하는 변형도 존재한다.&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*이진 신경망(Binary Neural Networks, BNN)&lt;br /&gt;
** 가중치/활성을 -1 또는 +1로 제한하므로 STE가 필수적&lt;br /&gt;
* 양자화 신경망(Quantized Neural Networks)&lt;br /&gt;
**8비트 이하 또는 비선형 양자화 함수를 위한 역전파 근사&lt;br /&gt;
*선택적 활성화(selective projection)&lt;br /&gt;
**스파스 게이팅, 동적 라우팅 등&lt;br /&gt;
*Mixture-of-Experts의 이산 expert 선택&lt;br /&gt;
*샘플링 기반 확률적 유닛(stochastic neuron)&lt;br /&gt;
==장점==&lt;br /&gt;
*미분 불가능한 연산을 사용해도 역전파 기반 학습이 가능하다.&lt;br /&gt;
*구현이 단순하며 기존 프레임워크(PyTorch, TensorFlow 등)에 쉽게 통합된다.&lt;br /&gt;
*BNN/양자화 모델 등에서 사실상의 표준이다.&lt;br /&gt;
== 한계==&lt;br /&gt;
*실제 미분이 아닌, 편향된(biased) 근사값을 사용한다.&lt;br /&gt;
*g(x)의 선택에 따라 학습 안정성·성능이 크게 달라진다.&lt;br /&gt;
*이론적 최적성 보장은 부족하다.&lt;br /&gt;
==관련 개념==&lt;br /&gt;
*역전파&lt;br /&gt;
*경사하강법&lt;br /&gt;
*이진 신경망&lt;br /&gt;
*양자화&lt;br /&gt;
*Surrogate Gradient&lt;br /&gt;
* Gumbel-Softmax&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41749</id>
		<title>Straight-Through Estimator</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41749"/>
		<updated>2025-11-26T22:00:36Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;스트레이트스루 추정기&#039;&#039;&#039;(Straight-Through Estimator, &#039;&#039;&#039;STE&#039;&#039;&#039;)는 딥러닝에서 미분 불가능하거나 불연속적인 연산(예: $\mathrm{sign}(x)$, \mathrm{round}(x), 이산 샘플링 등)을 역전파로 학습할 수 있도록 하기 위해 사용되는 근사 그라디언트(surrogate gradient) 기법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
딥러닝 학습에서 다음과 같은 연산은 미분이 불가능하거나 거의 모든 지점에서 미분값이 0이다.&lt;br /&gt;
*$\mathrm{sign}(x)$&lt;br /&gt;
*$\mathrm{round}(x)$&lt;br /&gt;
*이진 게이트(0 또는 1로 선택)&lt;br /&gt;
*$\arg\max$ 및 이산 샘플링&lt;br /&gt;
Straight-Through Estimator는 다음 아이디어에 기반한다.&lt;br /&gt;
*순전파(Forward): 원래의 이산 또는 비분리 함수 $f(x)$를 그대로 사용한다.&lt;br /&gt;
*역전파(Backward): 실제 $f(x)$의 미분 대신, 연속적인 근사 함수 $g(x)$의 미분을 사용한다.&lt;br /&gt;
즉,&lt;br /&gt;
*$y = f(x)$&lt;br /&gt;
*$\frac{dL}{dx} \approx \frac{dL}{dy} \cdot \frac{dg(x)}{dx}$&lt;br /&gt;
이라는 방식으로, 실제로는 미분 불가능한 연산을 사용하더라도 경사하강법으로 학습이 가능해진다.&lt;br /&gt;
==수학적 정의==&lt;br /&gt;
비분리 함수 $f(x)$가 있을 때, STE는 다음과 같이 정의된다.&lt;br /&gt;
*Forward: $y = f(x)$&lt;br /&gt;
*Backward: $\frac{dL}{dx} \approx \frac{dL}{dy} \cdot \frac{dg(x)}{dx}$&lt;br /&gt;
**여기서 $g(x)$는 $f(x)$를 대체하는 연속 함수이며, 보통 매우 단순한 형태를 사용한다.&lt;br /&gt;
===예: 기본 sign 함수 STE===&lt;br /&gt;
*Forward: $y = \mathrm{sign}(x)$&lt;br /&gt;
*Backward (기본 STE): $\frac{dL}{dx} \approx \frac{dL}{dy}$&lt;br /&gt;
  ** sign 연산을 무시하고 그라디언트를 그대로 통과(straight-through)시키는 방식&lt;br /&gt;
===Clipped STE===&lt;br /&gt;
기본형은 그라디언트를 무제한 통과시키므로 폭주가 발생할 수 있어, 일부 구간에서만 그라디언트를 허용하는 변형이 존재한다.&lt;br /&gt;
*$\frac{dL}{dx} \approx \frac{dL}{dy} \cdot \mathbf{1}(|x| \le 1)$&lt;br /&gt;
===Hard-sigmoid 기반 STE===&lt;br /&gt;
이진 게이팅에서 hard-sigmoid나 clipped linear 같은 간단한 연속 함수의 미분을 사용하여 안정적인 근사 그라디언트를 만든다.&lt;br /&gt;
==활용 분야==&lt;br /&gt;
Straight-Through Estimator는 다양한 딥러닝 분야에서 핵심적으로 사용된다.&lt;br /&gt;
*이진 신경망(Binary Neural Networks, BNN)&lt;br /&gt;
**가중치와 활성값을 $\{-1, +1\}$로 제한하기 때문에 STE가 필수&lt;br /&gt;
*양자화 신경망(Quantized Neural Networks)&lt;br /&gt;
**8비트 이하 또는 비선형 양자화 함수의 역전파 근사&lt;br /&gt;
*선택적 활성화(selective projection) 및 스파스 게이팅&lt;br /&gt;
**Mixture-of-Experts, 라우팅, 동적 게이트 학습&lt;br /&gt;
*확률적 유닛(stochastic neuron)&lt;br /&gt;
**이산 샘플링 연산을 위한 surrogate gradient&lt;br /&gt;
*일부 강화학습 정책 네트워크 구조&lt;br /&gt;
==장점==&lt;br /&gt;
*미분 불가능한 연산을 포함해도 역전파 기반 학습이 가능하다.&lt;br /&gt;
*구현이 매우 단순하다.&lt;br /&gt;
*BNN/양자화 모델 등에서 사실상의 표준 기법이다.&lt;br /&gt;
==한계==&lt;br /&gt;
*실제 미분이 아닌, 편향된(biased) 근사 그라디언트를 사용한다.&lt;br /&gt;
*근사 방식(g(x)의 선택)에 따라 학습 안정성과 성능이 크게 달라진다.&lt;br /&gt;
*이론적 최적성이나 수렴 보장 측면에서 제한이 있다.&lt;br /&gt;
==관련 개념==&lt;br /&gt;
*역전파&lt;br /&gt;
*경사하강법&lt;br /&gt;
*이진 신경망&lt;br /&gt;
*양자화&lt;br /&gt;
*서러게이트 그라디언트(surrogate gradient)&lt;br /&gt;
*Gumbel-Softmax&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Yoshua Bengio, Nicolas Léonard, Aaron Courville, &amp;quot;Estimating or Propagating Gradients Through Stochastic Neurons&amp;quot;, 2013.&lt;br /&gt;
*Matthieu Courbariaux, Yoshua Bengio, Jean-Pierre David, &amp;quot;BinaryConnect&amp;quot;, 2015.&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41748</id>
		<title>Straight-Through Estimator</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Straight-Through_Estimator&amp;diff=41748"/>
		<updated>2025-11-26T22:00:11Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;스트레이트스루 추정기&amp;#039;&amp;#039;&amp;#039;(Straight-Through Estimator, &amp;#039;&amp;#039;&amp;#039;STE&amp;#039;&amp;#039;&amp;#039;)는 딥러닝에서 미분 불가능하거나 불연속적인 연산(예: $\mathrm{sign}(x)$, $\mathrm{round}(x)$, 이산 샘플링 등)을 역전파로 학습할 수 있도록 하기 위해 사용되는 근사 그라디언트(surrogate gradient) 기법이다. ==개요== 딥러닝 학습에서 다음과 같은 연산은 미분이 불가능하거나 거의 모든 지점에서 미분값이 0이다. *$\math...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;스트레이트스루 추정기&#039;&#039;&#039;(Straight-Through Estimator, &#039;&#039;&#039;STE&#039;&#039;&#039;)는 딥러닝에서 미분 불가능하거나 불연속적인 연산(예: $\mathrm{sign}(x)$, $\mathrm{round}(x)$, 이산 샘플링 등)을 역전파로 학습할 수 있도록 하기 위해 사용되는 근사 그라디언트(surrogate gradient) 기법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
딥러닝 학습에서 다음과 같은 연산은 미분이 불가능하거나 거의 모든 지점에서 미분값이 0이다.&lt;br /&gt;
*$\mathrm{sign}(x)$&lt;br /&gt;
*$\mathrm{round}(x)$&lt;br /&gt;
*이진 게이트(0 또는 1로 선택)&lt;br /&gt;
*$\arg\max$ 및 이산 샘플링&lt;br /&gt;
Straight-Through Estimator는 다음 아이디어에 기반한다.&lt;br /&gt;
*순전파(Forward): 원래의 이산 또는 비분리 함수 $f(x)$를 그대로 사용한다.&lt;br /&gt;
*역전파(Backward): 실제 $f(x)$의 미분 대신, 연속적인 근사 함수 $g(x)$의 미분을 사용한다.&lt;br /&gt;
즉,&lt;br /&gt;
*$y = f(x)$&lt;br /&gt;
*$\frac{dL}{dx} \approx \frac{dL}{dy} \cdot \frac{dg(x)}{dx}$&lt;br /&gt;
이라는 방식으로, 실제로는 미분 불가능한 연산을 사용하더라도 경사하강법으로 학습이 가능해진다.&lt;br /&gt;
==수학적 정의==&lt;br /&gt;
비분리 함수 $f(x)$가 있을 때, STE는 다음과 같이 정의된다.&lt;br /&gt;
*Forward: $y = f(x)$&lt;br /&gt;
*Backward: $\frac{dL}{dx} \approx \frac{dL}{dy} \cdot \frac{dg(x)}{dx}$&lt;br /&gt;
**여기서 $g(x)$는 $f(x)$를 대체하는 연속 함수이며, 보통 매우 단순한 형태를 사용한다.&lt;br /&gt;
===예: 기본 sign 함수 STE===&lt;br /&gt;
*Forward: $y = \mathrm{sign}(x)$&lt;br /&gt;
*Backward (기본 STE): $\frac{dL}{dx} \approx \frac{dL}{dy}$&lt;br /&gt;
  ** sign 연산을 무시하고 그라디언트를 그대로 통과(straight-through)시키는 방식&lt;br /&gt;
===Clipped STE===&lt;br /&gt;
기본형은 그라디언트를 무제한 통과시키므로 폭주가 발생할 수 있어, 일부 구간에서만 그라디언트를 허용하는 변형이 존재한다.&lt;br /&gt;
*$\frac{dL}{dx} \approx \frac{dL}{dy} \cdot \mathbf{1}(|x| \le 1)$&lt;br /&gt;
===Hard-sigmoid 기반 STE===&lt;br /&gt;
이진 게이팅에서 hard-sigmoid나 clipped linear 같은 간단한 연속 함수의 미분을 사용하여 안정적인 근사 그라디언트를 만든다.&lt;br /&gt;
==활용 분야==&lt;br /&gt;
Straight-Through Estimator는 다양한 딥러닝 분야에서 핵심적으로 사용된다.&lt;br /&gt;
*이진 신경망(Binary Neural Networks, BNN)&lt;br /&gt;
**가중치와 활성값을 $\{-1, +1\}$로 제한하기 때문에 STE가 필수&lt;br /&gt;
*양자화 신경망(Quantized Neural Networks)&lt;br /&gt;
**8비트 이하 또는 비선형 양자화 함수의 역전파 근사&lt;br /&gt;
*선택적 활성화(selective projection) 및 스파스 게이팅&lt;br /&gt;
**Mixture-of-Experts, 라우팅, 동적 게이트 학습&lt;br /&gt;
*확률적 유닛(stochastic neuron)&lt;br /&gt;
**이산 샘플링 연산을 위한 surrogate gradient&lt;br /&gt;
*일부 강화학습 정책 네트워크 구조&lt;br /&gt;
==장점==&lt;br /&gt;
*미분 불가능한 연산을 포함해도 역전파 기반 학습이 가능하다.&lt;br /&gt;
*구현이 매우 단순하다.&lt;br /&gt;
*BNN/양자화 모델 등에서 사실상의 표준 기법이다.&lt;br /&gt;
==한계==&lt;br /&gt;
*실제 미분이 아닌, 편향된(biased) 근사 그라디언트를 사용한다.&lt;br /&gt;
*근사 방식(g(x)의 선택)에 따라 학습 안정성과 성능이 크게 달라진다.&lt;br /&gt;
*이론적 최적성이나 수렴 보장 측면에서 제한이 있다.&lt;br /&gt;
==관련 개념==&lt;br /&gt;
*역전파&lt;br /&gt;
*경사하강법&lt;br /&gt;
*이진 신경망&lt;br /&gt;
*양자화&lt;br /&gt;
*서러게이트 그라디언트(surrogate gradient)&lt;br /&gt;
*Gumbel-Softmax&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Yoshua Bengio, Nicolas Léonard, Aaron Courville, &amp;quot;Estimating or Propagating Gradients Through Stochastic Neurons&amp;quot;, 2013.&lt;br /&gt;
*Matthieu Courbariaux, Yoshua Bengio, Jean-Pierre David, &amp;quot;BinaryConnect&amp;quot;, 2015.&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%94%A5_%EB%9F%AC%EB%8B%9D_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC&amp;diff=41742</id>
		<title>딥 러닝 프레임워크</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%94%A5_%EB%9F%AC%EB%8B%9D_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC&amp;diff=41742"/>
		<updated>2025-11-19T23:58:03Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;딥 러닝 프레임워크(Deep Learning Frameworks)&#039;&#039;&#039;는 인공 신경망 모델을 정의하고 학습하며 배포하기 위한 소프트웨어 도구와 라이브러리의 집합이다. 이러한 프레임워크는 자동 미분(autograd), 텐서 연산, GPU 가속, 모델 구조화, 데이터 파이프라인 구성 등 복잡한 과정을 추상화하여 연구자와 개발자가 효율적으로 딥러닝 모델을 개발할 수 있도록 돕는다.&lt;br /&gt;
==개요==&lt;br /&gt;
딥러닝 프레임워크는 수학적 연산을 텐서 기반의 API로 제공하며, 학습 시 필요한 역전파(backpropagation), 옵티마이저, 손실 함수 등을 포함한다. 최근에는 컴파일러 기술, 그래프 최적화, 하드웨어 가속기 지원 등이 결합되면서 고성능 모델 학습 및 추론 환경을 제공한다.&lt;br /&gt;
==실행 방식에 따른 분류==&lt;br /&gt;
===그래프 모드(Graph Mode)===&lt;br /&gt;
그래프 모드는 정적 계산 그래프(static computation graph)를 먼저 정의한 뒤, 전체 그래프를 실행하는 방식이다.&lt;br /&gt;
;특징&lt;br /&gt;
*모델 구조를 먼저 그래프로 컴파일한 뒤 실행&lt;br /&gt;
*최적화 및 배포에 유리&lt;br /&gt;
*그래프 기반 분석 및 최적화 가능&lt;br /&gt;
*디버깅은 상대적으로 어려울 수 있음&lt;br /&gt;
;대표 프레임워크&lt;br /&gt;
*&#039;&#039;&#039;[[텐서플로|TensorFlow]]&#039;&#039;&#039; (초기 버전)&lt;br /&gt;
*&#039;&#039;&#039;Theano&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Caffe&#039;&#039;&#039;&lt;br /&gt;
===이거 모드(Eager Mode)===&lt;br /&gt;
이거 모드는 파이썬 코드가 실행되는 즉시 연산이 수행되는 동적 동작 방식이다.&lt;br /&gt;
;특징&lt;br /&gt;
*직관적인 파이썬 스타일 코드 작성&lt;br /&gt;
*실행 즉시 결과가 나오므로 디버깅 용이&lt;br /&gt;
*학습 개발 속도가 빠름&lt;br /&gt;
*최근에는 그래프 변환 및 컴파일 기능(TorchDynamo 등)으로 성능을 보완&lt;br /&gt;
;대표 프레임워크&lt;br /&gt;
*&#039;&#039;&#039;[[파이토치|PyTorch]]&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Chainer&#039;&#039;&#039;&lt;br /&gt;
==주요 딥러닝 프레임워크 목록==&lt;br /&gt;
===PyTorch===&lt;br /&gt;
페이스북 AI Research(FAIR)에서 개발한 딥러닝 프레임워크로, 동적 그래프 기반 구조와 쉬운 디버깅이 장점이다. 연구자들에게 특히 인기가 높으며, PyTorch 2.0부터는 TorchDynamo, TorchInductor 등을 통한 컴파일 기능이 강화되었다.&lt;br /&gt;
===TensorFlow===&lt;br /&gt;
Google Brain에서 개발한 프레임워크로, 초기에는 정적 그래프 기반이었으나 TensorFlow 2.x에서 eager execution을 기본으로 채택하였다. 모바일 및 배포 생태계(TF Lite, TF Serving)가 잘 갖춰져 있다.&lt;br /&gt;
===Theano===&lt;br /&gt;
Python 기반 정적 그래프 프레임워크의 선구자로, 많은 현대 프레임워크의 기반 아이디어를 제공했다. 현재는 공식 개발이 종료되었다.&lt;br /&gt;
===Caffe===&lt;br /&gt;
이미지 처리에 특화된 초기 딥러닝 프레임워크로, 속도가 빠르고 모델 정의가 간결하지만 확장성은 제한적이다.&lt;br /&gt;
===Chainer===&lt;br /&gt;
Define-by-run 패러다임을 처음으로 제시한 동적 그래프 기반 프레임워크. PyTorch에 많은 영향을 주었으며 현재는 개발이 종료되었다.&lt;br /&gt;
==ML 소프트웨어–컴파일러 스택==&lt;br /&gt;
딥러닝 프레임워크는 하위 레벨의 컴파일러 및 하드웨어 가속기 기술과 결합하여 전체 ML 스택을 구성한다.&lt;br /&gt;
===ML Framework Layer===&lt;br /&gt;
모델을 정의하고 학습하는 고수준 인터페이스 계층  예: PyTorch, TensorFlow, Chainer, Caffe, Theano&lt;br /&gt;
===IR &amp;amp; 그래프 최적화 계층===&lt;br /&gt;
모델을 분석 가능한 중간 표현(IR)으로 변환하여 최적화  예: TorchDynamo, Torch FX, ONNX&lt;br /&gt;
===ML 컴파일러 / 코드 생성 계층===&lt;br /&gt;
그래프 최적화 결과를 기반으로 특정 하드웨어에 맞는 커널 코드를 생성  예: TVM, [[Triton (인공지능)|Triton]], ONNX Runtime&lt;br /&gt;
===커널 라이브러리 계층===&lt;br /&gt;
행렬 연산 등 고성능 수학 연산이 구현된 저수준 라이브러리  예: [[cuDNN]], [[cuBLAS]], CUTLASS&lt;br /&gt;
===하드웨어 백엔드===&lt;br /&gt;
코드를 실제로 실행하는 물리적 장치  예: CPU, [[GPU]], [[구글 TPU|TPU]], 기타 [[AI 가속기]]&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[머신 러닝]]&lt;br /&gt;
*[[딥 러닝]]&lt;br /&gt;
*[[신경망]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[ONNX]]&lt;br /&gt;
==참고==&lt;br /&gt;
*PyTorch 공식 문서&lt;br /&gt;
*TensorFlow 공식 문서&lt;br /&gt;
*ONNX 기술 자료&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EC%9E%90%EB%8F%99_%EB%AF%B8%EB%B6%84&amp;diff=41741</id>
		<title>자동 미분</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EC%9E%90%EB%8F%99_%EB%AF%B8%EB%B6%84&amp;diff=41741"/>
		<updated>2025-11-19T21:04:01Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;자동 미분&amp;#039;&amp;#039;&amp;#039;(Automatic Differentiation, AD)은 함수의 기울기(도함수)를 연산 그래프를 기반으로 자동으로 계산하는 기술이다.  심볼릭 미분(symbolic differentiation)이나 수치 미분(numerical differentiation)과 달리, 자동 미분은 기계 오차를 최소화하면서 정확한 기울기를 효율적으로 계산할 수 있어 딥러닝과 최적화 알고리즘의 핵심 기술로 사용된다.  ==개요== 자동 미분은 함수...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;자동 미분&#039;&#039;&#039;(Automatic Differentiation, AD)은 함수의 기울기(도함수)를 연산 그래프를 기반으로 자동으로 계산하는 기술이다.  심볼릭 미분(symbolic differentiation)이나 수치 미분(numerical differentiation)과 달리, 자동 미분은 기계 오차를 최소화하면서 정확한 기울기를 효율적으로 계산할 수 있어 딥러닝과 최적화 알고리즘의 핵심 기술로 사용된다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
자동 미분은 함수의 구성 요소(덧셈, 곱셈, 행렬 연산 등)에 대해 미분 규칙을 알고 있기 때문에,  프로그래머는 단지 함수를 정의하기만 하면 프레임워크가 역전파(backpropagation)를 통해 기울기를 자동 계산한다.&lt;br /&gt;
&lt;br /&gt;
예: PyTorch, TensorFlow, JAX는 모두 자동 미분 엔진을 핵심으로 갖는다.&lt;br /&gt;
==자동 미분의 종류==&lt;br /&gt;
자동 미분은 크게 다음 두 가지 방식으로 나뉜다.&lt;br /&gt;
===Forward Mode AD===&lt;br /&gt;
입력 변수에서 출발하여 출력까지 미분 값을 전달하는 방식.&lt;br /&gt;
&lt;br /&gt;
특징:&lt;br /&gt;
*입력 개수가 적고 출력 개수가 많은 함수에 적합&lt;br /&gt;
*계산 흐름이 단순함&lt;br /&gt;
*JAX의 `jax.jvp`, `jax.forward_ad` 등이 사용&lt;br /&gt;
예: f: ℝ → ℝⁿ 형태에서 효율적&lt;br /&gt;
===Reverse Mode AD (역전파, Backpropagation)===&lt;br /&gt;
출력에서부터 역방향으로 기울기를 계산하는 방식.&lt;br /&gt;
&lt;br /&gt;
특징:&lt;br /&gt;
*출력이 스칼라(예: 손실 값)이고 입력 차원이 큰 함수에 최고 효율&lt;br /&gt;
*신경망 학습의 표준 기법&lt;br /&gt;
*PyTorch, TensorFlow, JAX 등 딥러닝 프레임워크 대부분이 사용&lt;br /&gt;
예: 신경망과 같이 파라미터 수가 매우 많을 때 가장 효율적&lt;br /&gt;
&lt;br /&gt;
→ 딥러닝에서 사용하는 backpropagation은 사실상 Reverse Mode AD의 특수한 형태이다.&lt;br /&gt;
==자동 미분의 원리==&lt;br /&gt;
자동 미분은 보통 다음처럼 동작한다:&lt;br /&gt;
#연산을 **그래프(Computation Graph)** 로 기록&lt;br /&gt;
#각 노드(연산)의 미분 규칙을 알고 있으므로&lt;br /&gt;
#Chain rule(연쇄 법칙)을 이용해 전체 미분을 계산&lt;br /&gt;
예시 연산:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
y = x*2 + x*3&lt;br /&gt;
dy/dx = (2 + 3) = 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;프레임워크는 사용자가 직접 미분 규칙을 쓸 필요 없이 내부적으로 규칙을 조합해 기울기를 계산한다.&lt;br /&gt;
==수치 미분 및 심볼릭 미분과의 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!방식&lt;br /&gt;
!설명&lt;br /&gt;
!장점&lt;br /&gt;
!단점&lt;br /&gt;
|-&lt;br /&gt;
|수치 미분 (Finite Differences)&lt;br /&gt;
|h를 이용한 근사 차분&lt;br /&gt;
|구현 쉬움&lt;br /&gt;
|오차 큼, 비용 비쌈&lt;br /&gt;
|-&lt;br /&gt;
|심볼릭 미분&lt;br /&gt;
|함수식을 기호적 조작&lt;br /&gt;
|정확한 표현식&lt;br /&gt;
|표현식 폭발, 복잡함&lt;br /&gt;
|-&lt;br /&gt;
|자동 미분&lt;br /&gt;
|그래프 기반 미분&lt;br /&gt;
|정확 + 빠름&lt;br /&gt;
|심볼릭보다 엄밀하진 않음 (추상적)&lt;br /&gt;
|}&lt;br /&gt;
==주요 프레임워크의 자동 미분==&lt;br /&gt;
===PyTorch (Autograd)===&lt;br /&gt;
*동적 그래프 기반&lt;br /&gt;
*연산 수행 시 그래프를 기록&lt;br /&gt;
*`.backward()` 호출 시 기울기 계산&lt;br /&gt;
*Eager execution이 직관적&lt;br /&gt;
===TensorFlow (GradientTape)===&lt;br /&gt;
*2.x에서 eager + 자동 그래프 변환&lt;br /&gt;
*`tf.GradientTape()`로 연산 추적&lt;br /&gt;
===JAX (Autograd + XLA)===&lt;br /&gt;
*순수 함수 기반&lt;br /&gt;
*`jax.grad` 로 함수의 미분 생성&lt;br /&gt;
*JIT + XLA 최적화로 매우 빠른 성능&lt;br /&gt;
*Forward/Reverse/Vector-Jacobian 등 다양한 모드 지원&lt;br /&gt;
JAX는 AD가 프레임워크 핵심이자 철학이며, 성능 최적화가 매우 뛰어나다.&lt;br /&gt;
==딥러닝에서의 자동 미분==&lt;br /&gt;
딥러닝 학습 과정은 다음과 같이 자동 미분을 필수로 사용한다:&lt;br /&gt;
#손실 함수 L(θ) 계산&lt;br /&gt;
#파라미터 θ에 대한 ∂L/∂θ 계산 (역전파)&lt;br /&gt;
#옵티마이저(Adam, SGD 등)로 θ 업데이트&lt;br /&gt;
이 기울기 계산 과정 전체가 자동 미분 엔진에 의해 수행된다.&lt;br /&gt;
==Jacobian, Hessian 등 고차 미분==&lt;br /&gt;
자동 미분은 1차 미분뿐 아니라 Jacobian, Hessian 같은 고차 미분도 계산할 수 있다.&lt;br /&gt;
&lt;br /&gt;
대표적 예:&lt;br /&gt;
*Hessian-vector product (HVP)&lt;br /&gt;
*Jacobian-vector product (JVP)&lt;br /&gt;
*JAX는 특히 고차 미분에 강함 (`jax.jacobian`, `jax.hessian`)&lt;br /&gt;
==장점==&lt;br /&gt;
*사용자는 미분 공식을 직접 작성할 필요 없음&lt;br /&gt;
*복잡한 수식·모델에서도 안정적으로 동작&lt;br /&gt;
*딥러닝 모델 학습의 필수 기술&lt;br /&gt;
*Forward/Reverse 구조로 고성능을 보장&lt;br /&gt;
*XLA/Triton 등과 결합하면 매우 빠름&lt;br /&gt;
==한계==&lt;br /&gt;
*메모리 사용량이 증가할 수 있음&lt;br /&gt;
*함수형 제약(JAX) 등 사용 난이도 증가 가능&lt;br /&gt;
*비미분 가능 연산(discrete ops)은 별도 처리 필요&lt;br /&gt;
*계산 그래프가 너무 크면 성능 저하 발생&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[딥 러닝]]&lt;br /&gt;
*[[역전파]]&lt;br /&gt;
*[[JAX]]&lt;br /&gt;
*[[PyTorch]]&lt;br /&gt;
*[[TensorFlow]]&lt;br /&gt;
*[[XLA]]&lt;br /&gt;
*[[미분]]&lt;br /&gt;
*[[그래프 기반 최적화]]&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:수학]]&lt;br /&gt;
[[분류:프로그래밍]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=TensorFlow&amp;diff=41740</id>
		<title>TensorFlow</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=TensorFlow&amp;diff=41740"/>
		<updated>2025-11-19T21:02:48Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 텐서플로 문서로 넘겨주기&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#넘겨주기 [[텐서플로]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C&amp;diff=41739</id>
		<title>텐서플로</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C&amp;diff=41739"/>
		<updated>2025-11-19T21:02:24Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;TensorFlow&amp;#039;&amp;#039;&amp;#039;는 Google Brain 팀에서 개발한 오픈소스 머신러닝 및 딥러닝 프레임워크로, 수치 계산, 모델 학습, 추론, 배포까지 아우르는 종합적인 ML 플랫폼이다. 대규모 분산 학습, 모바일 및 엣지 배포, TPU 통합 등을 강점으로 하며, TensorFlow Extended(TFX), TensorFlow Lite, TensorFlow.js 등 폭넓은 생태계를 제공한다.  ==개요== TensorFlow는 2015년 처음 공개된 이후 산업계와 연구계...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;TensorFlow&#039;&#039;&#039;는 Google Brain 팀에서 개발한 오픈소스 머신러닝 및 딥러닝 프레임워크로, 수치 계산, 모델 학습, 추론, 배포까지 아우르는 종합적인 ML 플랫폼이다. 대규모 분산 학습, 모바일 및 엣지 배포, TPU 통합 등을 강점으로 하며, TensorFlow Extended(TFX), TensorFlow Lite, TensorFlow.js 등 폭넓은 생태계를 제공한다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
TensorFlow는 2015년 처음 공개된 이후 산업계와 연구계에서 널리 사용되었다.  초기에는 정적 계산 그래프(static computation graph) 기반의 TensorFlow 1.x가 중심이었으나, 이후 2.x 버전에서 eager execution 중심의 직관적인 인터페이스를 도입했다.&lt;br /&gt;
&lt;br /&gt;
TensorFlow는 다음과 같은 목적을 갖는다:&lt;br /&gt;
*대규모 ML 모델 학습 및 배포&lt;br /&gt;
*GPU/TPU 가속 지원&lt;br /&gt;
*산업 환경에서의 안정적인 제품화&lt;br /&gt;
*다양한 언어 및 플랫폼 통합&lt;br /&gt;
==특징==&lt;br /&gt;
===Keras 통합 API===&lt;br /&gt;
TensorFlow 2.x에서는 Keras가 기본 고수준(high-level) API로 통합되었다.&lt;br /&gt;
*직관적인 레이어 기반 모델 구성&lt;br /&gt;
*Functional/Sequential 모델 구조&lt;br /&gt;
*사용자 정의 레이어 및 모델 지원&lt;br /&gt;
===Eager Execution===&lt;br /&gt;
Python 코드처럼 즉시 실행되는 방식으로 전환되어 디버깅이 쉬워졌다.&lt;br /&gt;
===그래프 변환 (tf.function)===&lt;br /&gt;
`@tf.function` 데코레이터를 사용하면 Python 코드를 정적 그래프 형태로 컴파일하여 성능을 높일 수 있다.&lt;br /&gt;
===TPU 및 XLA 지원===&lt;br /&gt;
TensorFlow는 Google Cloud TPU와 깊게 통합되어 있다.&lt;br /&gt;
*XLA(Accelerated Linear Algebra) 최적화 엔진 제공&lt;br /&gt;
*TPU에서 높은 훈련 효율&lt;br /&gt;
*대규모 모델 병렬 학습 지원&lt;br /&gt;
===분산 학습 전략===&lt;br /&gt;
TensorFlow는 여러 분산 전략을 제공한다.&lt;br /&gt;
*MirroredStrategy (단일 노드 multi-GPU)&lt;br /&gt;
*MultiWorkerMirroredStrategy (다중 노드)&lt;br /&gt;
*TPUStrategy&lt;br /&gt;
*ParameterServerStrategy&lt;br /&gt;
===TensorFlow Lite (TFLite)===&lt;br /&gt;
모바일 및 엣지 디바이스용 경량 딥러닝 추론 엔진.&lt;br /&gt;
===TensorFlow.js===&lt;br /&gt;
브라우저 및 Node.js 환경에서 모델 실행 가능.&lt;br /&gt;
===TensorFlow Extended (TFX)===&lt;br /&gt;
ML 제품 파이프라인 구축을 위한 플랫폼:&lt;br /&gt;
*데이터 파이프라인&lt;br /&gt;
*모델 배포&lt;br /&gt;
*서빙 및 모니터링&lt;br /&gt;
==내부 구조==&lt;br /&gt;
===컴퓨터 그래프===&lt;br /&gt;
TensorFlow의 핵심은 연산(operation)과 텐서(tensor)로 구성된 계산 그래프이다.  2.x에서는 eager + 그래프 혼합 모델로 동작한다.&lt;br /&gt;
===런타임 / 디바이스 배치===&lt;br /&gt;
TensorFlow는 GPU/TPU/CPU 디바이스에 자동으로 연산을 배치하며, XLA 또는 CUDA/cuDNN/cuBLAS를 통해 가속한다.&lt;br /&gt;
===SavedModel===&lt;br /&gt;
모델을 저장·배포하기 위한 표준 포맷:&lt;br /&gt;
*Graph + Weight + Signature 포함&lt;br /&gt;
*TFLite, TF Serving, TF.js로 변환 가능&lt;br /&gt;
==TensorFlow 1.x와 2.x 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!TensorFlow 1.x&lt;br /&gt;
!TensorFlow 2.x&lt;br /&gt;
|-&lt;br /&gt;
|실행 모델||정적 그래프||eager 우선 + 그래프 변환&lt;br /&gt;
|-&lt;br /&gt;
|고수준 API||tf.layers, Estimators||Keras 통합&lt;br /&gt;
|-&lt;br /&gt;
|학습 루프||session.run 필요||직관적인 Python 코드&lt;br /&gt;
|-&lt;br /&gt;
|TPU/XLA||초기부터 지원||더 자연스럽게 통합&lt;br /&gt;
|}&lt;br /&gt;
==PyTorch 및 JAX와의 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!TensorFlow&lt;br /&gt;
!PyTorch&lt;br /&gt;
!JAX&lt;br /&gt;
|-&lt;br /&gt;
|철학||산업/제품 중심||연구/실험 중심||함수형 + XLA 중심&lt;br /&gt;
|-&lt;br /&gt;
|TPU 지원||매우 좋음||제한적||최고 수준&lt;br /&gt;
|-&lt;br /&gt;
|GPU 생태계||매우 강함||최강 (CUDA 중심)||중간&lt;br /&gt;
|-&lt;br /&gt;
|코드 스타일||선언적 + Keras||imperative (직관적)||함수형&lt;br /&gt;
|-&lt;br /&gt;
|배포/서빙||TFLite / TF Serving / TFX||TorchServe / ONNX||제한적&lt;br /&gt;
|}&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*대규모 ML 모델 학습 (Vision, NLP, RL)&lt;br /&gt;
*Google 내부 서비스(검색, 번역, 이미지 처리 등)&lt;br /&gt;
*모바일/엣지 AI (TensorFlow Lite)&lt;br /&gt;
*웹 기반 AI (TensorFlow.js)&lt;br /&gt;
*산업용 ML 파이프라인(TFX)&lt;br /&gt;
*TPU 기반 연구 및 분산 학습&lt;br /&gt;
==장점==&lt;br /&gt;
*TPU, XLA와 깊은 통합&lt;br /&gt;
*풍부한 배포/서빙 도구(TFX, TFLite)&lt;br /&gt;
*산업 제품화에 특화된 생태계&lt;br /&gt;
*그래프 기반 최적화로 높은 성능 가능&lt;br /&gt;
*다중 언어 및 플랫폼 지원&lt;br /&gt;
==한계==&lt;br /&gt;
*PyTorch보다 직관성이 떨어진다는 의견 존재&lt;br /&gt;
*연구 커뮤니티에서 PyTorch보다 채택률 낮음&lt;br /&gt;
*TF 1.x → 2.x 전환으로 혼란 있었음&lt;br /&gt;
*그래프/데코레이터 기반 디버깅 난이도&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[PyTorch]]&lt;br /&gt;
*[[JAX]]&lt;br /&gt;
*[[XLA]]&lt;br /&gt;
*[[TPU]]&lt;br /&gt;
*[[Keras]]&lt;br /&gt;
*[[딥 러닝]]&lt;br /&gt;
*[[자동 미분]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*TensorFlow 공식 문서&lt;br /&gt;
*Google Research 블로그&lt;br /&gt;
*XLA 및 TPU 기술 자료&lt;br /&gt;
[[분류:프로그래밍]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=JAX&amp;diff=41738</id>
		<title>JAX</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=JAX&amp;diff=41738"/>
		<updated>2025-11-19T21:00:31Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;JAX&amp;#039;&amp;#039;&amp;#039;는 Google Research에서 개발한 고성능 수치 연산 및 머신러닝 라이브러리로, NumPy 스타일의 API를 기반으로 자동 미분(autograd), JIT 컴파일(just-in-time), 벡터화(Vectorization), 병렬 처리 등을 제공한다. XLA(Accelerated Linear Algebra) 컴파일러를 통해 CPU, GPU, TPU에서 모두 효율적으로 실행되며, 대규모 딥러닝 연구와 과학 계산에서 널리 사용된다.  ==개요== JAX는 기존 NumPy 스타...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;JAX&#039;&#039;&#039;는 Google Research에서 개발한 고성능 수치 연산 및 머신러닝 라이브러리로, NumPy 스타일의 API를 기반으로 자동 미분(autograd), JIT 컴파일(just-in-time), 벡터화(Vectorization), 병렬 처리 등을 제공한다. XLA(Accelerated Linear Algebra) 컴파일러를 통해 CPU, GPU, TPU에서 모두 효율적으로 실행되며, 대규모 딥러닝 연구와 과학 계산에서 널리 사용된다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
JAX는 기존 NumPy 스타일의 직관성을 유지하면서 다음과 같은 기능을 결합한다:&lt;br /&gt;
*자동 미분 (Autograd)&lt;br /&gt;
*JIT 컴파일 (XLA 기반)&lt;br /&gt;
*벡터화(vmap)&lt;br /&gt;
*병렬화(pmap)&lt;br /&gt;
*순수 함수 기반의 함수형 프로그래밍 모델&lt;br /&gt;
JAX는 TensorFlow나 PyTorch와 달리 모델 정의용 고수준 프레임워크가 아니라, 수치 연산을 함수형 방식으로 최적화하는 “프레임워크의 기초 도구”에 가깝다. Neural network 라이브러리인 Flax, Haiku, Equinox 등이 JAX 위에서 사용된다.&lt;br /&gt;
==주요 특징==&lt;br /&gt;
===Autograd (자동 미분)===&lt;br /&gt;
JAX는 Python 함수를 입력받아 해당 함수의 기울기를 자동 계산한다.&lt;br /&gt;
*reverse-mode differentiation&lt;br /&gt;
*forward-mode differentiation&lt;br /&gt;
*많은 연산에 대한 강력한 합성(differentiable programming)&lt;br /&gt;
예시:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import jax.numpy as jnp&lt;br /&gt;
import jax&lt;br /&gt;
&lt;br /&gt;
f = lambda x: x**2 + 3*x&lt;br /&gt;
jax.grad(f)(2.0)  # 7.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===JIT 컴파일===&lt;br /&gt;
XLA 기반의 JIT 컴파일 기능(`jax.jit`)은 Python 코드를 고성능 기계 코드로 변환하여 실행 속도를 크게 높인다.&lt;br /&gt;
*연산 fusion&lt;br /&gt;
*device placement 자동 처리&lt;br /&gt;
*GPU/TPU에서 높은 효율&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
@jax.jit&lt;br /&gt;
def compute(x):&lt;br /&gt;
    return jnp.sin(x) * jnp.cos(x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===벡터화 (vmap)===&lt;br /&gt;
루프를 Python이 아닌 XLA에서 병렬화하여 대규모 데이터 처리 속도를 높인다.&lt;br /&gt;
*Python loop → XLA 병렬 연산 자동 변환&lt;br /&gt;
===pmap (병렬 처리)===&lt;br /&gt;
다중 GPU/TPU 장치에서 동일한 함수를 병렬 실행.&lt;br /&gt;
*Data parallelism 구현&lt;br /&gt;
*TPU Pod 환경에서 핵심 기능&lt;br /&gt;
===함수형 패러다임===&lt;br /&gt;
JAX는 순수 함수(pure function)를 강조하며, 상태(state) 없는 계산을 지향한다.  모델 파라미터도 불변성을 유지한 채 함수 인자로 전달하는 방식으로 관리한다.&lt;br /&gt;
==JAX 생태계==&lt;br /&gt;
&#039;&#039;&#039;Flax&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* JAX 기반의 고수준 neural network 라이브러리.  LLM, Vision Transformer 등 대규모 모델 구현에 널리 사용된다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Haiku&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DeepMind에서 개발한 모듈식 신경망 프레임워크.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optax&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* JAX를 위한 최적화 라이브러리(Adam, RMSProp 등 제공).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Equinox&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PyTorch와 유사한 객체 스타일의 JAX 신경망 라이브러리.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Orbax&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* JAX 체크포인트 저장 및 복구 라이브러리.&lt;br /&gt;
&lt;br /&gt;
==XLA와의 관계==&lt;br /&gt;
JAX는 XLA를 기반으로 동작하는 구조를 가지고 있다:&lt;br /&gt;
*JIT → XLA로 그래프 변환&lt;br /&gt;
*XLA가 CPU/GPU/TPU용 최적화된 기계 코드 생성&lt;br /&gt;
*TPU 사용 시 탁월한 효율&lt;br /&gt;
XLA는 TensorFlow와 JAX 모두의 공통 백엔드로 사용되지만, JAX는 훨씬 더 자연스럽게 XLA와 통합되도록 설계되었다.&lt;br /&gt;
==TPU와의 통합==&lt;br /&gt;
JAX는 TPU를 가장 잘 활용하는 프레임워크 중 하나로 평가된다.&lt;br /&gt;
*TPU v2/v3/v4/v5에서 높은 성능&lt;br /&gt;
*pmap을 통한 대규모 모델 학습&lt;br /&gt;
*Google 내부 연구에서 광범위하게 사용&lt;br /&gt;
PaLM, T5, 여러 대형 언어 모델 연구에서 JAX+TPU 조합이 핵심 역할을 한다.&lt;br /&gt;
==PyTorch 및 TensorFlow와의 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!JAX&lt;br /&gt;
!PyTorch&lt;br /&gt;
!TensorFlow&lt;br /&gt;
|-&lt;br /&gt;
|주요 철학||함수형, 확장성, 연구용||직관적, eager 기반||산업용, 정적 그래프&lt;br /&gt;
|-&lt;br /&gt;
|Autograd||매우 강력함||강력함||강력함&lt;br /&gt;
|-&lt;br /&gt;
|JIT 속도||매우 빠름(XLA)||PyTorch 2.x Inductor로 개선||TensorFlow XLA로 빠름&lt;br /&gt;
|-&lt;br /&gt;
|TPU 지원||최고 수준||제한적||좋음&lt;br /&gt;
|-&lt;br /&gt;
|생태계||Flax/Haiku 중심||가장 큰 생태계||기업 중심&lt;br /&gt;
|}&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*대규모 언어 모델(LLM)&lt;br /&gt;
*컴퓨터 비전(ViT, CNN)&lt;br /&gt;
*강화학습&lt;br /&gt;
*과학 계산 및 시뮬레이션&lt;br /&gt;
*Google 내부 연구&lt;br /&gt;
*TPU 기반 대규모 학습&lt;br /&gt;
==장점==&lt;br /&gt;
*매우 빠른 JIT 성능(XLA 기반)&lt;br /&gt;
*TPU/GPU 모두에서 높은 효율&lt;br /&gt;
*함수형 프로그래밍으로 안전한 코드 구조&lt;br /&gt;
*연구·대규모 모델 학습에 최적화&lt;br /&gt;
*자동 병렬화(vmap/pmap) 기능&lt;br /&gt;
==한계==&lt;br /&gt;
*생태계가 PyTorch만큼 크지 않음&lt;br /&gt;
*디버깅 난이도가 높을 수 있음&lt;br /&gt;
*함수형 패턴에 익숙하지 않은 사용자는 진입 장벽 존재&lt;br /&gt;
*stateful 연산 및 비순수 함수가 어렵거나 제한적&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[PyTorch]]&lt;br /&gt;
*[[TensorFlow]]&lt;br /&gt;
*[[XLA]]&lt;br /&gt;
*[[TPU]]&lt;br /&gt;
*[[딥 러닝]]&lt;br /&gt;
*[[자동 미분]]&lt;br /&gt;
*[[Neural Network]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
[[분류:프로그래밍]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=FPGA&amp;diff=41737</id>
		<title>FPGA</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=FPGA&amp;diff=41737"/>
		<updated>2025-11-19T20:57:34Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;(Field-Programmable Gate Array)는 사용자가 제작된 이후에도 하드웨어 회로를 직접 구성할 수 있도록 설계된 프로그래머블 집적회로이다. 범용 CPU나 GPU와 달리, FPGA는 하드웨어 레벨에서 병렬 처리 구조를 원하는 형태로 설계할 수 있어 높은 유연성과 맞춤형 가속 기능을 제공한다.  ==개요== FPGA는 내부에 구성 가능한 논리 블록(logic block)과 이들을 서로 연결하는 라...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FPGA&#039;&#039;&#039;(Field-Programmable Gate Array)는 사용자가 제작된 이후에도 하드웨어 회로를 직접 구성할 수 있도록 설계된 프로그래머블 집적회로이다. 범용 CPU나 GPU와 달리, FPGA는 하드웨어 레벨에서 병렬 처리 구조를 원하는 형태로 설계할 수 있어 높은 유연성과 맞춤형 가속 기능을 제공한다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
FPGA는 내부에 구성 가능한 논리 블록(logic block)과 이들을 서로 연결하는 라우팅 구조로 이루어져 있다. 사용자는 HDL(Hardware Description Language) 또는 고수준 합성(HLS)을 통해 FPGA를 특정 회로처럼 동작하도록 “프로그래밍”할 수 있다.&lt;br /&gt;
&lt;br /&gt;
대표적인 FPGA 제조사는 Xilinx(현 AMD), Intel(Altera), Lattice Semiconductor 등이 있으며, Xilinx Alveo 시리즈는 AI 및 데이터센터 용으로 널리 사용된다.&lt;br /&gt;
==특징==&lt;br /&gt;
===높은 유연성===&lt;br /&gt;
FPGA의 가장 큰 장점은 설계된 후에도 논리 회로를 변경할 수 있다는 점이다.  이는 다음과 같은 장점을 제공한다:&lt;br /&gt;
*새로운 알고리즘에 빠르게 대응 가능&lt;br /&gt;
*특정 응용을 위한 맞춤형 하드웨어 구현&lt;br /&gt;
*ASIC 설계 전에 성능 검증 플랫폼으로 활용 가능&lt;br /&gt;
===병렬 처리 성능===&lt;br /&gt;
FPGA는 사용자가 자료 흐름(dataflow)에 맞춰 병렬적인 하드웨어 회로를 직접 구성할 수 있기 때문에, 특정 워크로드에서는 CPU/GPU보다 효율적으로 동작할 수 있다.&lt;br /&gt;
===짧은 개발 주기===&lt;br /&gt;
ASIC처럼 제조 과정이 필요하지 않기 때문에, 하드웨어 가속기 개발 및 테스트 시간이 매우 짧다.&lt;br /&gt;
===장점===&lt;br /&gt;
*하드웨어 레벨 최적화 가능&lt;br /&gt;
*유연한 알고리즘 변경&lt;br /&gt;
*프로토타이핑 및 연구용으로 뛰어남&lt;br /&gt;
===단점===&lt;br /&gt;
*클럭 속도가 ASIC/GPU보다 낮음&lt;br /&gt;
*전력 효율이 ASIC보다는 떨어짐&lt;br /&gt;
*복잡한 완전 커스텀 회로는 성능적 제약 존재&lt;br /&gt;
==구성 요소==&lt;br /&gt;
===Logic Block (LUT + Flip-Flop)===&lt;br /&gt;
FPGA 회로의 기본 단위로, 사용자가 원하는 논리 연산을 구현할 수 있는 구성 가능한 소자이다.&lt;br /&gt;
===Routing / Interconnect===&lt;br /&gt;
Logic block들을 서로 연결하는 구성 가능한 배선 구조.&lt;br /&gt;
===BRAM (Block RAM)===&lt;br /&gt;
고속 온칩 메모리로, AI/영상/네트워크 처리 등에 사용된다.&lt;br /&gt;
===DSP Slice===&lt;br /&gt;
고속 곱셈·덧셈 연산을 위한 전용 연산 유닛으로, DNN 가속에 필수적이다.&lt;br /&gt;
===High-Bandwidth I/O===&lt;br /&gt;
PCIe, Ethernet 등 다양한 고속 인터페이스를 지원한다.&lt;br /&gt;
==FPGA와 딥러닝 (DNN)==&lt;br /&gt;
FPGA는 최근 딥러닝 추론 가속기 분야에서 주목받고 있다.&lt;br /&gt;
===장점===&lt;br /&gt;
*다양한 DNN 구조에 맞는 맞춤형 데이터 경로 구성&lt;br /&gt;
*Low-latency inference에 강점&lt;br /&gt;
*ASIC 제작 전 프로토타입 플랫폼으로 사용 가능&lt;br /&gt;
*Edge AI 및 산업용 로봇 등에서 인기&lt;br /&gt;
===FPGA 기반 AI 가속기 예시===&lt;br /&gt;
*&#039;&#039;&#039;Xilinx Alveo&#039;&#039;&#039; U200/U250/U280 시리즈&lt;br /&gt;
*Intel Arria 10 FPGA&lt;br /&gt;
*AWS F1 인스턴스 (Xilinx Ultrascale+)&lt;br /&gt;
==FPGA vs ASIC vs GPU==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!특성&lt;br /&gt;
!FPGA&lt;br /&gt;
!ASIC&lt;br /&gt;
!GPU&lt;br /&gt;
|-&lt;br /&gt;
|목적||프로그래머블 하드웨어||특정 작업 전용||범용 병렬 연산&lt;br /&gt;
|-&lt;br /&gt;
|유연성||매우 높음||매우 낮음||높음(소프트웨어 기반)&lt;br /&gt;
|-&lt;br /&gt;
|성능||중간 ~ 높음||최고 성능||높음&lt;br /&gt;
|-&lt;br /&gt;
|전력 효율||중간||매우 높음||중간&lt;br /&gt;
|-&lt;br /&gt;
|개발 기간||짧음||매우 길음||필요 없음&lt;br /&gt;
|-&lt;br /&gt;
|비용||낮음||매우 높음||중간&lt;br /&gt;
|-&lt;br /&gt;
|사용 예||연구·프로토타이핑·Edge AI||TPU·ANE·전용 가속기||딥러닝 학습·추론&lt;br /&gt;
|}&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*딥 러닝 추론 (CNN, Transformer 일부 구조)&lt;br /&gt;
*영상 처리 / 신호 처리&lt;br /&gt;
*IoT 및 Edge 컴퓨팅&lt;br /&gt;
*금융(초저지연 트레이딩)&lt;br /&gt;
*네트워크 패킷 처리&lt;br /&gt;
*로봇 및 산업 자동화&lt;br /&gt;
==프로그래밍 방식==&lt;br /&gt;
FPGA는 여러 방식으로 프로그래밍할 수 있다:&lt;br /&gt;
===HDL (Hardware Description Language)===&lt;br /&gt;
*Verilog&lt;br /&gt;
*VHDL&lt;br /&gt;
하드웨어 회로를 직접 설계하는 가장 전통적인 방식.&lt;br /&gt;
===High-Level Synthesis (HLS)===&lt;br /&gt;
*C/C++ 기반 회로 설계&lt;br /&gt;
*DNN inference 가속용 HLS 라이브러리 제공&lt;br /&gt;
===프레임워크 기반 도구===&lt;br /&gt;
*Xilinx Vitis AI&lt;br /&gt;
*hls4ml&lt;br /&gt;
*FINN (Xilinx DNN compiler)&lt;br /&gt;
==장점==&lt;br /&gt;
*높은 유연성&lt;br /&gt;
*빠른 개발 및 수정&lt;br /&gt;
*하드웨어 최적화 가능&lt;br /&gt;
*ASIC 제작 전 성능 검증 용도로 활용 가능&lt;br /&gt;
==한계==&lt;br /&gt;
*ASIC 대비 낮은 최대 성능&lt;br /&gt;
*GPU보다 일반적으로 낮은 throughput&lt;br /&gt;
*복잡한 DNN 전체를 구현하기엔 난이도가 높음&lt;br /&gt;
*최적 회로 설계에 전문성이 필요&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[TPU]]&lt;br /&gt;
*[[딥 러닝 가속기]]&lt;br /&gt;
*[[Vitis AI]]&lt;br /&gt;
*[[Deep Neural Network]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Xilinx Alveo 공식 문서&lt;br /&gt;
*Intel FPGA 기술 자료&lt;br /&gt;
*AWS EC2 F1 문서&lt;br /&gt;
*FPGA 기반 AI 가속 관련 연구 논문&lt;br /&gt;
[[분류:하드웨어]]&lt;br /&gt;
[[분류:컴퓨터 구조]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=ASIC&amp;diff=41736</id>
		<title>ASIC</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=ASIC&amp;diff=41736"/>
		<updated>2025-11-19T20:54:50Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;ASIC&amp;#039;&amp;#039;&amp;#039;(Application-Specific Integrated Circuit)은 특정 용도나 알고리즘을 빠르고 효율적으로 수행하기 위해 맞춤 설계된 집적회로이다. 범용 CPU나 GPU와 달리, 특정 작업을 수행하는 회로가 하드웨어 수준에서 고정되어 있어 매우 높은 성능과 전력 효율을 제공한다.  ==개요== ASIC은 범용 프로세서와 달리 소프트웨어로 동작을 변경하는 형태가 아니라, &amp;#039;&amp;#039;&amp;#039;하드웨어 자체가 특...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ASIC&#039;&#039;&#039;(Application-Specific Integrated Circuit)은 특정 용도나 알고리즘을 빠르고 효율적으로 수행하기 위해 맞춤 설계된 집적회로이다. 범용 CPU나 GPU와 달리, 특정 작업을 수행하는 회로가 하드웨어 수준에서 고정되어 있어 매우 높은 성능과 전력 효율을 제공한다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
ASIC은 범용 프로세서와 달리 소프트웨어로 동작을 변경하는 형태가 아니라, &#039;&#039;&#039;하드웨어 자체가 특정 기능을 수행하도록 설계된 반도체 칩&#039;&#039;&#039;이다. 설계된 기능 이외의 작업은 수행할 수 없지만, 그 특정 기능에 대해서는 최고의 성능을 낼 수 있다.&lt;br /&gt;
&lt;br /&gt;
대표적인 예로는 암호화 칩, 네트워크 스위치 라우팅 칩, 인공지능 가속기(예: Google TPU)가 있다.&lt;br /&gt;
==특징==&lt;br /&gt;
&#039;&#039;&#039;고성능&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ASIC은 목표 연산을 위해 최적화된 하드웨어 회로로 구성되기 때문에,  같은 작업을 GPU나 CPU보다 훨씬 빠르게 처리할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;높은 전력 효율&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 불필요한 제어 로직이나 범용 구조가 없으므로,  전력 대비 성능(Performance per Watt)이 매우 뛰어나다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;낮은 유연성&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ASIC의 기능은 제조된 이후 변경할 수 없다.  다른 알고리즘을 지원하거나 새로운 연산을 추가하려면 칩을 다시 설계해야 한다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;긴 개발 기간 및 높은 비용&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ASIC은 칩 설계, 시뮬레이션, 레이아웃 설계, 제조(테이프아웃)까지 복잡한 과정이 필요하며,  수백만~수천만 달러의 개발 비용과 수개월~수년의 개발 기간이 요구된다.&lt;br /&gt;
&lt;br /&gt;
==DNN(Deep Neural Network)에서의 ASIC==&lt;br /&gt;
딥러닝 모델의 연산량 폭증과 함께, DNN 전용 ASIC 가속기가 등장했다.&lt;br /&gt;
===대표적인 DNN ASIC===&lt;br /&gt;
&#039;&#039;&#039;Google TPU (Tensor Processing Unit)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 구글이 내부 서비스(Gmail, Search, Photos, Translate 등)와 GCP 클라우드에서 사용하는 DNN 전용 칩.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Apple Neural Engine (ANE)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* iPhone 및 Mac의 A/M 시리즈 칩에 통합된 머신러닝 가속기.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cerebras Wafer-Scale Engine (WSE)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 단일 웨이퍼 전체를 한 칩으로 활용한 초대형 AI 가속기.&lt;br /&gt;
&lt;br /&gt;
머신러닝 추론용 전용 ASIC들: &#039;&#039;&#039;Edge TPU, Habana Gaudi(인텔), Tesla Dojo&#039;&#039;&#039; 등.&lt;br /&gt;
&lt;br /&gt;
===ASIC이 DNN에서 중요한 이유===&lt;br /&gt;
*행렬 곱(matmul), convolution 등 반복적이고 구조적 연산을 하드웨어로 구현 가능&lt;br /&gt;
*Tensor core, systolic array 등 특수 연산 구조로 속도를 극대화&lt;br /&gt;
*범용 GPU보다 전력 대비 처리량이 훨씬 높음&lt;br /&gt;
*대규모 데이터센터 inference 비용 절감을 위해 필수적인 기술&lt;br /&gt;
==ASIC vs GPU vs FPGA==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!특성&lt;br /&gt;
!ASIC&lt;br /&gt;
!FPGA&lt;br /&gt;
!GPU&lt;br /&gt;
|-&lt;br /&gt;
|목적||특정 작업 전용||프로그래머블 하드웨어||범용 병렬 연산&lt;br /&gt;
|-&lt;br /&gt;
|유연성||매우 낮음||매우 높음||높음(소프트웨어 기반)&lt;br /&gt;
|-&lt;br /&gt;
|성능||최고 성능||중간 ~ 높음||높음&lt;br /&gt;
|-&lt;br /&gt;
|전력 효율||매우 높음||중간||중간&lt;br /&gt;
|-&lt;br /&gt;
|개발 비용/시간||매우 높음 / 길음||낮음 / 짧음||없음(기성품)&lt;br /&gt;
|-&lt;br /&gt;
|사용 예||TPU, ANE, 암호화 칩||가속 연구, 사전 프로토타이핑||딥러닝 학습 및 추론&lt;br /&gt;
|}&lt;br /&gt;
==ASIC 개발 과정==&lt;br /&gt;
ASIC 개발에는 다음과 같은 단계가 포함된다:&lt;br /&gt;
#시스템 요구 사항 정의&lt;br /&gt;
#RTL(Register Transfer Level) 설계&lt;br /&gt;
#검증(Verification) 및 시뮬레이션&lt;br /&gt;
#물리 설계(Placement &amp;amp; Routing)&lt;br /&gt;
#제조(테이프아웃)&lt;br /&gt;
#테스트 및 패키징&lt;br /&gt;
높은 개발 비용과 리스크로 인해 ASIC은 대규모 기업이나 전문 반도체 회사에서만 제작되는 경우가 많다.&lt;br /&gt;
==장점==&lt;br /&gt;
*특정 알고리즘에 대한 최고 수준의 성능&lt;br /&gt;
*매우 뛰어난 전력 효율&lt;br /&gt;
*데이터센터 inference 비용 절감&lt;br /&gt;
*특수 목적 서비스(암호화, 네트워킹 등)에서 필수적&lt;br /&gt;
==한계==&lt;br /&gt;
*설계 및 제조 비용이 매우 높음&lt;br /&gt;
*제조 이후 구조 변경 불가&lt;br /&gt;
*범용성을 갖지 않아 새로운 모델/알고리즘 대응 어려움&lt;br /&gt;
*빠르게 변하는 딥러닝 연구 속도를 따라잡기 어려움&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[TPU]]&lt;br /&gt;
*[[딥 러닝 가속기]]&lt;br /&gt;
*[[Deep Neural Network]]&lt;br /&gt;
*[[CUDA]]&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:하드웨어]]&lt;br /&gt;
[[분류:컴퓨터 구조]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=GPU&amp;diff=41735</id>
		<title>GPU</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=GPU&amp;diff=41735"/>
		<updated>2025-11-19T20:51:24Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;GPU&amp;#039;&amp;#039;&amp;#039;(Graphics Processing Unit, 그래픽 처리 장치)는 대규모 병렬 연산을 효율적으로 처리하도록 설계된 프로세서로, 본래는 그래픽 렌더링을 위해 개발되었지만 현재는 딥러닝, 과학 계산, 고성능 컴퓨팅(HPC), 데이터 분석 등 다양한 분야에서 핵심 가속기로 사용되고 있다.  ==개요== GPU는 수천 개의 연산 유닛을 병렬로 배치해, 동일하거나 유사한 연산을 반복적으로 수...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;GPU&#039;&#039;&#039;(Graphics Processing Unit, 그래픽 처리 장치)는 대규모 병렬 연산을 효율적으로 처리하도록 설계된 프로세서로, 본래는 그래픽 렌더링을 위해 개발되었지만 현재는 딥러닝, 과학 계산, 고성능 컴퓨팅(HPC), 데이터 분석 등 다양한 분야에서 핵심 가속기로 사용되고 있다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
GPU는 수천 개의 연산 유닛을 병렬로 배치해, 동일하거나 유사한 연산을 반복적으로 수행하는 워크로드에 최적화되어 있다. 딥러닝 연산(행렬 곱, convolution)과 같이 대량의 연산을 동시에 처리하는 workloads에서 CPU에 비해 압도적인 속도를 제공한다.&lt;br /&gt;
&lt;br /&gt;
대표적인 GPU 제조사는 NVIDIA, AMD, Intel 등이 있으며, 이 중 NVIDIA는 CUDA 생태계와 딥러닝 프레임워크 최적화를 바탕으로 AI 분야에서 사실상 표준 위치를 차지하고 있다.&lt;br /&gt;
==GPU의 구조==&lt;br /&gt;
GPU는 일반적으로 다음과 같은 주요 구성 요소로 이루어진다:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Streaming Multiprocessor (SM) / Compute Unit (CU)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 대규모 병렬 처리를 수행하는 핵심 연산 유닛.  NVIDIA는 SM, AMD는 Compute Unit(CU) 용어를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;수천 개의 ALU (Arithmetic Logic Unit)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 비트·정수·부동소수점 연산을 대량으로 처리할 수 있도록 구성된 연산 파이프라인.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;고대역폭 메모리 (HBM, GDDR6 등)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 딥러닝 연산에 필요한 대량의 데이터 전송을 빠르게 수행.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warp / Wavefront 기반 스케줄링&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* NVIDIA: Warp(32 threads)  AMD: Wavefront(64 threads)  단위로 병렬 실행을 관리한다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tensor/Core AI 연산 유닛&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 딥러닝 가속을 위한 특수 유닛:&lt;br /&gt;
** NVIDIA Tensor Core&lt;br /&gt;
**AMD Matrix Core&lt;br /&gt;
**Intel XMX Engine&lt;br /&gt;
*이들 유닛은 FP16/BF16/INT8 같은 저정밀도 매트릭스 연산을 극적으로 가속한다.&lt;br /&gt;
&lt;br /&gt;
==GPU와 CPU의 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!GPU&lt;br /&gt;
!CPU&lt;br /&gt;
|-&lt;br /&gt;
|목적||병렬 연산(대량의 동일 연산)||직렬 연산(제어 중심)&lt;br /&gt;
|-&lt;br /&gt;
|코어 수||수백~수천 개||수 개~수십 개&lt;br /&gt;
|-&lt;br /&gt;
|클럭 속도||낮음||높음&lt;br /&gt;
|-&lt;br /&gt;
|장점||대규모 데이터 병렬성, 매우 높은 연산량||복잡한 분기·제어 구조에 유리&lt;br /&gt;
|-&lt;br /&gt;
|적합한 작업||딥러닝, 그래픽, 과학 계산||OS, 네트워크, 로직 처리&lt;br /&gt;
|}&lt;br /&gt;
==GPU와 딥러닝==&lt;br /&gt;
딥러닝의 행렬 곱, convolution, attention 등은 GPU의 병렬 구조와 매우 잘 맞는다.  이 때문에 GPU는 현대 딥러닝 학습에서 사실상 필수 하드웨어가 되었다.&lt;br /&gt;
===딥러닝에서 GPU가 중요한 이유===&lt;br /&gt;
*matmul, conv 같은 반복적 연산을 대규모 병렬로 처리&lt;br /&gt;
*고대역폭 메모리(HBM)로 데이터 이동 속도가 빠름&lt;br /&gt;
*Tensor Core 등 딥러닝 특화 하드웨어 탑재&lt;br /&gt;
*cuDNN, cuBLAS 등 최적화된 라이브러리 제공&lt;br /&gt;
*PyTorch, TensorFlow 등이 GPU 자동 가속 지원&lt;br /&gt;
===GPU 딥러닝 가속을 위한 핵심 라이브러리===&lt;br /&gt;
*[[CUDA]]&lt;br /&gt;
*[[cuDNN]]&lt;br /&gt;
*[[cuBLAS]]&lt;br /&gt;
*CUTLASS&lt;br /&gt;
*ROCm (AMD)&lt;br /&gt;
*oneAPI (Intel)&lt;br /&gt;
==GPU 프로그래밍==&lt;br /&gt;
&#039;&#039;&#039;CUDA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* NVIDIA GPU를 위한 병렬 프로그래밍 모델.  kernel 함수로 GPU에서 직접 계산 수행 가능.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OpenCL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* GPU·CPU·FPGA 등 다양한 플랫폼에서 동작하는 범용 병렬 API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vulkan / DirectCompute&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 그래픽 API이지만 범용 연산(GPGPU) 가능.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Triton&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PyTorch 통합 GPU 커널 DSL로, CUDA 없이도 맞춤형 고성능 커널 생성 가능.&lt;br /&gt;
&lt;br /&gt;
==GPU 아키텍처의 발전==&lt;br /&gt;
GPU는 AI 수요 증가와 함께 빠르게 진화하고 있다.&lt;br /&gt;
===주요 아키텍처 (NVIDIA 기준)===&lt;br /&gt;
*Pascal&lt;br /&gt;
*Volta (Tensor Core 최초 도입)&lt;br /&gt;
*Turing&lt;br /&gt;
*Ampere&lt;br /&gt;
*Hopper&lt;br /&gt;
*Blackwell&lt;br /&gt;
===AI 중심 특징===&lt;br /&gt;
*Tensor Core 확장&lt;br /&gt;
*FP16/BF16/INT8 최적화&lt;br /&gt;
*Multi-instance GPU(MIG)&lt;br /&gt;
*고대역폭 HBM 메모리 탑재&lt;br /&gt;
==GPU vs ASIC vs FPGA==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!특성&lt;br /&gt;
!GPU&lt;br /&gt;
!ASIC&lt;br /&gt;
!FPGA&lt;br /&gt;
|-&lt;br /&gt;
|유연성||높음(소프트웨어 기반)||매우 낮음||매우 높음&lt;br /&gt;
|-&lt;br /&gt;
|성능||높음||최고 성능||중간~높음&lt;br /&gt;
|-&lt;br /&gt;
|전력 효율||중간||매우 높음||중간&lt;br /&gt;
|-&lt;br /&gt;
|개발 비용||없음(기성품)||매우 높음||낮음&lt;br /&gt;
|-&lt;br /&gt;
|적합한 작업||딥러닝 학습·추론, 그래픽, HPC||특정 모델 추론 대량 처리||프로토타이핑, 커스텀 파이프라인&lt;br /&gt;
|}&lt;br /&gt;
==GPU의 활용 분야==&lt;br /&gt;
*딥러닝 학습 및 추론&lt;br /&gt;
*컴퓨터 그래픽스&lt;br /&gt;
*시뮬레이션(유체, 물리, 천체역학 등)&lt;br /&gt;
*게임 렌더링&lt;br /&gt;
*금융(고속 시뮬레이션, 알고리즘 트레이딩)&lt;br /&gt;
*데이터 분석 및 머신러닝&lt;br /&gt;
*자율주행 시스템&lt;br /&gt;
==대표 GPU 예시==&lt;br /&gt;
*NVIDIA GeForce, Quadro, RTX&lt;br /&gt;
*NVIDIA A100, H100, B100 (데이터센터 AI GPU)&lt;br /&gt;
*AMD Radeon, Instinct MI 시리즈&lt;br /&gt;
*Intel Arc / Ponte Vecchio&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[CUDA]]&lt;br /&gt;
*[[cuDNN]]&lt;br /&gt;
*[[cuBLAS]]&lt;br /&gt;
*[[Triton]]&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
*[[딥 러닝 가속기]]&lt;br /&gt;
*[[Deep Neural Network]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*NVIDIA GPU Architecture Whitepaper&lt;br /&gt;
*AMD ROCm Documentation&lt;br /&gt;
*Intel GPU Compute Architecture 자료&lt;br /&gt;
*다양한 GPU 가속 관련 학술 논문&lt;br /&gt;
[[분류:컴퓨터 구조]]&lt;br /&gt;
[[분류:하드웨어]]&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EA%B5%AC%EA%B8%80_TPU&amp;diff=41734</id>
		<title>구글 TPU</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EA%B5%AC%EA%B8%80_TPU&amp;diff=41734"/>
		<updated>2025-11-19T20:33:02Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;TPU&amp;#039;&amp;#039;&amp;#039;(Tensor Processing Unit)는 Google이 딥러닝 워크로드를 가속하기 위해 설계한 맞춤형 ASIC(Application-Specific Integrated Circuit) 계열의 하드웨어 가속기이다. 내부 Google 서비스(Gmail, Search, Translate 등)와 Google Cloud Platform(GCP)의 AI/ML 워크로드를 위해 개발되었으며, 행렬 연산 및 대규모 딥러닝 연산을 최적화한 아키텍처를 가진다.  ==개요== TPU는 딥러닝에서 핵심이 되는...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;TPU&#039;&#039;&#039;(Tensor Processing Unit)는 Google이 딥러닝 워크로드를 가속하기 위해 설계한 맞춤형 [[ASIC|ASIC(Application-Specific Integrated Circuit)]] 계열의 하드웨어 가속기이다. 내부 Google 서비스(Gmail, Search, Translate 등)와 Google Cloud Platform(GCP)의 AI/ML 워크로드를 위해 개발되었으며, 행렬 연산 및 대규모 딥러닝 연산을 최적화한 아키텍처를 가진다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
TPU는 딥러닝에서 핵심이 되는 행렬 곱셈, convolution, 대규모 텐서 연산을 효율적으로 처리하기 위해 특수 설계된 하드웨어이다. GPU나 CPU는 범용 병렬 연산 장치이지만, TPU는 DNN 추론 및 학습을 위해 설계된 특화 구조(systolic array)를 갖는다.&lt;br /&gt;
&lt;br /&gt;
Google TPU는 2015년 첫 등장 이후 다양한 버전(TPU v1~v5)이 공개되며 성능이 지속적으로 향상되었다.&lt;br /&gt;
==주요 특징==&lt;br /&gt;
===ASIC 기반 구조===&lt;br /&gt;
TPU는 특정 연산(DNN)을 최적화하기 위해 논리 회로가 고정된 ASIC 형태로 구현되어 있어, GPU보다 더 높은 전력 효율과 throughput을 제공한다.&lt;br /&gt;
===Systolic Array 아키텍처===&lt;br /&gt;
TPU의 핵심 구성 요소는 대규모 행렬 곱을 빠르게 수행하는 &#039;&#039;&#039;시스톨릭 어레이(systolic array)&#039;&#039;&#039; 구조이다.&lt;br /&gt;
*데이터가 규칙적으로 흐르며 파이프라인 형태로 연산 수행&lt;br /&gt;
*높은 데이터 재사용률&lt;br /&gt;
*딥러닝의 핵심 연산(MatMul, Conv)에 최적화&lt;br /&gt;
예) TPU v2/v3는 128 × 128 systolic array 사용.&lt;br /&gt;
===TensorFlow 및 JAX와의 긴밀한 통합===&lt;br /&gt;
*Google이 개발한 프레임워크와 자연스럽게 연동&lt;br /&gt;
*XLA 컴파일러를 통해 TPU에 최적화된 실행 그래프 생성&lt;br /&gt;
*대규모 분산 학습 기능 제공&lt;br /&gt;
===높은 에너지 효율===&lt;br /&gt;
*동일한 워크로드에서 GPU 대비 더 높은 성능/Watt 비율&lt;br /&gt;
*데이터센터 대규모 추론/학습 비용 절감&lt;br /&gt;
==버전별 아키텍처==&lt;br /&gt;
===TPU v1 (Inference-only)===&lt;br /&gt;
*8-bit 정수 연산 기반&lt;br /&gt;
*Google Search 및 Translate 서비스용&lt;br /&gt;
*28 TOPS 수준의 추론 성능&lt;br /&gt;
*단일보드 ASIC&lt;br /&gt;
===TPU v2===&lt;br /&gt;
*학습(Training)까지 지원&lt;br /&gt;
*128×128 신경망 프로세싱 유닛(Matrix Unit)&lt;br /&gt;
*45 TFLOPS(FP16) 성능&lt;br /&gt;
*4개 칩으로 구성된 TPU Pod 가능&lt;br /&gt;
*Google Cloud TPU로 제공 시작&lt;br /&gt;
===TPU v3===&lt;br /&gt;
*v2 대비 약 2배 성능&lt;br /&gt;
*냉각을 위한 액체 냉각(liquid cooling) 사용&lt;br /&gt;
*TPU Pod는 최대 100+ PFlops 규모&lt;br /&gt;
*대규모 Transformer 학습에 활용&lt;br /&gt;
===TPU v4===&lt;br /&gt;
*Cloud TPU v4 Pods는 수천 개의 TPU 코어 연결&lt;br /&gt;
*강화된 interconnect → GPU 클러스터 대비 높은 학습 효율&lt;br /&gt;
*6nm 공정 기반&lt;br /&gt;
*매우 높은 모델 병렬 처리 성능&lt;br /&gt;
===TPU v5 / v5p===&lt;br /&gt;
*최신 Google Cloud TPU 세대&lt;br /&gt;
*LLM·Diffusion·대규모 Transformer 학습 최적화&lt;br /&gt;
*더 큰 메모리, 더 높은 bandwidth, 개선된 interconnect 탑재&lt;br /&gt;
==TPU Pod==&lt;br /&gt;
TPU 칩 여러 개(수백~수천 개)를 연결한 대규모 분산 학습 시스템.&lt;br /&gt;
===특징===&lt;br /&gt;
*매우 빠른 칩 간 네트워크 대역폭&lt;br /&gt;
*모델 병렬/데이터 병렬 모두 지원&lt;br /&gt;
*초대형 모델(GPT, PaLM, Vision Transformers 등) 학습 가능&lt;br /&gt;
*Google Cloud에서 서비스 제공&lt;br /&gt;
==소프트웨어 스택==&lt;br /&gt;
===XLA (Accelerated Linear Algebra)===&lt;br /&gt;
Google의 컴파일러로, 딥러닝 그래프를 TPU용 최적화된 연산 세트로 변환.&lt;br /&gt;
===JAX===&lt;br /&gt;
TPU에서 높은 성능을 내는 연구자 중심 딥러닝 프레임워크.&lt;br /&gt;
===TensorFlow===&lt;br /&gt;
TPU를 처음부터 지원하며, TPU 전략을 통한 대규모 학습 가능.&lt;br /&gt;
==GPU와 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!TPU&lt;br /&gt;
!GPU&lt;br /&gt;
|-&lt;br /&gt;
|설계 목적||딥러닝 전용 ASIC||범용 병렬 연산&lt;br /&gt;
|-&lt;br /&gt;
|구조||Systolic array||SM 기반 SIMD 병렬 구조&lt;br /&gt;
|-&lt;br /&gt;
|유연성||낮음||높음&lt;br /&gt;
|-&lt;br /&gt;
|성능/Watt||매우 높음||중간&lt;br /&gt;
|-&lt;br /&gt;
|적합한 작업||대규모 DNN 학습/추론||다양한 GPU 워크로드&lt;br /&gt;
|}&lt;br /&gt;
==TPU와 ASIC / FPGA와의 관계==&lt;br /&gt;
*&#039;&#039;&#039;ASIC&#039;&#039;&#039; 기반 → GPU보다 빠르고 효율적&lt;br /&gt;
*&#039;&#039;&#039;FPGA&#039;&#039;&#039;보다 속도 높고 전력 효율 뛰어남&lt;br /&gt;
*단 유연성은 FPGA나 GPU보다 떨어짐&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*자연어 처리 (Transformer, LLM)&lt;br /&gt;
*컴퓨터 비전&lt;br /&gt;
*리코멘데이션 모델&lt;br /&gt;
*Google 내부 서비스&lt;br /&gt;
*GCP Cloud TPU 학습&lt;br /&gt;
*AI 연구 (PaLM, T5, EfficientNet 등)&lt;br /&gt;
==장점==&lt;br /&gt;
*대규모 딥러닝에 최적화&lt;br /&gt;
*GPU 대비 높은 전력 효율&lt;br /&gt;
*TPU Pod 기반 초대형 클러스터 사용 가능&lt;br /&gt;
*XLA 최적화로 높은 성능&lt;br /&gt;
*Google Cloud로 접근 가능&lt;br /&gt;
==한계==&lt;br /&gt;
*범용성 부족&lt;br /&gt;
*Google 생태계(TensorFlow/JAX) 중심&lt;br /&gt;
*모델 포팅이 필요할 때 복잡함&lt;br /&gt;
*커스텀 연산 유연성이 GPU보다 낮음&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
*[[TensorFlow]]&lt;br /&gt;
*[[JAX]]&lt;br /&gt;
*[[XLA]]&lt;br /&gt;
*[[딥 러닝 가속기]]&lt;br /&gt;
*[[Deep Neural Network]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Google TPU Architecture Whitepapers&lt;br /&gt;
*Jouppi, Norman P., et al. &amp;quot;In-Datacenter Performance Analysis of a Tensor Processing Unit.&amp;quot;&lt;br /&gt;
*Google Cloud TPU 공식 문서&lt;br /&gt;
*XLA / JAX 기술 자료&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:하드웨어]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=AI_%EA%B0%80%EC%86%8D%EA%B8%B0&amp;diff=41733</id>
		<title>AI 가속기</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=AI_%EA%B0%80%EC%86%8D%EA%B8%B0&amp;diff=41733"/>
		<updated>2025-11-19T20:30:21Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;AI 가속기&amp;#039;&amp;#039;&amp;#039;(AI Accelerator)는 인공지능(Artificial Intelligence), 특히 딥러닝(Deep Learning)의 연산을 빠르고 효율적으로 수행하기 위해 설계된 특수 목적 하드웨어이다. 딥러닝 모델의 핵심 연산(행렬 곱, convolution, attention 등)을 가속하기 위해 범용 CPU나 GPU보다 더 높은 성능 또는 전력 효율을 제공한다.  AI 가속기는 데이터센터, 클라우드, 엣지 장치(스마트폰·IoT), 로봇, 자...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;AI 가속기&#039;&#039;&#039;(AI Accelerator)는 인공지능(Artificial Intelligence), 특히 딥러닝(Deep Learning)의 연산을 빠르고 효율적으로 수행하기 위해 설계된 특수 목적 하드웨어이다. 딥러닝 모델의 핵심 연산(행렬 곱, convolution, attention 등)을 가속하기 위해 범용 CPU나 GPU보다 더 높은 성능 또는 전력 효율을 제공한다.&lt;br /&gt;
&lt;br /&gt;
AI 가속기는 데이터센터, 클라우드, 엣지 장치(스마트폰·IoT), 로봇, 자율주행 등 다양한 분야에서 사용된다. 대표적인 예로 Google TPU, Apple Neural Engine, ARM NPU, Xilinx FPGA 기반 가속기 등이 있다.&lt;br /&gt;
==개요==&lt;br /&gt;
딥러닝 모델은 대량의 행렬 연산(MATMUL), 합성곱(CONV), 활성화 계산, normalization 등 반복적이고 구조적인 연산으로 이루어져 있다. 이러한 연산은 일반 CPU보다 GPU 또는 전용 가속기에서 훨씬 빠르게 실행된다.&lt;br /&gt;
&lt;br /&gt;
AI 가속기는 다음과 같은 목표를 가진다:&lt;br /&gt;
*딥러닝 연산의 처리량(throughput) 최대화&lt;br /&gt;
*전력 효율 향상 (Performance per Watt)&lt;br /&gt;
*DRAM 접근 최소화를 통한 메모리 병목 해결&lt;br /&gt;
*대규모 모델(LLM, Vision Transformers) 실행 지원&lt;br /&gt;
==주요 구성 요소==&lt;br /&gt;
대부분의 AI 가속기는 다음과 같은 공통 구조를 가진다:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compute Core (MAC Array / Systolic Array)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 딥러닝의 핵심 연산인 곱셈-누산(Multiply-Accumulate, MAC)을 수행하는 연산 유닛 집합.  일부 ASIC 기반 가속기(TPU 등)는 대규모 시스톨릭 어레이를 사용한다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weight SRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 모델 파라미터(Weights)를 저장하는 온칩 메모리.  DRAM 접근을 줄여 전력과 지연(latency)을 절감.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Activation SRAM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 중간 활성값(activations)을 저장하는 온칩 버퍼.  딥러닝 inference와 training의 메모리 병목 완화에 필수.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Register File (RF)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 가장 빠른 메모리 계층. 직접 연산 직전에 필요한 값을 저장.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DRAM (HBM 또는 외부 DRAM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 대규모 모델과 데이터를 저장.  에너지 비용이 높기 때문에 DRAM 접근을 최소화하는 것이 가속기 설계의 핵심이다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NoC (Network-on-Chip)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 가속기, CPU, GPU 등이 서로 통신하기 위한 칩 내부 네트워크.  대규모 AI 칩에서는 NoC 효율이 성능에 큰 영향을 미친다.&lt;br /&gt;
&lt;br /&gt;
==메모리 계층과 에너지 비용==&lt;br /&gt;
딥러닝 연산에서 에너지의 대부분은 &amp;quot;계산&amp;quot;이 아니라 &amp;quot;메모리 접근&amp;quot;에서 발생한다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;정규화된 에너지 비용 예시:&#039;&#039;&#039;&lt;br /&gt;
*ALU 연산 = 1×&lt;br /&gt;
*Register File = 2×&lt;br /&gt;
*On-chip SRAM/Buffer = 6×&lt;br /&gt;
*DRAM 접근 = &#039;&#039;&#039;200×&#039;&#039;&#039;&lt;br /&gt;
이에 따라 AI 가속기 설계에서는 DRAM 접근을 최소화하기 위해:&lt;br /&gt;
*weight/activation SRAM 증가&lt;br /&gt;
*데이터 재사용(data reuse) 극대화&lt;br /&gt;
*systolic array 기반 연산&lt;br /&gt;
*tiling, blocking 최적화&lt;br /&gt;
가 필수적으로 고려된다.&lt;br /&gt;
==주요 종류==&lt;br /&gt;
===GPU 기반 가속기===&lt;br /&gt;
*NVIDIA A100, H100, B100&lt;br /&gt;
*AMD Instinct MI 시리즈&lt;br /&gt;
*Intel GPU&lt;br /&gt;
대량 병렬 처리에 적합하며 AI 학습에서 사실상 표준.&lt;br /&gt;
===ASIC 기반 AI 가속기===&lt;br /&gt;
딥러닝을 위해 설계된 전용 칩.&lt;br /&gt;
*[[TPU]] (Google Tensor Processing Unit)&lt;br /&gt;
*Apple Neural Engine (ANE)&lt;br /&gt;
*Cerebras Wafer-Scale Engine (WSE)&lt;br /&gt;
*Tesla Dojo&lt;br /&gt;
*Edge TPU, Habana Gaudi 등&lt;br /&gt;
높은 성능/Watt를 제공하지만 유연성은 낮다.&lt;br /&gt;
===FPGA 기반 AI 가속기===&lt;br /&gt;
프로그래머블 하드웨어로, 빠르고 유연한 AI 프로토타이핑에 적합.&lt;br /&gt;
*Xilinx Alveo&lt;br /&gt;
*Intel Arria/Stratix FPGA&lt;br /&gt;
특정 연산을 하드웨어로 직접 설계할 수 있으나 최대 성능은 ASIC보다 낮다.&lt;br /&gt;
===NPU (Neural Processing Unit)===&lt;br /&gt;
스마트폰·엣지 장치용 AI 전용 유닛.&lt;br /&gt;
*Apple ANE&lt;br /&gt;
*Samsung NPU&lt;br /&gt;
*Qualcomm Hexagon DSP&lt;br /&gt;
*MediaTek APU&lt;br /&gt;
==AI 가속기와 CPU/GPU의 관계==&lt;br /&gt;
AI 가속기는 전체 프로그램을 실행하는 것이 아니라, 딥러닝과 관련된 특정 부분만 가속한다.&lt;br /&gt;
&lt;br /&gt;
예:&lt;br /&gt;
*전체 앱 로직 → CPU&lt;br /&gt;
*Preprocessing → CPU/GPU&lt;br /&gt;
*CNN/Transformer inference → AI Accelerator&lt;br /&gt;
*Post-processing → CPU&lt;br /&gt;
즉, AI 가속기는 시스템 내 다른 프로세서들과 함께 동작한다.&lt;br /&gt;
==AI 가속기 설계의 핵심 목표==&lt;br /&gt;
*높은 throughput&lt;br /&gt;
*낮은 latency&lt;br /&gt;
*낮은 전력 소비&lt;br /&gt;
*높은 메모리 대역폭 이용 효율&lt;br /&gt;
*DRAM 접근 최소화&lt;br /&gt;
*연산/메모리 병렬성 극대화&lt;br /&gt;
*모델 병렬/데이터 병렬 지원&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*대규모 AI 학습 및 추론&lt;br /&gt;
*자연어 처리 (LLM, Transformer)&lt;br /&gt;
*컴퓨터 비전 (CNN, ViT)&lt;br /&gt;
*자율주행 시스템&lt;br /&gt;
*스마트폰 및 IoT 디바이스&lt;br /&gt;
*온디바이스(Edge) AI&lt;br /&gt;
*데이터센터 AI 최적화&lt;br /&gt;
==AI 가속기 vs GPU vs ASIC vs FPGA==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!특성&lt;br /&gt;
!AI 가속기(일반)&lt;br /&gt;
!GPU&lt;br /&gt;
![[ASIC]]&lt;br /&gt;
![[FPGA]]&lt;br /&gt;
|-&lt;br /&gt;
|목적||AI 특화 연산 가속||범용 병렬 연산||특정 목적 전용||프로그래머블 하드웨어&lt;br /&gt;
|-&lt;br /&gt;
|성능/Watt||매우 높음||중간||최고 수준||중간&lt;br /&gt;
|-&lt;br /&gt;
|유연성||중간~낮음||높음||매우 낮음||매우 높음&lt;br /&gt;
|-&lt;br /&gt;
|개발 비용||다양함||낮음||매우 높음||낮음&lt;br /&gt;
|-&lt;br /&gt;
|적합한 작업||CNN, Transformer, inference||학습 + 범용 연산||대규모 inference||프로토타이핑 및 특수 목적&lt;br /&gt;
|}&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[TPU]]&lt;br /&gt;
*[[ASIC]]&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
*[[DRAM]]&lt;br /&gt;
*[[SRAM]]&lt;br /&gt;
*[[딥 러닝]]&lt;br /&gt;
*[[Tensor Core]]&lt;br /&gt;
*[[Systolic Array]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Google TPU 논문&lt;br /&gt;
*NVIDIA GPU Architecture Whitepapers&lt;br /&gt;
*Xilinx Alveo 및 인텔 FPGA 문서&lt;br /&gt;
*Neuromorphic 및 NPU 관련 연구 자료&lt;br /&gt;
*AI Accelerator 설계 관련 학술 논문&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:하드웨어]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=DRAM&amp;diff=41732</id>
		<title>DRAM</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=DRAM&amp;diff=41732"/>
		<updated>2025-11-19T20:26:21Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;DRAM&amp;#039;&amp;#039;&amp;#039;(Dynamic Random-Access Memory, 동적 랜덤 접근 메모리)은 컴퓨터 및 전자 기기에서 주기억장치(main memory)로 널리 사용되는 반도체 메모리 기술이다. DRAM은 메모리 셀에 저장된 전하가 시간이 지나면 자연 방전되기 때문에, 일정 간격으로 재충전(refresh)해야 한다. 이러한 특성 때문에 &amp;quot;동적(dynamic)&amp;quot;이라는 이름이 붙었다.  ==개요== DRAM은 CPU, GPU, 모바일 기기, 서버, AI 가...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DRAM&#039;&#039;&#039;(Dynamic Random-Access Memory, 동적 랜덤 접근 메모리)은 컴퓨터 및 전자 기기에서 주기억장치(main memory)로 널리 사용되는 반도체 메모리 기술이다. DRAM은 메모리 셀에 저장된 전하가 시간이 지나면 자연 방전되기 때문에, 일정 간격으로 재충전(refresh)해야 한다. 이러한 특성 때문에 &amp;quot;동적(dynamic)&amp;quot;이라는 이름이 붙었다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
DRAM은 CPU, GPU, 모바일 기기, 서버, AI 가속기 등 다양한 시스템에서 주 메모리로 사용된다. DRAM은 SRAM에 비해 느리지만, 집적도가 높아 더 많은 데이터를 저장할 수 있으며 가격이 저렴하다.&lt;br /&gt;
&lt;br /&gt;
대표적인 DRAM 종류에는 DDR(Desktop/Server용), LPDDR(모바일용), HBM(고대역폭 메모리)이 있다.&lt;br /&gt;
==DRAM의 구조==&lt;br /&gt;
DRAM은 다음과 같은 구성 요소로 이루어진다:&lt;br /&gt;
===메모리 셀 (1T1C 구조)===&lt;br /&gt;
*&#039;&#039;&#039;1개의 트랜지스터 + 1개의 커패시터&#039;&#039;&#039;로 이루어진 매우 간단한 구조&lt;br /&gt;
*커패시터가 전하(charge)를 저장하며, 0/1 값을 표현&lt;br /&gt;
*시간이 지나면 전하가 새기 때문에 주기적 refresh 필요&lt;br /&gt;
===Wordline / Bitline===&lt;br /&gt;
*Wordline: 특정 행(row)을 선택&lt;br /&gt;
*Bitline: 데이터를 읽거나 쓰는 통로&lt;br /&gt;
===Bank / Row / Column 구조===&lt;br /&gt;
DRAM은 Bank・Row・Column으로 구성되어 있으며, row를 한 번 열면(row open) 해당 row의 데이터 접근이 더 빠르다.&lt;br /&gt;
==DRAM의 장단점==&lt;br /&gt;
===장점===&lt;br /&gt;
*높은 집적도 → 대용량 구현 가능&lt;br /&gt;
*가격이 저렴함&lt;br /&gt;
*대부분의 컴퓨터 시스템에서 표준 주기억장치&lt;br /&gt;
===단점===&lt;br /&gt;
*비휘발성 아님 (전원 끄면 데이터 사라짐)&lt;br /&gt;
*refresh 필요 → 전력 소모&lt;br /&gt;
*SRAM보다 접근 시간이 느림&lt;br /&gt;
*On-chip SRAM 대비 latency가 매우 큼&lt;br /&gt;
==DRAM 성능 특성==&lt;br /&gt;
DRAM은 지방성(locality)에 따라 성능 편차가 크다.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Row Buffer Hit&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 같은 Row 내에서 반복 접근 → 빠름&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Row Buffer Miss&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 다른 Row로 이동하면 precharge &amp;amp; activate 과정 필요 → 느림&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Latency&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DRAM latency는 수십 ns~백 ns로,  SRAM(수 ns)과 큰 격차가 있다.&lt;br /&gt;
&lt;br /&gt;
==DRAM과 AI Accelerator==&lt;br /&gt;
AI Accelerator 구조에서 DRAM은 매우 중요한 역할을 한다.&lt;br /&gt;
===DRAM의 높은 에너지 비용===&lt;br /&gt;
딥러닝 가속기에서 가장 큰 병목은 출입/메모리 이동 비용이다.&lt;br /&gt;
&lt;br /&gt;
Normalized Energy Cost 예:&lt;br /&gt;
*ALU 연산 = 1×&lt;br /&gt;
*Register File = 2×&lt;br /&gt;
*On-chip SRAM(Buffer) = 6×&lt;br /&gt;
*&#039;&#039;&#039;DRAM 접근 = 200×&#039;&#039;&#039;&lt;br /&gt;
즉:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;딥러닝 연산에서 계산보다 더 비싼 것은 DRAM에서 데이터를 불러오는 비용이다.&#039;&#039;&#039;&lt;br /&gt;
===DRAM의 역할 (AI 가속기에서)===&lt;br /&gt;
*모델 가중치(Weights), Activation, Intermediate tensor의 대규모 저장 공간&lt;br /&gt;
*On-chip SRAM에 올려놓지 못한 데이터를 캐싱하는 역할&lt;br /&gt;
*GPU/TPU의 HBM 또한 DRAM의 고성능 버전임&lt;br /&gt;
===DRAM 병목 해결을 위한 기술===&lt;br /&gt;
*On-chip SRAM(Activation SRAM, Weight SRAM) 확장&lt;br /&gt;
*데이터 재사용(Data Reuse) 극대화&lt;br /&gt;
*Systolic array 구조로 DRAM 왕복 최소화&lt;br /&gt;
*HBM (High Bandwidth Memory) 도입&lt;br /&gt;
*Memory tiling, blocking, fusion 최적화&lt;br /&gt;
==DRAM과 SRAM 비교==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!DRAM&lt;br /&gt;
!SRAM&lt;br /&gt;
|-&lt;br /&gt;
|구조||1T1C (트랜지스터+커패시터)||6T (6개의 트랜지스터)&lt;br /&gt;
|-&lt;br /&gt;
|속도||느림||빠름&lt;br /&gt;
|-&lt;br /&gt;
|refresh||필요함||불필요&lt;br /&gt;
|-&lt;br /&gt;
|집적도||높음||낮음&lt;br /&gt;
|-&lt;br /&gt;
|가격||저렴함||비쌈&lt;br /&gt;
|-&lt;br /&gt;
|용도||주기억장치(DDR, LPDDR, HBM)||Cache, on-chip buffer&lt;br /&gt;
|}&lt;br /&gt;
==DRAM의 종류==&lt;br /&gt;
===[[DDR (메모리)|DDR]] (Double Data Rate DRAM)===&lt;br /&gt;
데스크톱/서버 메모리의 표준 규격.&lt;br /&gt;
===[[LPDDR]]===&lt;br /&gt;
모바일 기기용 저전력 DRAM.&lt;br /&gt;
===[[HBM]] (High Bandwidth Memory)===&lt;br /&gt;
GPU/AI 가속기용 초고대역폭 DRAM.  HBM은 칩과 매우 가까운 3D 스택 구조로 배치되어 대역폭을 극대화한다.&lt;br /&gt;
==활용 분야==&lt;br /&gt;
*컴퓨터, 서버, 노트북&lt;br /&gt;
*스마트폰 및 태블릿&lt;br /&gt;
*GPU 및 AI 가속기 메모리(HBM)&lt;br /&gt;
*게임 콘솔&lt;br /&gt;
*네트워크 장비&lt;br /&gt;
*임베디드 시스템&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[SRAM]]&lt;br /&gt;
*[[HBM]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[TPU]]&lt;br /&gt;
*[[AI 가속기|AI Accelerator]]&lt;br /&gt;
*[[메모리 계층 구조]]&lt;br /&gt;
*[[딥 러닝 가속기]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*DRAM 아키텍처 기술 문서&lt;br /&gt;
*JEDEC DDR/LPDDR/HBM 규격&lt;br /&gt;
*AI Accelerator 및 메모리 계층 최적화 관련 학술 논문&lt;br /&gt;
[[분류:컴퓨터 구조]]&lt;br /&gt;
[[분류:하드웨어]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=CuBLAS&amp;diff=41731</id>
		<title>CuBLAS</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=CuBLAS&amp;diff=41731"/>
		<updated>2025-11-19T20:13:59Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;cuBLAS&amp;#039;&amp;#039;&amp;#039;는 NVIDIA가 제공하는 고성능 GPU 가속 선형대수(Liner Algebra) 라이브러리로, BLAS(Basic Linear Algebra Subprograms) 표준을 GPU에서 빠르게 실행할 수 있도록 구현한 라이브러리이다. 행렬-벡터 곱, 행렬-행렬 곱(GEMM), 벡터 연산 등 딥러닝과 과학 계산의 핵심 연산을 효율적으로 처리하기 위해 최고의 성능을 제공한다.  ==개요== cuBLAS는 CPU에서 실행되는 BLAS를 GPU로 이식한...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;cuBLAS&#039;&#039;&#039;는 NVIDIA가 제공하는 고성능 GPU 가속 선형대수(Liner Algebra) 라이브러리로, BLAS(Basic Linear Algebra Subprograms) 표준을 GPU에서 빠르게 실행할 수 있도록 구현한 라이브러리이다. 행렬-벡터 곱, 행렬-행렬 곱(GEMM), 벡터 연산 등 딥러닝과 과학 계산의 핵심 연산을 효율적으로 처리하기 위해 최고의 성능을 제공한다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
cuBLAS는 CPU에서 실행되는 BLAS를 GPU로 이식한 것이 아니라, NVIDIA GPU 아키텍처 특성을 적극 활용하여 재설계한 고성능 라이브러리이다.  딥러닝 프레임워크(PyTorch, TensorFlow), HPC(고성능 컴퓨팅), 시뮬레이션, 공학 계산 등 다양한 분야에서 핵심 연산 엔진으로 사용된다.&lt;br /&gt;
==주요 기능==&lt;br /&gt;
===행렬-행렬 곱 (GEMM)===&lt;br /&gt;
GEMM은 &amp;quot;General Matrix-Matrix Multiplication&amp;quot;의 약자로, cuBLAS의 핵심이며 다음과 같은 연산을 GPU에서 매우 빠르게 수행한다:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
C = α * A * B + β * C&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;GEMM 연산은 신경망의:&lt;br /&gt;
*Linear layer (Fully Connected Layer)&lt;br /&gt;
*Attention(QKᵀ, QKᵀV)&lt;br /&gt;
*Transformer의 projection layer&lt;br /&gt;
*CNN의 im2col 기반 convolution&lt;br /&gt;
등에서 가장 많이 사용된다.&lt;br /&gt;
===행렬-벡터 곱 (GEMV) 및 벡터 연산===&lt;br /&gt;
*GEMV: Matrix-Vector Multiplication&lt;br /&gt;
*DOT: dot product&lt;br /&gt;
*AXPY: Y ← αX + Y&lt;br /&gt;
*SCAL: scaling&lt;br /&gt;
*ASUM, NRM2 등 다양한 BLAS Level-1/2 연산 지원&lt;br /&gt;
cuBLAS는 일반 수학 및 물리 계산에서도 널리 쓰인다.&lt;br /&gt;
===Mixed Precision 지원===&lt;br /&gt;
현대 GPU의 Tensor Core를 활용해 다음 정밀도의 고속 연산을 지원한다:&lt;br /&gt;
*FP32&lt;br /&gt;
*FP16&lt;br /&gt;
*BF16&lt;br /&gt;
*TF32&lt;br /&gt;
특히 딥러닝에서는 FP16/BF16 기반 연산이 표준이며 cuBLAS는 이를 최적화하여 매우 높은 throughput을 제공한다.&lt;br /&gt;
==cuDNN과의 관계==&lt;br /&gt;
cuBLAS는 &#039;&#039;&#039;일반 선형대수 연산&#039;&#039;&#039;을 담당하고,  &#039;&#039;&#039;cuDNN은 딥러닝 전용 연산&#039;&#039;&#039;을 담당하는 구조이다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!cuBLAS&lt;br /&gt;
!cuDNN&lt;br /&gt;
|-&lt;br /&gt;
|목적||선형대수(행렬, 벡터 연산)||딥러닝 특화 연산(Conv, RNN, Norm 등)&lt;br /&gt;
|-&lt;br /&gt;
|대표 기능||GEMM, DOT, AXPY, SCAL||Conv, Pool, BatchNorm, RNN&lt;br /&gt;
|-&lt;br /&gt;
|딥러닝에서의 역할||Dense layer / Attention 가속||CNN / RNN 가속&lt;br /&gt;
|}예를 들어 Transformer 모델은 대부분의 연산이 GEMM 기반이므로 cuBLAS 의존도가 크다.&lt;br /&gt;
==성능 특징==&lt;br /&gt;
===고성능 연산 최적화===&lt;br /&gt;
*NVIDIA GPU 아키텍처(SM, Warp, Tensor Core)에 맞춘 최적화&lt;br /&gt;
*Strided memory access 최적화&lt;br /&gt;
*Fused-multiply-accumulate(FMA) 활용&lt;br /&gt;
===Tensor Core 가속===&lt;br /&gt;
*Ampere, Hopper 등의 아키텍처에서 Mixed Precision 기반 연산을 극적으로 가속&lt;br /&gt;
*FP16/BF16 기반 연산은 cuBLAS가 가장 빠른 matmul 성능을 제공&lt;br /&gt;
===대규모 HPC 및 ML 워크로드 기반===&lt;br /&gt;
다중 GPU, 분산 처리 환경에서 성능을 최대로 끌어올릴 수 있도록 설계되었다.&lt;br /&gt;
==딥러닝 프레임워크와의 통합==&lt;br /&gt;
cuBLAS는 다음 프레임워크에서 내부적으로 자동 사용된다:&lt;br /&gt;
===PyTorch===&lt;br /&gt;
*`torch.matmul`, `nn.Linear`, `attention` 연산은 cuBLAS 기반&lt;br /&gt;
*대부분의 Tensor Core matmul은 cuBLASLt backend 사용&lt;br /&gt;
===TensorFlow===&lt;br /&gt;
*Dense layer (MatMul), attention, projection layer에서 활용&lt;br /&gt;
*XLA를 통한 fused matmul도 cuBLAS 기반&lt;br /&gt;
===JAX===&lt;br /&gt;
*XLA 내부에서 cuBLAS를 호출해 matmul을 가속&lt;br /&gt;
==cuBLASLt==&lt;br /&gt;
NVIDIA는 matmul 최적화를 더 강화한 &#039;&#039;cuBLASLt&#039;&#039; 라이브러리를 제공한다:&lt;br /&gt;
*튜닝 가능한 high-performance GEMM&lt;br /&gt;
*다양한 layout 지원&lt;br /&gt;
*자동 kernel selection&lt;br /&gt;
*더 강력한 Tensor Core 활용&lt;br /&gt;
PyTorch와 TensorFlow는 대형 모델에서 cuBLAS 대신 cuBLASLt를 활용하는 경우가 많다.&lt;br /&gt;
==아키텍처==&lt;br /&gt;
cuBLAS는 다음 구성 요소로 이루어진다:&lt;br /&gt;
*GPU kernel 라이브러리&lt;br /&gt;
*고성능 GEMM 알고리즘&lt;br /&gt;
*Tensor Core acceleration engine&lt;br /&gt;
*메모리/stride layout 최적화&lt;br /&gt;
==장점==&lt;br /&gt;
*GPU에서 가장 빠른 범용 선형대수 성능 제공&lt;br /&gt;
*딥러닝, HPC, 물리 시뮬레이션 등 폭넓은 활용&lt;br /&gt;
*Tensor Core 최적화와 mixed precision 지원&lt;br /&gt;
*프레임워크에서 자동 사용 → 사용자 설정 불필요&lt;br /&gt;
==한계==&lt;br /&gt;
*NVIDIA GPU 전용&lt;br /&gt;
*딥러닝 특화 연산(Conv, RNN 등)은 cuDNN 필요&lt;br /&gt;
*사용자 정의 커널에는 Triton 또는 CUDA 필요&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[cuDNN]]&lt;br /&gt;
*[[CUDA]]&lt;br /&gt;
*[[PyTorch]]&lt;br /&gt;
*[[TensorFlow]]&lt;br /&gt;
*[[BLAS]]&lt;br /&gt;
*[[Triton]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Dongarra, Jack J., et al. &#039;&#039;A Proposed Standard for Basic Linear Algebra Subprograms.&#039;&#039; (BLAS specification)&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:병렬 처리]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=CuDNN&amp;diff=41730</id>
		<title>CuDNN</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=CuDNN&amp;diff=41730"/>
		<updated>2025-11-19T20:08:11Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;cuDNN&amp;#039;&amp;#039;&amp;#039;(CUDA Deep Neural Network Library)은 NVIDIA가 제공하는 고성능 GPU 가속 딥러닝 라이브러리로, 합성곱 신경망(Convolutional Neural Networks), 순환 신경망(RNN), 정규화, 활성화 함수 등 딥러닝에서 자주 사용되는 연산을 최적화된 GPU 커널로 제공한다. TensorFlow, PyTorch, JAX 등 대부분의 주요 딥러닝 프레임워크는 cuDNN을 자동으로 사용하여 GPU에서의 학습 및 추론 성능을 크게 향...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;cuDNN&#039;&#039;&#039;(CUDA Deep Neural Network Library)은 NVIDIA가 제공하는 고성능 GPU 가속 딥러닝 라이브러리로, 합성곱 신경망(Convolutional Neural Networks), 순환 신경망(RNN), 정규화, 활성화 함수 등 딥러닝에서 자주 사용되는 연산을 최적화된 GPU 커널로 제공한다. TensorFlow, PyTorch, JAX 등 대부분의 주요 딥러닝 프레임워크는 cuDNN을 자동으로 사용하여 GPU에서의 학습 및 추론 성능을 크게 향상시킨다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
cuDNN은 개발자가 복잡한 CUDA 코드를 직접 작성하지 않아도 딥러닝 주요 연산을 빠르고 안정적으로 GPU에서 수행할 수 있도록 설계된 라이브러리이다. NVIDIA GPU 아키텍처에 맞춰 깊이 최적화되어 있으며, 커널 선택 및 오토튜닝(autotuning), 텐서 코어 활용, 혼합 정밀도(mixed precision) 연산 등을 지원한다.&lt;br /&gt;
&lt;br /&gt;
cuDNN은 다음과 같은 특징을 가진다:&lt;br /&gt;
*딥러닝에 특화된 고성능 GPU 커널 제공&lt;br /&gt;
*복잡한 CUDA 커널 작성 불필요&lt;br /&gt;
*프레임워크에서 자동 사용&lt;br /&gt;
*최신 텐서 코어(Tensor Core)를 이용한 높은 효율&lt;br /&gt;
==지원하는 주요 연산==&lt;br /&gt;
===합성곱 연산 (Convolution)===&lt;br /&gt;
cuDNN의 가장 핵심 기능으로, CNN에서 필요한 2D/3D convolution을 다양한 최적화 알고리즘과 함께 제공한다.&lt;br /&gt;
*direct convolution&lt;br /&gt;
*FFT-based convolution&lt;br /&gt;
*Winograd convolution&lt;br /&gt;
*자동 알고리즘 선택 및 autotune 기능&lt;br /&gt;
===풀링 (Pooling)===&lt;br /&gt;
*Max pooling&lt;br /&gt;
*Average pooling&lt;br /&gt;
*Global pooling&lt;br /&gt;
===정규화 (Normalization)===&lt;br /&gt;
*Batch Normalization&lt;br /&gt;
*Layer Normalization&lt;br /&gt;
*Group Normalization&lt;br /&gt;
===활성화 함수 (Activation Functions)===&lt;br /&gt;
*ReLU&lt;br /&gt;
*Leaky ReLU&lt;br /&gt;
*ELU&lt;br /&gt;
*tanh&lt;br /&gt;
*sigmoid&lt;br /&gt;
===RNN / LSTM 연산===&lt;br /&gt;
순환 신경망(RNN), GRU, LSTM 등 시퀀스 모델링을 위한 최적화된 커널 제공.&lt;br /&gt;
==성능 특징==&lt;br /&gt;
===텐서 코어(Tensor Core) 최적화===&lt;br /&gt;
NVIDIA Volta, Turing, Ampere, Hopper 아키텍처에서 제공되는 텐서 코어를 활용하여:&lt;br /&gt;
*FP16, BF16, TF32 등 저정밀도 연산 가속&lt;br /&gt;
*매우 높은 throughput&lt;br /&gt;
*대규모 딥러닝 모델 학습 속도 향상&lt;br /&gt;
===Mixed Precision 지원===&lt;br /&gt;
FP16, BF16 기반의 가속을 지원하며,  AMP(Automatic Mixed Precision)와 함께 사용할 경우 정확도를 유지하면서 속도 및 메모리 효율을 크게 높일 수 있다.&lt;br /&gt;
===알고리즘 자동 선택 (Autotuning)===&lt;br /&gt;
입력 크기, GPU 아키텍처에 따라 가장 빠른 커널 알고리즘을 자동으로 선택하는 기능을 제공한다.&lt;br /&gt;
==PyTorch, TensorFlow와의 통합==&lt;br /&gt;
대부분의 딥러닝 프레임워크는 cuDNN을 내부적으로 자동 호출한다.&lt;br /&gt;
===PyTorch===&lt;br /&gt;
*`torch.nn.Conv2d`, `RNN/LSTM`, `BatchNorm` 등은 내부적으로 cuDNN 커널을 사용한다.&lt;br /&gt;
*`torch.backends.cudnn.benchmark = True` 시, 자동 autotuning 활성화.&lt;br /&gt;
===TensorFlow===&lt;br /&gt;
*Keras Conv2D, LSTM, BatchNorm 등이 cuDNN 기반으로 가속됨.&lt;br /&gt;
*GPU 런타임이 cuDNN과 자동 연동됨.&lt;br /&gt;
===JAX===&lt;br /&gt;
*일부 convolution, normalization 연산이 cuDNN을 통해 가속됨.&lt;br /&gt;
==[[cuBLAS]]와의 차이==&lt;br /&gt;
cuDNN은 딥러닝에 특화된 연산을 제공하는 반면,  &#039;&#039;&#039;cuBLAS&#039;&#039;&#039;는 범용 선형대수 연산(GEMM 등)을 제공한다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!항목&lt;br /&gt;
!cuDNN&lt;br /&gt;
!cuBLAS&lt;br /&gt;
|-&lt;br /&gt;
|목적||딥러닝 전용 연산||선형대수 일반 연산&lt;br /&gt;
|-&lt;br /&gt;
|대표 기능||Conv, Pooling, Norm, RNN||Matmul(GEMM), Dot, Axpy&lt;br /&gt;
|-&lt;br /&gt;
|사용 프레임워크||PyTorch, TensorFlow, JAX||PyTorch, TensorFlow, NumPy GPU 버전 등&lt;br /&gt;
|-&lt;br /&gt;
|장점||CNN/RNN 최적화, autotune||기본 matmul 고성능&lt;br /&gt;
|}&lt;br /&gt;
==아키텍처==&lt;br /&gt;
cuDNN은 다음 요소로 구성된다:&lt;br /&gt;
*고성능 CUDA 커널 라이브러리&lt;br /&gt;
*알고리즘 선택 엔진&lt;br /&gt;
*텐서 코어 컨트롤러&lt;br /&gt;
*메모리 최적화 유닛&lt;br /&gt;
*다양한 딥러닝 primitive API&lt;br /&gt;
==장점==&lt;br /&gt;
*높은 성능으로 CNN 및 RNN 학습 속도 향상&lt;br /&gt;
*안정적인 GPU 가속 지원&lt;br /&gt;
*CUDA보다 개발 난이도가 낮음&lt;br /&gt;
*프레임워크에서 자동으로 호출되므로 사용자가 별도 설정 필요 없음&lt;br /&gt;
==한계==&lt;br /&gt;
*NVIDIA GPU 전용&lt;br /&gt;
*완전한 커스텀 연산은 Triton 또는 CUDA가 필요&lt;br /&gt;
*커널이 블랙박스 형태로 제공되어 세부 수정 불가능&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[cuBLAS]]&lt;br /&gt;
*[[CUDA]]&lt;br /&gt;
*[[PyTorch]]&lt;br /&gt;
*[[TensorFlow]]&lt;br /&gt;
*[[딥 러닝 컴파일러]]&lt;br /&gt;
*[[Triton]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Chetlur, Sharan, et al. &#039;&#039;cuDNN: Efficient primitives for deep learning.&#039;&#039; arXiv:1410.0759 (2014).&lt;br /&gt;
*NVIDIA cuDNN 공식 문서&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=PyTorch&amp;diff=41729</id>
		<title>PyTorch</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=PyTorch&amp;diff=41729"/>
		<updated>2025-11-19T20:05:07Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 파이토치 문서로 넘겨주기&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#넘겨주기 [[파이토치]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%B4%ED%86%A0%EC%B9%98&amp;diff=41728</id>
		<title>파이토치</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%B4%ED%86%A0%EC%B9%98&amp;diff=41728"/>
		<updated>2025-11-19T20:04:45Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;PyTorch&amp;#039;&amp;#039;&amp;#039;는 Meta(구 Facebook) AI Research(FAIR)에서 개발한 딥러닝 프레임워크로, 동적 계산 그래프(dynamic computation graph)와 파이썬 친화적 인터페이스를 기반으로 한 고성능 머신 러닝/딥러닝 라이브러리이다. 자연어 처리, 컴퓨터 비전, 대규모 모델 연구 등 다양한 분야에서 사실상 표준적으로 사용되는 프레임워크 중 하나이다.  ==개요== PyTorch는 파이썬 문법과 자연스럽...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PyTorch&#039;&#039;&#039;는 Meta(구 Facebook) AI Research(FAIR)에서 개발한 딥러닝 프레임워크로, 동적 계산 그래프(dynamic computation graph)와 파이썬 친화적 인터페이스를 기반으로 한 고성능 머신 러닝/딥러닝 라이브러리이다. 자연어 처리, 컴퓨터 비전, 대규모 모델 연구 등 다양한 분야에서 사실상 표준적으로 사용되는 프레임워크 중 하나이다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
PyTorch는 파이썬 문법과 자연스럽게 통합된 프로그래밍 모델을 제공하며, 텐서 연산, 자동 미분(autograd), GPU 가속, 모델 학습 및 배포 지원 등을 포함한다. 동적 실행 방식(eager execution)을 중심으로 설계되어 코드 흐름이 자연스럽고 디버깅이 쉬우며, 연구자·개발자에게 높은 생산성을 제공한다.&lt;br /&gt;
==역사==&lt;br /&gt;
PyTorch는 2016년 Meta AI Research에서 처음 공개되었으며, 초기 Torch(Lua 기반)의 철학과 Chainer의 define-by-run 동적 그래프 아이디어를 발전시켜 현대적인 파이썬 기반 프레임워크로 재구성되었다. 주요 초기 개발자는 Adam Paszke, Soumith Chintala, Sam Gross, Gregory Chanan 등이다.&lt;br /&gt;
&lt;br /&gt;
PyTorch는 이후 활발한 커뮤니티 성장과 더불어 산업계·연구계에서 폭넓은 채택을 이루었으며, 2023년 PyTorch Foundation이 설립되며 독립적인 오픈소스 생태계를 형성하게 되었다.&lt;br /&gt;
==특징==&lt;br /&gt;
===동적 계산 그래프 (Define-by-Run)===&lt;br /&gt;
PyTorch는 실행 즉시 그래프를 구성하는 동적 그래프 방식을 사용한다.&lt;br /&gt;
*파이썬 제어 흐름(if, for, while) 자유롭게 사용 가능&lt;br /&gt;
*디버깅이 쉽고 직관적&lt;br /&gt;
*복잡한 모델 구조 정의에 유리&lt;br /&gt;
===Autograd (자동 미분 엔진)===&lt;br /&gt;
PyTorch의 autograd는 연산 그래프를 기록하고 역전파(backpropagation)를 자동으로 계산한다.&lt;br /&gt;
*다양한 연산에 대한 미분 규칙 내장&lt;br /&gt;
*reverse-mode automatic differentiation 기반&lt;br /&gt;
*커스텀 autograd 함수 정의 가능&lt;br /&gt;
예시:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
x = torch.tensor(2.0, requires_grad=True)&lt;br /&gt;
y = x*2 + x*3&lt;br /&gt;
y.backward()&lt;br /&gt;
print(x.grad)  # 5.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===고성능 텐서 연산===&lt;br /&gt;
PyTorch는 CPU/CUDA 백엔드(ATen)를 통해 고성능 텐서 연산을 제공하며,  GPU 가속을 위한 CUDA, cuDNN, cuBLAS를 비롯해 다양한 최적화 기능을 활용한다.&lt;br /&gt;
===TorchScript 및 컴파일 기능===&lt;br /&gt;
PyTorch 1.x에서 제공된 TorchScript는 모델을 직렬화하고 최적화된 실행을 가능하게 한다.  PyTorch 2.0에서는 다음과 같은 새로운 컴파일 스택이 도입되었다:&lt;br /&gt;
*&#039;&#039;&#039;TorchDynamo&#039;&#039;&#039; – Python bytecode 분석 기반 그래프 추출&lt;br /&gt;
*&#039;&#039;&#039;AOTAutograd&#039;&#039;&#039; – Autograd 그래프 분리&lt;br /&gt;
*&#039;&#039;&#039;TorchInductor&#039;&#039;&#039; – 커널 최적화 및 코드 생성&lt;br /&gt;
*&#039;&#039;&#039;[[Triton (인공지능)|Triton]]&#039;&#039;&#039; – GPU 커널 자동 생성 및 고성능 fused kernel 활용&lt;br /&gt;
이를 통해 동적 그래프 기반 PyTorch에서도 정적 최적화 수준의 고성능을 달성한다.&lt;br /&gt;
===NumPy 친화성===&lt;br /&gt;
PyTorch는 NumPy 배열과 텐서를 손쉽게 변환하며, 메모리를 공유할 수 있다.&lt;br /&gt;
*`torch.from_numpy()`&lt;br /&gt;
*`tensor.numpy()`&lt;br /&gt;
===멀티플랫폼 지원===&lt;br /&gt;
*CPU, GPU(NVIDIA CUDA), AMD ROCm&lt;br /&gt;
*모바일 — PyTorch Mobile&lt;br /&gt;
*서버 및 클라우드 — TorchServe, ONNX 변환 가능&lt;br /&gt;
==아키텍처==&lt;br /&gt;
PyTorch의 내부 구조는 크게 다음과 같다:&lt;br /&gt;
===Python Frontend===&lt;br /&gt;
사용자가 작성하는 파이썬 코드. 네트워크 정의, 제어 흐름, 모델 조립 등을 담당.&lt;br /&gt;
===ATen Tensor Library===&lt;br /&gt;
PyTorch의 핵심 텐서 라이브러리.&lt;br /&gt;
*C++로 구현&lt;br /&gt;
*CPU/GPU 공통 API&lt;br /&gt;
*operator dispatch 시스템을 통해 디바이스 선택&lt;br /&gt;
===Autograd Engine===&lt;br /&gt;
연산 그래프를 기록하고 역전파를 계산하는 C++ 기반 엔진.&lt;br /&gt;
===Backend Kernels===&lt;br /&gt;
*CUDA kernels&lt;br /&gt;
*cuBLAS, cuDNN&lt;br /&gt;
*Triton kernels (PyTorch 2.0 이후)&lt;br /&gt;
===Memory Management===&lt;br /&gt;
*CPU allocator&lt;br /&gt;
*GPU caching allocator&lt;br /&gt;
*pinned memory 지원&lt;br /&gt;
==주요 기능==&lt;br /&gt;
===신경망 모듈 (torch.nn)===&lt;br /&gt;
신경망 레이어, 손실 함수, 활성화 함수, 컨테이너 모듈 등 제공.&lt;br /&gt;
===최적화(optim)===&lt;br /&gt;
SGD, Adam, RMSProp 등 다양한 옵티마이저 제공.&lt;br /&gt;
===데이터 로더===&lt;br /&gt;
효율적인 mini-batch 관리를 위한 Dataset/DataLoader API 제공.&lt;br /&gt;
===분산 학습===&lt;br /&gt;
*DistributedDataParallel (DDP)&lt;br /&gt;
*RPC Framework&lt;br /&gt;
*Fully Sharded Data Parallel (FSDP)&lt;br /&gt;
==채택 사례==&lt;br /&gt;
*대형 언어 모델(LLM) 연구&lt;br /&gt;
*컴퓨터 비전 모델(ResNet, ViT 등)&lt;br /&gt;
*자연어 처리(BERT, GPT 등)&lt;br /&gt;
*강화학습&lt;br /&gt;
*대규모 분산 학습&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[Triton]]&lt;br /&gt;
*[[TensorFlow]]&lt;br /&gt;
*[[JAX]]&lt;br /&gt;
*[[ONNX]]&lt;br /&gt;
*[[자동 미분]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Paszke, Adam, et al. &#039;&#039;PyTorch: An imperative style, high-performance deep learning library.&#039;&#039; Advances in Neural Information Processing Systems 32 (2019).&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:파이썬]]&lt;br /&gt;
[[분류:프로그래밍]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Triton_(%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5)&amp;diff=41727</id>
		<title>Triton (인공지능)</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Triton_(%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5)&amp;diff=41727"/>
		<updated>2025-11-19T19:51:43Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;Triton&amp;#039;&amp;#039;&amp;#039;은 Python 기반으로 GPU 커널을 작성할 수 있게 해주는 오픈소스 언어 및 컴파일러로, 고성능 CUDA 수준의 연산을 훨씬 간단한 코드로 구현할 수 있도록 설계되었다. 원래 Harvard 및 OpenAI에서 개발되었으며, 현재는 PyTorch의 컴파일 스택에 통합되어 딥러닝 연산 최적화를 위해 널리 사용되고 있다.  ==개요== Triton은 연구자와 개발자가 복잡하고 오류가 발생하기 쉬...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Triton&#039;&#039;&#039;은 Python 기반으로 GPU 커널을 작성할 수 있게 해주는 오픈소스 언어 및 컴파일러로, 고성능 CUDA 수준의 연산을 훨씬 간단한 코드로 구현할 수 있도록 설계되었다. 원래 Harvard 및 OpenAI에서 개발되었으며, 현재는 PyTorch의 컴파일 스택에 통합되어 딥러닝 연산 최적화를 위해 널리 사용되고 있다.&lt;br /&gt;
&lt;br /&gt;
==개요==&lt;br /&gt;
Triton은 연구자와 개발자가 복잡하고 오류가 발생하기 쉬운 CUDA C++ 코드를 직접 작성하지 않고도, Python 스타일의 간결한 문법으로 고성능 GPU 커널을 작성할 수 있게 한다. Triton 컴파일러는 이러한 코드를 GPU 실행 가능한 저수준 커널 코드로 자동 변환하며, 연산 최적화, 자동 타일링, 벡터라이제이션 등 다양한 성능 향상 기능을 제공한다.&lt;br /&gt;
==특징==&lt;br /&gt;
===Python 기반 GPU 커널 작성===&lt;br /&gt;
Triton은 GPU 커널을 Python 코드처럼 작성하며, 이를 컴파일하여 CUDA 수준의 고성능을 제공한다.&lt;br /&gt;
*Python과 유사한 문법&lt;br /&gt;
*저수준 메모리 접근 및 병렬 처리 구조를 자동 최적화&lt;br /&gt;
*복잡한 CUDA boilerplate 코드 불필요&lt;br /&gt;
===자동 타일링 및 벡터라이제이션===&lt;br /&gt;
Triton 컴파일러는 matmul, convolution 같은 구조화된 연산에 대해:&lt;br /&gt;
*자동 타일 크기 선택&lt;br /&gt;
*Vectorized memory load/store&lt;br /&gt;
*Shared memory 활용&lt;br /&gt;
*워프/스레드 구조 최적화&lt;br /&gt;
를 처리하여, GPU 아키텍처에 맞춘 성능 이식성을 제공한다.&lt;br /&gt;
===커널 Fusion 친화적 구조===&lt;br /&gt;
Triton은 PyTorch 2.0의 TorchInductor와 결합하여 연산 그래프의 연속된 연산들을 하나의 fused kernel로 압축할 수 있다. 이는 메모리 왕복 및 커널 호출 오버헤드를 크게 감소시키며, 트레이닝 및 추론 성능 향상에 기여한다.&lt;br /&gt;
===간결한 문법===&lt;br /&gt;
예시:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import triton&lt;br /&gt;
import triton.language as tl&lt;br /&gt;
&lt;br /&gt;
@triton.jit&lt;br /&gt;
def matmul_kernel(a_ptr, b_ptr, c_ptr, M, N, K):&lt;br /&gt;
    pid = tl.program_id(0)&lt;br /&gt;
    row = pid * 16 + tl.arange(0, 16)&lt;br /&gt;
    col = tl.arange(0, 16)&lt;br /&gt;
    a = tl.load(a_ptr + row[:, None] * K + tl.arange(0, K))&lt;br /&gt;
    b = tl.load(b_ptr + tl.arange(0, K)[:, None] * N + col)&lt;br /&gt;
    c = tl.dot(a, b)&lt;br /&gt;
    tl.store(c_ptr + row[:, None] * N + col, c)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;위 코드는 전형적인 16×16 타일 기반 행렬 곱셈 커널이며, CUDA와 비교하면 훨씬 짧고 직관적이다.&lt;br /&gt;
==필요성 및 배경==&lt;br /&gt;
GPU 프로그래밍은 전통적으로 CUDA C++을 사용해야 했지만:&lt;br /&gt;
*boilerplate 코드가 많고&lt;br /&gt;
*메모리 접근 패턴 설계가 어렵고&lt;br /&gt;
*오류 발생률이 높으며&lt;br /&gt;
*cuDNN/cuBLAS가 제공하지 않는 커스텀 fused kernel이 필요할 때 문제가 발생했다.&lt;br /&gt;
Triton은 이러한 문제를 해결하기 위해 등장한 언어로,  프레임워크 개발자 및 연구자들이 보다 쉽게 커스텀 고성능 GPU 연산을 구축할 수 있게 한다.&lt;br /&gt;
==PyTorch와의 통합==&lt;br /&gt;
PyTorch 2.0에서 Triton은 중요한 역할을 한다.&lt;br /&gt;
===TorchInductor Backend===&lt;br /&gt;
*PyTorch eager graph를 분석&lt;br /&gt;
*연산을 그룹화(fusion)&lt;br /&gt;
*Triton kernel로 자동 생성&lt;br /&gt;
*GPU에서 실행&lt;br /&gt;
이를 통해 기존 PyTorch 대비 상당한 성능 향상을 제공한다.&lt;br /&gt;
===예시 활용 분야===&lt;br /&gt;
*LayerNorm, Softmax 같은 element-wise 연산 최적화&lt;br /&gt;
*Attention 연산의 fused kernel&lt;br /&gt;
*Custom matmul / conv 변형&lt;br /&gt;
*Transformer block 내 다양한 연산 통합&lt;br /&gt;
==장점==&lt;br /&gt;
*CUDA 수준의 성능을 Python 기반으로 달성 가능&lt;br /&gt;
*학습曲線이 CUDA보다 훨씬 낮음&lt;br /&gt;
*유지보수 및 커스텀 연산 개발에 유리&lt;br /&gt;
*PyTorch와의 긴밀한 통합으로 실질적 속도 향상 제공&lt;br /&gt;
==한계==&lt;br /&gt;
*CUDA, cuDNN, cuBLAS만큼 성숙하지는 않음&lt;br /&gt;
*매우 복잡한 커널이나 SM 구조에 최적화된 커널은 직접 CUDA로 작성해야 할 수도 있음&lt;br /&gt;
*NVIDIA GPU 중심 생태계 (다른 GPU 아키텍처 지원은 제한적)&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[PyTorch]]&lt;br /&gt;
*[[CUDA]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[자동 미분]]&lt;br /&gt;
*[[딥 러닝 컴파일러]]&lt;br /&gt;
*[[XLA]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*T. Tillet, H.-T. Kung, D. Cox, &#039;&#039;Triton: An intermediate language and compiler for tiled neural network computations.&#039;&#039; Proceedings of ACM SIGPLAN International Workshop on Machine Learning and Programming Languages (2019).&lt;br /&gt;
*PyTorch Triton 공식 문서&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%94%A5_%EB%9F%AC%EB%8B%9D_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC&amp;diff=41726</id>
		<title>딥 러닝 프레임워크</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%94%A5_%EB%9F%AC%EB%8B%9D_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC&amp;diff=41726"/>
		<updated>2025-11-19T16:57:17Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: &amp;#039;&amp;#039;&amp;#039;딥 러닝 프레임워크(Deep Learning Frameworks)&amp;#039;&amp;#039;&amp;#039;는 인공 신경망 모델을 정의하고 학습하며 배포하기 위한 소프트웨어 도구와 라이브러리의 집합이다. 이러한 프레임워크는 자동 미분(autograd), 텐서 연산, GPU 가속, 모델 구조화, 데이터 파이프라인 구성 등 복잡한 과정을 추상화하여 연구자와 개발자가 효율적으로 딥러닝 모델을 개발할 수 있도록 돕는다.  딥러닝 프레임...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;딥 러닝 프레임워크(Deep Learning Frameworks)&#039;&#039;&#039;는 인공 신경망 모델을 정의하고 학습하며 배포하기 위한 소프트웨어 도구와 라이브러리의 집합이다. 이러한 프레임워크는 자동 미분(autograd), 텐서 연산, GPU 가속, 모델 구조화, 데이터 파이프라인 구성 등 복잡한 과정을 추상화하여 연구자와 개발자가 효율적으로 딥러닝 모델을 개발할 수 있도록 돕는다.&lt;br /&gt;
&lt;br /&gt;
딥러닝 프레임워크는 크게 &#039;&#039;&#039;그래프 모드(Graph Mode)&#039;&#039;&#039;와 &#039;&#039;&#039;이거 모드(Eager Mode)&#039;&#039;&#039;로 구분된다.&lt;br /&gt;
==개요==&lt;br /&gt;
딥러닝 프레임워크는 수학적 연산을 텐서 기반의 API로 제공하며, 학습 시 필요한 역전파(backpropagation), 옵티마이저, 손실 함수 등을 포함한다. 최근에는 컴파일러 기술, 그래프 최적화, 하드웨어 가속기 지원 등이 결합되면서 고성능 모델 학습 및 추론 환경을 제공한다.&lt;br /&gt;
==실행 방식에 따른 분류==&lt;br /&gt;
===그래프 모드(Graph Mode)===&lt;br /&gt;
그래프 모드는 정적 계산 그래프(static computation graph)를 먼저 정의한 뒤, 전체 그래프를 실행하는 방식이다.&lt;br /&gt;
;특징&lt;br /&gt;
*모델 구조를 먼저 그래프로 컴파일한 뒤 실행&lt;br /&gt;
*최적화 및 배포에 유리&lt;br /&gt;
*그래프 기반 분석 및 최적화 가능&lt;br /&gt;
*디버깅은 상대적으로 어려울 수 있음&lt;br /&gt;
;대표 프레임워크&lt;br /&gt;
*&#039;&#039;&#039;TensorFlow&#039;&#039;&#039; (초기 버전)&lt;br /&gt;
*&#039;&#039;&#039;Theano&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Caffe&#039;&#039;&#039;&lt;br /&gt;
===이거 모드(Eager Mode)===&lt;br /&gt;
이거 모드는 파이썬 코드가 실행되는 즉시 연산이 수행되는 동적 동작 방식이다.&lt;br /&gt;
;특징&lt;br /&gt;
*직관적인 파이썬 스타일 코드 작성&lt;br /&gt;
*실행 즉시 결과가 나오므로 디버깅 용이&lt;br /&gt;
*학습 개발 속도가 빠름&lt;br /&gt;
*최근에는 그래프 변환 및 컴파일 기능(TorchDynamo 등)으로 성능을 보완&lt;br /&gt;
;대표 프레임워크&lt;br /&gt;
*&#039;&#039;&#039;PyTorch&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Chainer&#039;&#039;&#039;&lt;br /&gt;
==주요 딥러닝 프레임워크 목록==&lt;br /&gt;
===PyTorch===&lt;br /&gt;
페이스북 AI Research(FAIR)에서 개발한 딥러닝 프레임워크로, 동적 그래프 기반 구조와 쉬운 디버깅이 장점이다. 연구자들에게 특히 인기가 높으며, PyTorch 2.0부터는 TorchDynamo, TorchInductor 등을 통한 컴파일 기능이 강화되었다.&lt;br /&gt;
===TensorFlow===&lt;br /&gt;
Google Brain에서 개발한 프레임워크로, 초기에는 정적 그래프 기반이었으나 TensorFlow 2.x에서 eager execution을 기본으로 채택하였다. 모바일 및 배포 생태계(TF Lite, TF Serving)가 잘 갖춰져 있다.&lt;br /&gt;
===Theano===&lt;br /&gt;
Python 기반 정적 그래프 프레임워크의 선구자로, 많은 현대 프레임워크의 기반 아이디어를 제공했다. 현재는 공식 개발이 종료되었다.&lt;br /&gt;
===Caffe===&lt;br /&gt;
이미지 처리에 특화된 초기 딥러닝 프레임워크로, 속도가 빠르고 모델 정의가 간결하지만 확장성은 제한적이다.&lt;br /&gt;
===Chainer===&lt;br /&gt;
Define-by-run 패러다임을 처음으로 제시한 동적 그래프 기반 프레임워크. PyTorch에 많은 영향을 주었으며 현재는 개발이 종료되었다.&lt;br /&gt;
==ML 소프트웨어–컴파일러 스택==&lt;br /&gt;
딥러닝 프레임워크는 하위 레벨의 컴파일러 및 하드웨어 가속기 기술과 결합하여 전체 ML 스택을 구성한다.&lt;br /&gt;
===ML Framework Layer===&lt;br /&gt;
모델을 정의하고 학습하는 고수준 인터페이스 계층  예: PyTorch, TensorFlow, Chainer, Caffe, Theano&lt;br /&gt;
===IR &amp;amp; 그래프 최적화 계층===&lt;br /&gt;
모델을 분석 가능한 중간 표현(IR)으로 변환하여 최적화  예: TorchDynamo, Torch FX, ONNX&lt;br /&gt;
===ML 컴파일러 / 코드 생성 계층===&lt;br /&gt;
그래프 최적화 결과를 기반으로 특정 하드웨어에 맞는 커널 코드를 생성  예: TVM, Triton, ONNX Runtime&lt;br /&gt;
===커널 라이브러리 계층===&lt;br /&gt;
행렬 연산 등 고성능 수학 연산이 구현된 저수준 라이브러리  예: cuDNN, cuBLAS, CUTLASS&lt;br /&gt;
===하드웨어 백엔드===&lt;br /&gt;
코드를 실제로 실행하는 물리적 장치  예: CPU, GPU, TPU, 기타 AI 가속기&lt;br /&gt;
==함께 보기==&lt;br /&gt;
*[[머신 러닝]]&lt;br /&gt;
*[[딥 러닝]]&lt;br /&gt;
*[[신경망]]&lt;br /&gt;
*[[GPU]]&lt;br /&gt;
*[[ONNX]]&lt;br /&gt;
==참고==&lt;br /&gt;
*PyTorch 공식 문서&lt;br /&gt;
*TensorFlow 공식 문서&lt;br /&gt;
*ONNX 기술 자료&lt;br /&gt;
[[분류:인공지능]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=MoDNN&amp;diff=41725</id>
		<title>MoDNN</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=MoDNN&amp;diff=41725"/>
		<updated>2025-11-12T23:51:40Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: MoDNN(Mobile Distributed Deep Neural Network, 2017년)은 여러 모바일 디바이스의 연산 자원을 결합하여 하나의 딥러닝 모델을 분산 추론하도록 설계된 기법이다. 단일 스마트폰이나 IoT 기기에서 처리하기 어려운 신경망 연산을 여러 노드가 협력하여 나누어 수행함으로써 추론 속도를 향상시키는 것을 목표로 한다. ==개요== MoDNN은 모바일 디바이스들이 서로 연결된 환경에서,...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MoDNN(Mobile Distributed Deep Neural Network, 2017년)은 여러 모바일 디바이스의 연산 자원을 결합하여 하나의 딥러닝 모델을 분산 추론하도록 설계된 기법이다. 단일 스마트폰이나 IoT 기기에서 처리하기 어려운 신경망 연산을 여러 노드가 협력하여 나누어 수행함으로써 추론 속도를 향상시키는 것을 목표로 한다.&lt;br /&gt;
==개요==&lt;br /&gt;
MoDNN은 모바일 디바이스들이 서로 연결된 환경에서, 각 디바이스의 CPU·GPU 성능과 배터리 상태를 실시간으로 평가하여 신경망 연산을 동적으로 분할한다. 이를 통해 단일 디바이스로는 실행이 어려운 대규모 신경망도 여러 노드가 협력하여 처리할 수 있도록 한다. MoDNN은 모델 일부를 나누어 실행하는 분산 추론(distributed inference)의 초기 연구 사례로 평가된다.&lt;br /&gt;
==구조==&lt;br /&gt;
MoDNN의 기본 구조는 다음과 같은 요소로 이루어진다.&lt;br /&gt;
*모바일 노드(Mobile Nodes): 각 스마트폰이나 IoT 디바이스가 하나의 노드가 되어 모델의 일부 레이어 또는 뉴런을 계산한다.&lt;br /&gt;
*2D 뉴런 분할(2D neuron partitioning): 신경망의 각 레이어를 2차원 격자 형태로 분할하여 여러 노드에 분배한다.&lt;br /&gt;
*동적 분할 스케줄러: 각 디바이스의 처리 속도, 배터리, 네트워크 상태를 고려하여 연산 비율을 조정한다.&lt;br /&gt;
*통신 모듈: 각 노드가 계산한 중간 특징(feature map)을 다른 노드 또는 중앙 노드로 전달한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===분산 연산===&lt;br /&gt;
모델의 레이어는 뉴런 단위 또는 타일(tile) 단위로 여러 기기에 나누어 배치된다.  각 노드는 자신에게 할당된 부분 연산을 수행하고, 그 결과를 다른 노드 또는 중앙 조합 모듈에 전달한다.&lt;br /&gt;
===BODP(Best-Order Dynamic Partitioning)===&lt;br /&gt;
MoDNN의 핵심 알고리즘은 BODP로, 다음과 같은 기능을 수행한다.&lt;br /&gt;
#각 노드의 연산 속도와 자원 상태를 측정한다.&lt;br /&gt;
#모델의 연산을 노드별로 최적의 비율로 나눈다.&lt;br /&gt;
#네트워크 상태 변화에 따라 분할 비율을 재조정한다.&lt;br /&gt;
===결과 병합===&lt;br /&gt;
각 노드가 계산한 출력(feature)을 중앙 결합 모듈이 통합하여 다음 레이어로 전달한다.  이 과정을 반복하여 최종 출력을 얻는다.&lt;br /&gt;
==특징==&lt;br /&gt;
*단일 디바이스의 연산 한계를 여러 모바일 기기의 협업으로 보완할 수 있다.&lt;br /&gt;
*네트워크 상태 및 디바이스 상태에 따라 동적으로 연산량을 분배한다.&lt;br /&gt;
*별도의 클라우드 서버 없이 모바일 환경에서 분산 추론이 가능하다.&lt;br /&gt;
==장점==&lt;br /&gt;
*고성능 디바이스 한 대가 아닌 여러 디바이스의 자원을 합쳐 대규모 모델을 처리할 수 있음&lt;br /&gt;
*실시간 연산 속도 개선&lt;br /&gt;
*모바일 환경에서도 병렬 처리를 활용한 효율성 증가&lt;br /&gt;
==단점==&lt;br /&gt;
*중간 특징(feature map) 송수신으로 인한 네트워크 비용 증가&lt;br /&gt;
*고성능 디바이스가 더 많은 연산을 떠맡아 배터리와 발열 부담이 커질 수 있음&lt;br /&gt;
*백그라운드에서 자원이 사용될 위험이 있어 실제 스마트폰 OS 정책과 충돌&lt;br /&gt;
*프라이버시 및 보안 문제 발생 가능성&lt;br /&gt;
*실용적 제약으로 인해 상용 서비스에서 거의 사용되지 않음&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[DDNN (신경망, 2017년)|DDNN]]&lt;br /&gt;
*[[ADCNN]]&lt;br /&gt;
*[[Split Computing]]&lt;br /&gt;
*[[Edge AI]]&lt;br /&gt;
*[[신경망 분산 추론]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Yiping Kang, Jian Li, Xuan Peng, K. Nahrstedt. “MoDNN: Local Distributed Mobile Computing System for Deep Neural Network.” 2017 Design, Automation &amp;amp; Test in Europe Conference (DATE).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=ADCNN&amp;diff=41724</id>
		<title>ADCNN</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=ADCNN&amp;diff=41724"/>
		<updated>2025-11-12T23:15:44Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: ADCNN(Adaptive Distributed Convolutional Neural Network, 2020년)은 여러 엣지(edge) 디바이스에 신경망의 연산을 적응적으로 분산시켜 추론 지연(latency)과 통신량을 줄이기 위한 딥러닝 분산추론(distributed inference) 기법이다. ==개요== ADCNN은 딥러닝 추론을 위해 하나의 중앙 서버나 클라우드에 모든 연산을 맡기는 대신, 여러 엣지 디바이스 클러스터에 연산을 적절히 분할해서 배치함...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ADCNN(Adaptive Distributed Convolutional Neural Network, 2020년)은 여러 엣지(edge) 디바이스에 신경망의 연산을 적응적으로 분산시켜 추론 지연(latency)과 통신량을 줄이기 위한 딥러닝 분산추론(distributed inference) 기법이다.&lt;br /&gt;
==개요==&lt;br /&gt;
ADCNN은 딥러닝 추론을 위해 하나의 중앙 서버나 클라우드에 모든 연산을 맡기는 대신, 여러 엣지 디바이스 클러스터에 연산을 적절히 분할해서 배치함으로써 전반적인 처리 시간을 줄이고 효율을 높인다. 특히, CNN의 초기 레이어 연산이 차지하는 비중이 크다는 관찰을 바탕으로, 공간적 분할(spatial partitioning)이나 태스크 분할(task tiling) 기법을 동적으로 적용한다. &lt;br /&gt;
==구조==&lt;br /&gt;
ADCNN은 다음과 같은 구성 요소를 포함한다:&lt;br /&gt;
*복수의 엣지 디바이스(edge devices): CNN 연산을 나눠서 병렬 처리한다.&lt;br /&gt;
*중앙 노드(central node): 여러 엣지 디바이스에서 부분 연산 결과를 수집하고 최종 출력을 계산한다.&lt;br /&gt;
*적응형 작업 분할(adaptive task partitioning) 모듈: 디바이스 성능과 네트워크 상태에 따라 연산을 분할 및 배분한다.&lt;br /&gt;
*통신 최적화 메커니즘: 채널 분할(channel-wise partition)이나 공간 분할(spatial partition) 시 발생하는 통신 오버헤드를 최소화하는 설계가 포함된다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===태스크 분할 및 병렬 처리===&lt;br /&gt;
CNN의 초기 레이어가 시간이 많이 걸리므로, 이 레이어를 적절히 분할하여 여러 디바이스에 분배한다. 예컨대 입력 이미지의 타일(tile)을 여러 디바이스에 나눠서 처리하고, 부분 출력(feature map)을 모아서 후속 레이어를 수행한다.&lt;br /&gt;
===통신 오버헤드 감소===&lt;br /&gt;
채널 단위 분할 방식에서는 각 디바이스가 부분 출력 맵을 서로 교환해야 하므로 통신량이 커진다. ADCNN은 공간분할(spatial partition) 기반 방식이나 fully-decomposable partitions를 활용해 이 교환을 줄인다.&lt;br /&gt;
===적응형 부하 균형(adaptive load balancing)===&lt;br /&gt;
엣지 디바이스들 간 성능이 다르거나 네트워크 지연이 발생할 때, ADCNN은 태스크 배분을 동적으로 조절해 클러스터 전체가 병목 없이 동작하도록 한다.&lt;br /&gt;
==특징==&lt;br /&gt;
*CNN 추론 연산을 여러 엣지 디바이스에 효율적으로 분산하여 지연(latency)을 줄임&lt;br /&gt;
*통신 비용이 높은 분할 전략을 피하고, 통신량을 줄이는 구조 설계&lt;br /&gt;
*동적 환경(디바이스 성능 변화, 네트워크 지연 등)에서도 부하 균형을 가능하게 하는 적응형 메커니즘&lt;br /&gt;
==장점==&lt;br /&gt;
*단일 디바이스보다 훨씬 빠른 추론 속도 도달 가능&lt;br /&gt;
*엣지 환경에 적합한 분산 구조&lt;br /&gt;
*통신 및 네트워크 비용 절감&lt;br /&gt;
==단점==&lt;br /&gt;
*여러 디바이스·통신 구조·분할 전략을 관리해야 하므로 구현 복잡도 증가&lt;br /&gt;
*디바이스 간 동기화·결합된 출력(feature map 병합 등)에 대한 오버헤드 존재&lt;br /&gt;
*특정 CNN 구조나 환경에서는 분할 효과가 제한적일 수 있음&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[신경망 분산 추론]]&lt;br /&gt;
*[[Edge AI]]&lt;br /&gt;
*[[모바일 엣지 컴퓨팅]]&lt;br /&gt;
*[[DDNN]]&lt;br /&gt;
*[[Split Computing]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Zhang, Sai Qian; Lin, Jieyu; Zhang, Qi. [https://dl.acm.org/doi/10.1145/3404397.3404473 Adaptive Distributed Convolutional Neural Network Inference at the Network Edge with ADCNN]. Proceedings of the 49th International Conference on Parallel Processing (ICPP 2020).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=DDNN_(%EC%8B%A0%EA%B2%BD%EB%A7%9D,_2017%EB%85%84)&amp;diff=41723</id>
		<title>DDNN (신경망, 2017년)</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=DDNN_(%EC%8B%A0%EA%B2%BD%EB%A7%9D,_2017%EB%85%84)&amp;diff=41723"/>
		<updated>2025-11-12T23:09:03Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: DDNN(Distributed Deep Neural Network, 2017년)은 단일 기기에서 실행되는 신경망을 클라우드, 엣지, 디바이스 계층에 분산하여 협력적으로 추론을 수행하는 구조로, 입력 데이터의 특성에 따라 로컬 또는 클라우드에서 단계적으로 계산을 수행함으로써 지연(latency)과 통신 비용을 줄이는 것을 목표로 한다. ==개요== DDNN은 분산 환경에서 신경망 일부를 로컬 디바이스에 배치하...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DDNN(Distributed Deep Neural Network, 2017년)은 단일 기기에서 실행되는 신경망을 클라우드, 엣지, 디바이스 계층에 분산하여 협력적으로 추론을 수행하는 구조로, 입력 데이터의 특성에 따라 로컬 또는 클라우드에서 단계적으로 계산을 수행함으로써 지연(latency)과 통신 비용을 줄이는 것을 목표로 한다.&lt;br /&gt;
==개요==&lt;br /&gt;
DDNN은 분산 환경에서 신경망 일부를 로컬 디바이스에 배치하고, 나머지를 엣지 혹은 클라우드에 배치하는 계층적 구조를 가진다. 입력은 로컬 디바이스에서 처리되며, 로컬 모델이 충분한 확신(confidence)을 갖지 못할 경우 특징 벡터(feature vector)만 상위 계층으로 전달되어 추가 추론을 수행한다. 이는 분산 환경에서 효율적인 추론을 위한 협력적 인공지능(Collaborative Intelligence) 구조의 초기 형태로 평가된다.&lt;br /&gt;
==구조==&lt;br /&gt;
DDNN의 구조는 다음과 같은 계층적 요소로 이루어진다.&lt;br /&gt;
*로컬 디바이스(Local Device): 입력 데이터를 직접 수집하고 소형 신경망을 통해 1차 추론을 수행한다.&lt;br /&gt;
*로컬 종료(Local Exit): 로컬 신경망의 확신도가 충분할 경우 바로 예측을 내리는 조기 종료 지점이다.&lt;br /&gt;
*엣지/클라우드 계층: 로컬에서 확신도가 낮을 경우 특징 벡터만 전달받아 더 깊은 신경망을 실행하여 최종 추론을 수행한다.&lt;br /&gt;
*집계기(Aggregator): 여러 디바이스에서 전달된 특징을 결합하여 공동 추론을 수행할 수 있다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===로컬 추론===&lt;br /&gt;
입력은 디바이스에서 바로 처리되며, 로컬 신경망은 특징을 추출한 뒤 예측 확률 분포를 계산한다. 예측의 확신도가 임계값을 넘으면 로컬 종료 지점에서 결과를 확정한다.&lt;br /&gt;
===계층적 전달===&lt;br /&gt;
확신도가 부족할 경우, 원본 데이터가 아닌 특징 벡터만 상위 계층(엣지 또는 클라우드)의 신경망으로 전송된다. 이는 통신 비용을 크게 줄이는 핵심 아이디어이다.&lt;br /&gt;
===클라우드 추론===&lt;br /&gt;
클라우드에서는 더 깊고 큰 신경망을 사용하여 보다 정확한 최종 추론을 수행한다. 여러 디바이스의 특징을 결합하는 방식도 가능하여 공동 추론 성능을 높일 수 있다.&lt;br /&gt;
==특징==&lt;br /&gt;
*계층적 분산 추론 구조를 통해 지연(latency)을 줄이고 효율적인 계산을 가능하게 한다.&lt;br /&gt;
*로컬 조기 종료를 통해 불필요한 통신을 최소화한다.&lt;br /&gt;
*분산 환경에서 여러 디바이스의 특징을 조합하여 정확도를 높일 수 있다.&lt;br /&gt;
*원본 데이터를 전송하지 않기 때문에 개인정보 보호 측면에서도 유리하다.&lt;br /&gt;
==장점==&lt;br /&gt;
*통신 비용 감소&lt;br /&gt;
*낮은 지연시간 기반 실시간 추론 가능&lt;br /&gt;
*디바이스 자원을 활용한 효율적 분산 처리&lt;br /&gt;
*네트워크 혼잡 상황에서도 안정적인 추론 가능&lt;br /&gt;
==단점==&lt;br /&gt;
*계층 간 모델 관리가 필요하며 구조가 복잡해질 수 있다.&lt;br /&gt;
*로컬 모델의 정확도에 따라 조기 종료 품질이 달라진다.&lt;br /&gt;
*각 계층의 모델을 동시에 학습·동기화해야 하는 부담이 존재한다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[BranchyNet]]&lt;br /&gt;
*[[모바일 엣지 컴퓨팅]]&lt;br /&gt;
*[[분산 컴퓨팅]]&lt;br /&gt;
*[[신경망 분산 학습]]&lt;br /&gt;
*[[모델 경량화]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Teerapittayanon, Surat; McDanel, Bradley; Kung, H. T. [https://arxiv.org/abs/1709.01921 Distributed Deep Neural Networks over the Cloud, the Edge and End Devices]. 2017 IEEE 37th International Conference on Distributed Computing Systems (ICDCS).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%84%B7&amp;diff=41722</id>
		<title>브랜치넷</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%84%B7&amp;diff=41722"/>
		<updated>2025-11-12T22:48:37Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: BranchyNet(브랜치넷)은 신경망의 중간 계층에 여러 개의 조기 종료 지점(exit branch)을 추가하여, 입력 데이터의 난이도에 따라 계산량을 동적으로 조절하는 신경망 구조이다. 이를 통해 쉬운 입력은 빠르게 처리하고, 어려운 입력만 전체 모델을 통과시키는 방식으로 추론 속도를 크게 향상시킨다. ==개요== BranchyNet은 입력 샘플의 난이도가 서로 다르다는 점에 착안하여...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BranchyNet(브랜치넷)은 신경망의 중간 계층에 여러 개의 조기 종료 지점(exit branch)을 추가하여, 입력 데이터의 난이도에 따라 계산량을 동적으로 조절하는 신경망 구조이다. 이를 통해 쉬운 입력은 빠르게 처리하고, 어려운 입력만 전체 모델을 통과시키는 방식으로 추론 속도를 크게 향상시킨다.&lt;br /&gt;
==개요==&lt;br /&gt;
BranchyNet은 입력 샘플의 난이도가 서로 다르다는 점에 착안하여 설계된 구조로, 쉬운 샘플은 적은 수의 레이어만 통과해도 올바른 예측이 가능하다는 가정에 기반한다. 이를 위해 네트워크의 여러 중간 지점에 분기(branch) 형태의 조기 분류기를 배치하고, 각 분류기의 confidence score를 기준으로 조기 종료 여부를 결정한다.&lt;br /&gt;
==구조==&lt;br /&gt;
BranchyNet의 일반적인 구조는 다음과 같은 특징을 가진다.&lt;br /&gt;
*신경망의 여러 중간 위치에 exit branch를 배치한다.&lt;br /&gt;
*각 exit branch는 보통 1~2개의 경량 분류기(예: Linear 또는 작은 CNN)로 구성된다.&lt;br /&gt;
*각 exit 지점에서 예측 확률의 엔트로피 또는 confidence score를 계산한다.&lt;br /&gt;
*사전 정의된 임계값을 넘으면 해당 지점에서 예측을 종료한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===조기 종료(Early Exiting)===&lt;br /&gt;
입력은 순차적으로 모델의 앞쪽 레이어를 통과하면서, 각 exit branch에서 다음과 같은 절차를 거친다.&lt;br /&gt;
#exit branch에서 예측 확률 분포를 계산한다.&lt;br /&gt;
#확신도(confidence)가 임계값 이상인지 평가한다.&lt;br /&gt;
#조건을 만족하면 해당 출력을 최종 예측으로 채택하고 중단한다.&lt;br /&gt;
#조건을 만족하지 않으면 다음 레이어로 계속 진행한다.&lt;br /&gt;
이 방식은 쉬운 샘플은 초기에 분류하고, 어려운 샘플만 마지막까지 처리하는 동적 계산 전략을 제공한다.&lt;br /&gt;
===확신도 계산===&lt;br /&gt;
확신도는 일반적으로 예측 확률의 엔트로피(entropy)나 최대 확률값 등을 사용해 계산한다. 엔트로피가 낮을수록 예측이 명확하다고 판단하여 조기 종료 가능성이 높아진다.&lt;br /&gt;
==특징==&lt;br /&gt;
*입력 난이도에 따라 계산량을 자동으로 조절할 수 있다.&lt;br /&gt;
*전체 모델을 매번 통과할 필요가 없어 추론 지연(latency)을 크게 줄일 수 있다.&lt;br /&gt;
*모바일·엣지 환경에서 효율적으로 작동하며 에너지 사용량 절감에 유리하다.&lt;br /&gt;
*모든 exit branch를 학습해야 하므로 모델 구조가 다소 복잡해질 수 있다.&lt;br /&gt;
==장점==&lt;br /&gt;
*추론 속도 향상&lt;br /&gt;
*계산 비용 및 에너지 절약&lt;br /&gt;
*쉬운 샘플에 대한 빠른 응답 가능&lt;br /&gt;
==단점==&lt;br /&gt;
*exit branch 추가로 모델 구조가 복잡해짐&lt;br /&gt;
*잘못된 조기 종료로 인해 정확도에 영향을 줄 수 있음&lt;br /&gt;
*적절한 임계값 설정이 필요함&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[전문가 조합 (인공지능)]]&lt;br /&gt;
*[[추측 디코딩]]&lt;br /&gt;
*[[신경망 분산 학습]]&lt;br /&gt;
*[[모델 경량화]]&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Teerapittayanon, Surat; Bradley McDanel; Hsiang-Tsung Kung. [https://arxiv.org/abs/1709.01686 BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks]. 2016 23rd International Conference on Pattern Recognition (ICPR).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=GPipe&amp;diff=41718</id>
		<title>GPipe</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=GPipe&amp;diff=41718"/>
		<updated>2025-11-12T21:30:50Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: Bubble을 줄이는 것을 목표로 한다. GPipe(지파이프, 영어: GPipe)는 대규모 신경망 모델을 여러 장치에 나누어 학습시키기 위해 제안된 파이프라인 병렬(pipeline parallelism) 기법으로, 마이크로배치를 활용해 파이프라인의 유휴 시간(bubble)을 줄이고 장치 활용률을 높이는 것을 목표로 한다. ==개요== GPipe는 모델을 여러 스테이지(stage)로 분...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:GPipe 병렬 학습.png|섬네일|Bubble을 줄이는 것을 목표로 한다.]]&lt;br /&gt;
GPipe(지파이프, 영어: GPipe)는 대규모 신경망 모델을 여러 장치에 나누어 학습시키기 위해 제안된 파이프라인 병렬(pipeline parallelism) 기법으로, 마이크로배치를 활용해 파이프라인의 유휴 시간(bubble)을 줄이고 장치 활용률을 높이는 것을 목표로 한다.&lt;br /&gt;
==개요==&lt;br /&gt;
GPipe는 모델을 여러 스테이지(stage)로 분할하고, 입력 미니배치를 여러 마이크로배치(micro-batch)로 나누어 순전파와 역전파가 서로 다른 장치에서 동시에 수행되도록 하는 방식이다. 이를 통해 파이프라인 병렬에서 발생하는 단계 간 대기 시간을 줄이고, 대규모 모델 학습을 효율적으로 수행할 수 있게 한다. 구글이 2019년 발표한 기법으로, TPU와 GPU 환경에서 안정적인 파이프라인 학습을 가능하게 만든 초기 연구 중 하나이다.&lt;br /&gt;
==구조==&lt;br /&gt;
GPipe는 다음과 같은 구조적 특징을 가진다.&lt;br /&gt;
*모델을 연속된 여러 스테이지로 나눈다.&lt;br /&gt;
*미니배치를 여러 마이크로배치로 분할해 파이프라인을 채운다.&lt;br /&gt;
*순전파는 앞에서 뒤로, 역전파는 뒤에서 앞으로 진행되며 마이크로배치 단위로 분산된다.&lt;br /&gt;
*모든 역전파가 종료된 이후에 한 번에 가중치를 업데이트한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===마이크로배치 기반 파이프라인===&lt;br /&gt;
GPipe는 단일 미니배치를 여러 마이크로배치로 쪼개어 파이프라인에 순차적으로 투입한다. 각 마이크로배치는 서로 다른 스테이지에서 동시에 처리될 수 있기 때문에, GPU들이 동시에 일할 수 있는 시간이 많아져 전체 처리량이 증가한다.&lt;br /&gt;
===순전파와 역전파의 파이프라인화===&lt;br /&gt;
*순전파는 마이크로배치들이 스테이지 0에서 마지막 스테이지까지 이동하며 처리되는 과정이다.&lt;br /&gt;
*역전파는 마지막 스테이지에서 시작해 첫 번째 스테이지까지 순차적으로 이동한다.&lt;br /&gt;
*마이크로배치 단위로 두 과정이 섞여 진행되기 때문에, 서로 다른 마이크로배치의 forward와 backward가 동시에 실행될 수 있다.&lt;br /&gt;
===가중치 업데이트 방식===&lt;br /&gt;
GPipe는 모든 마이크로배치의 forward와 backward가 끝난 후, 전체 누적 기울기를 기반으로 한 번만 파라미터 업데이트를 수행한다. 이 방법은 가중치 시차(stale weight) 문제를 방지하며 안정적인 수렴을 돕는다.&lt;br /&gt;
==파이프드림과의 차이==&lt;br /&gt;
GPipe와 파이프드림(PipeDream)은 모두 파이프라인 병렬의 효율을 높이기 위해 고안되었지만 접근 방식이 다르다. GPipe는 모든 순전파와 역전파가 종료된 뒤 한 번에 가중치를 업데이트하므로 가중치 시차(stale weight)가 발생하지 않는 안정적인 구조를 갖는다. 반면 파이프드림은 1F1B(1 forward, 1 backward) 스케줄을 활용해 파이프라인 버블을 최소화하는 대신, 순전파와 역전파가 다른 시점에 실행되면서 여러 버전의 가중치를 유지해야 하며 결과적으로 가중치 시차를 관리하는 추가 메커니즘이 필요하다. GPipe는 안정성 중심, 파이프드림은 성능 중심의 설계라고 볼 수 있다.&lt;br /&gt;
==특징==&lt;br /&gt;
*마이크로배치 기반 파이프라인으로 GPU 유휴 시간을 줄인다.&lt;br /&gt;
*모든 역전파가 종료된 후 가중치를 갱신하므로 정합성이 높다.&lt;br /&gt;
*파이프라인 병렬을 단순하게 구현할 수 있으며 학습 안정성이 높다.&lt;br /&gt;
*모델 크기가 매우 커서 단일 장치에 적재하기 어려운 상황에서도 유용하다.&lt;br /&gt;
==장점==&lt;br /&gt;
*weight staleness가 없어서 수렴 안정성이 우수하다.&lt;br /&gt;
*비교적 구현이 단순하고 해석이 쉽다.&lt;br /&gt;
*파이프라인 병렬의 기본적 비효율을 마이크로배치로 완화한다.&lt;br /&gt;
==단점==&lt;br /&gt;
*모든 역전파 후 업데이트를 수행하기 때문에 파라미터 갱신이 느릴 수 있다.&lt;br /&gt;
*PipeDream과 같은 기법에 비해 파이프라인 효율이 낮을 수 있다.&lt;br /&gt;
*마이크로배치 수가 적으면 bubble이 크게 나타나 성능이 떨어질 수 있다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[파이프드림]]&lt;br /&gt;
*[[파이프라인 병렬 처리]]&lt;br /&gt;
*[[모델 병렬 처리]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[신경망 분산 학습]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Huang, Yanping, et al. [https://arxiv.org/abs/1811.06965 GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism]. arXiv (2019).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:GPipe_%EB%B3%91%EB%A0%AC_%ED%95%99%EC%8A%B5.png&amp;diff=41717</id>
		<title>파일:GPipe 병렬 학습.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:GPipe_%EB%B3%91%EB%A0%AC_%ED%95%99%EC%8A%B5.png&amp;diff=41717"/>
		<updated>2025-11-12T21:30:00Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://medium.com/@pranjalkhadka/paper-breakdown-easy-scaling-with-micro-batch-pipeline-parallelism-44ebd1243f3d&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%B4%ED%94%84%EB%93%9C%EB%A6%BC&amp;diff=41716</id>
		<title>파이프드림</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%B4%ED%94%84%EB%93%9C%EB%A6%BC&amp;diff=41716"/>
		<updated>2025-11-12T21:25:50Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 파이프드림 사용 전의 학습 순서 파이프드림 사용 시 학습 파이프드림(PipeDream)은 대규모 신경망 모델을 여러 장치에 나누어 학습하는 파이프라인 병렬(pipeline parallelism) 방식의 비효율성을 개선하기 위해 제안된 분산 학습 기법이다. 특히 순전파와 역전파의 파이프라인 스케...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:멀티 코어 학습 순서.png|섬네일|파이프드림 사용 전의 학습 순서]]&lt;br /&gt;
[[파일:파이프드림 사용 시 학습 과정.png|섬네일|파이프드림 사용 시 학습]]&lt;br /&gt;
파이프드림(PipeDream)은 대규모 신경망 모델을 여러 장치에 나누어 학습하는 파이프라인 병렬(pipeline parallelism) 방식의 비효율성을 개선하기 위해 제안된 분산 학습 기법이다. 특히 순전파와 역전파의 파이프라인 스케줄링을 최적화하고, 가중치 정합성 문제를 해결하여 높은 장치 활용률과 빠른 학습 속도를 달성하는 것을 목표로 한다.&lt;br /&gt;
==개요==&lt;br /&gt;
파이프드림은 모델을 여러 개의 연속된 스테이지(stage)로 분할하고, 입력 미니배치를 더 작은 마이크로배치(micro-batch)로 나누어 각 스테이지가 동시에 서로 다른 연산을 수행할 수 있도록 파이프라인을 구성한다. 이를 통해 각 장치의 유휴 시간(bubble)을 줄이고 모델 병렬 환경에서 발생하는 병목을 완화한다. 또한 가중치 버전 관리(weight versioning)를 통해 파이프라인 병렬에서 흔히 발생하는 가중치 시차(stale weight) 문제를 해결하는 것이 특징이다.&lt;br /&gt;
==구조==&lt;br /&gt;
파이프드림의 기본 구조는 다음과 같다.&lt;br /&gt;
*모델을 여러 스테이지로 나눈다.&lt;br /&gt;
*입력 미니배치를 여러 마이크로배치로 분할한다.&lt;br /&gt;
*각 장치는 순전파와 역전파를 번갈아 수행하도록 스케줄링된다.&lt;br /&gt;
*각 스테이지는 여러 버전의 가중치를 저장하여 역전파 시점에서 적절한 가중치 버전을 사용한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===마이크로배치 기반 파이프라인===&lt;br /&gt;
파이프드림은 하나의 미니배치를 여러 마이크로배치로 쪼개고, 각 마이크로배치가 파이프라인을 통해 순차적으로 스테이지를 통과하도록 한다. 스테이지 간 의존성은 유지되지만, 서로 다른 마이크로배치가 파이프라인을 채워 장치의 유휴 시간을 줄인다.&lt;br /&gt;
===1F1B 스케줄===&lt;br /&gt;
파이프드림은 steady-state 구간에서 각 장치가 다음과 같은 패턴을 반복하도록 스케줄링한다.&lt;br /&gt;
*1회 순전파 수행(Forward)&lt;br /&gt;
*1회 역전파 수행(Backward)&lt;br /&gt;
이 방식은 장치가 쉬지 않고 지속적으로 작업하도록 하여 높은 자원 활용률을 제공한다.&lt;br /&gt;
===가중치 버전 관리===&lt;br /&gt;
파이프라인 병렬에서는 순전파와 역전파가 서로 다른 시간에 이루어지기 때문에, 순전파 때 사용한 가중치가 업데이트된 후 역전파가 수행될 경우 가중치 시차가 발생한다. 파이프드림은 순전파에서 사용한 가중치 버전을 기록하고, 역전파 단계에서 해당 버전을 다시 사용하도록 하여 정합성을 보장한다.&lt;br /&gt;
==특징==&lt;br /&gt;
*높은 장치 활용률: 마이크로배치와 1F1B 스케줄을 통해 GPU 유휴 시간을 크게 줄인다.&lt;br /&gt;
*가중치 정합성 유지: 가중치 버전 관리로 stale weight 문제를 완화한다.&lt;br /&gt;
*확장성: 많은 스테이지와 장치를 활용할 때도 성능 향상을 얻을 수 있다.&lt;br /&gt;
*모델 병렬과 유사하지만 파이프라인 스케줄링을 통해 더 높은 효율을 추구한다.&lt;br /&gt;
==장점==&lt;br /&gt;
*파이프라인 병렬의 비효율적 버블 시간을 크게 줄일 수 있다.&lt;br /&gt;
*대규모 모델에서 높은 처리량과 빠른 학습 속도를 제공한다.&lt;br /&gt;
*수렴 안정성이 비교적 우수하며 모델 크기에 따라 쉽게 확장된다.&lt;br /&gt;
==단점==&lt;br /&gt;
*여러 가중치 버전을 저장해야 하므로 메모리 사용량이 증가한다.&lt;br /&gt;
*구현 복잡도가 크며 스케줄링 관리가 필요하다.&lt;br /&gt;
*마이크로배치 수와 스테이지 수에 따라 성능이 크게 달라질 수 있다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[파이프라인 병렬 처리]]&lt;br /&gt;
*[[모델 병렬 처리]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[GPipe]]&lt;br /&gt;
*[[신경망 분산 학습]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Narayanan, Deepak, et al. “PipeDream: Generalized Pipeline Parallelism for DNN Training.” Proceedings of the 27th ACM Symposium on Operating Systems Principles (2019).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%ED%8C%8C%EC%9D%B4%ED%94%84%EB%93%9C%EB%A6%BC_%EC%82%AC%EC%9A%A9_%EC%8B%9C_%ED%95%99%EC%8A%B5_%EA%B3%BC%EC%A0%95.png&amp;diff=41715</id>
		<title>파일:파이프드림 사용 시 학습 과정.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%ED%8C%8C%EC%9D%B4%ED%94%84%EB%93%9C%EB%A6%BC_%EC%82%AC%EC%9A%A9_%EC%8B%9C_%ED%95%99%EC%8A%B5_%EA%B3%BC%EC%A0%95.png&amp;diff=41715"/>
		<updated>2025-11-12T21:25:24Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;병렬 수행으로 유휴시간이 많이 줄어듬&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A9%80%ED%8B%B0_%EC%BD%94%EC%96%B4_%ED%95%99%EC%8A%B5_%EC%88%9C%EC%84%9C.png&amp;diff=41714</id>
		<title>파일:멀티 코어 학습 순서.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A9%80%ED%8B%B0_%EC%BD%94%EC%96%B4_%ED%95%99%EC%8A%B5_%EC%88%9C%EC%84%9C.png&amp;diff=41714"/>
		<updated>2025-11-12T21:24:09Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;각 코어마다 다음 작업까지 유휴 시간이 많음&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EC%8B%A0%EA%B2%BD%EB%A7%9D_%EB%B6%84%EC%82%B0_%ED%95%99%EC%8A%B5&amp;diff=41713</id>
		<title>신경망 분산 학습</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EC%8B%A0%EA%B2%BD%EB%A7%9D_%EB%B6%84%EC%82%B0_%ED%95%99%EC%8A%B5&amp;diff=41713"/>
		<updated>2025-11-12T21:04:15Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;신경망 분산 학습(영어: distributed training of neural networks)은 인공신경망 모델을 여러 컴퓨팅 노드(예: GPU, 서버)에 분산시켜 동시에 학습함으로써 학습 속도를 높이고 더 큰 모델과 데이터셋을 다루기 위한 기술이다.&lt;br /&gt;
==개요==&lt;br /&gt;
신경망 분산 학습은 단일 장치의 메모리와 연산 능력으로 처리하기 어려운 대규모 데이터셋과 딥러닝 모델을 효율적으로 학습하기 위해 등장하였다. 분산 학습 환경에서는 여러 장치가 서로 다른 데이터 조각을 처리하거나, 모델의 서로 다른 부분을 담당하면서 병렬로 순전파와 역전파를 수행하고, 통신을 통해 기울기와 파라미터를 동기화한다. 주요 목표는 학습 시간 단축, 모델 및 배치 크기 확장, 자원 활용 효율 향상이다.&lt;br /&gt;
==분산 학습의 기본 개념==&lt;br /&gt;
신경망 분산 학습에서는 다음과 같은 요소들이 핵심적으로 고려된다.&lt;br /&gt;
*&#039;&#039;&#039;연산 단위&#039;&#039;&#039;: GPU, TPU, CPU 노드 등 모델 및 데이터 연산을 담당하는 장치&lt;br /&gt;
*&#039;&#039;&#039;통신 패턴&#039;&#039;&#039;: [[파라미터 서버]], [[올 리듀스|올 리듀스(All-Reduce)]] 등 기울기와 파라미터를 주고 받는 방식&lt;br /&gt;
*&#039;&#039;&#039;일관성 모델&#039;&#039;&#039;: 동기식(synchronous) 또는 비동기식(asynchronous) 갱신 방식&lt;br /&gt;
*&#039;&#039;&#039;오류 허용성&#039;&#039;&#039;: 일부 노드가 느려지거나 실패하더라도 학습을 지속할 수 있는지 여부&lt;br /&gt;
==병렬화 방식==&lt;br /&gt;
===데이터 병렬(Data Parallelism)===&lt;br /&gt;
데이터 병렬 학습은 가장 널리 쓰이는 방식으로, 동일한 신경망 모델을 여러 장치에 복제하고 서로 다른 미니배치를 각 장치에 나누어 처리하는 방법이다. 각 장치는 로컬 데이터에 대해 순전파와 역전파를 수행한 뒤, 계산된 기울기를 통신 연산(예: 올 리듀스)을 통해 평균 또는 합산하고, 동일한 파라미터 갱신을 적용받는다. 이 방식은 모델 구조를 변경할 필요가 없고 구현이 비교적 단순하며, 이미지 분류, 언어 모델 등 다양한 딥러닝 모델에 널리 적용된다.&lt;br /&gt;
===모델 병렬(Model Parallelism)===&lt;br /&gt;
모델 병렬 학습은 하나의 신경망을 여러 장치에 나누어 저장하고 계산하는 방식이다. 단일 장치 메모리에 모델이 모두 들어가지 않거나, 특정 계층의 계산 비용이 매우 큰 경우에 사용된다. 계층별로 장치를 나누는 수직 분할(layer-wise partitioning) 방식과, 매트릭스 곱셈 연산을 여러 장치에 나눠 처리하는 텐서 병렬(tensor parallel) 방식 등이 있다. GPT 계열 대형 언어모델과 같이 수십억 개 이상의 파라미터를 가진 모델에서 모델 병렬이 필수적으로 활용된다.&lt;br /&gt;
===파이프라인 병렬(Pipeline Parallelism)===&lt;br /&gt;
파이프라인 병렬은 모델을 여러 단계로 나누고, 서로 다른 미니배치 또는 마이크로배치(micro-batch)를 각 단계에 연속적으로 흘려보내는 방식이다. 한 장치에서 순전파를 수행하는 동안 다른 장치는 이전 단계의 역전파를 수행하도록 스케줄링함으로써 전체 파이프라인의 유휴 시간을 줄인다. PipeDream과 같은 프레임워크는 파이프라인 병렬의 스케줄링과 가중치 버전 관리(stale weight 문제 완화)를 통해 높은 하드웨어 활용률을 제공한다.&lt;br /&gt;
==통신 패턴==&lt;br /&gt;
===파라미터 서버(Parameter Server) 구조===&lt;br /&gt;
파라미터 서버 방식은 중앙 또는 분산된 서버 노드가 모델 파라미터를 저장하고, 여러 워커 노드가 기울기를 계산해 서버에 전송하면 서버가 이를 집계·갱신한 뒤 다시 워커에 배포하는 구조이다. 초기 분산 머신러닝 시스템에서 널리 사용되었으며, 동기식과 비동기식 두 방식 모두 지원할 수 있다. 그러나 노드 수가 증가할수록 서버에 통신과 연산이 집중되어 병목 현상이 발생하기 쉽고, 매우 대규모 GPU 클러스터에서는 확장성이 제한될 수 있다.&lt;br /&gt;
===올 리듀스(All-Reduce) 기반 구조===&lt;br /&gt;
올 리듀스 기반 분산 학습에서는 중앙 서버 없이 모든 노드가 서로 기울기를 교환하고 합산·평균한다. 링 올 리듀스(Ring All-Reduce)와 트리 기반 올 리듀스와 같은 알고리즘을 사용하면 통신량이 노드 간에 균등하게 분산되어 높은 확장성을 얻을 수 있다. 현대 딥러닝 프레임워크의 동기식 데이터 병렬 학습(PyTorch DistributedDataParallel, Horovod 등)은 대부분 올 리듀스 기반으로 구현된다.&lt;br /&gt;
==동기식 및 비동기식 학습==&lt;br /&gt;
===동기식 학습===&lt;br /&gt;
동기식 분산 학습에서는 모든 워커가 각자의 미니배치에 대한 기울기 계산을 마칠 때까지 기다린 뒤, 기울기를 집계하고 동일한 파라미터 업데이트를 적용한다. 이 방식은 단일 대형 배치와 동등한 학습 효과를 제공하지만, 가장 느린 워커가 전체 속도를 결정하는 스트래글러(straggler) 문제가 발생할 수 있다.&lt;br /&gt;
===비동기식 학습===&lt;br /&gt;
비동기식 분산 학습에서는 워커가 서로를 기다리지 않고, 계산이 끝나는 대로 서버나 다른 노드에 기울기를 전송해 파라미터를 갱신한다. 속도 측면에서는 유리하지만, 일부 워커가 오래된 파라미터를 사용해 기울기를 계산하는 정합성(consistency) 문제가 발생할 수 있어, 학습 안정성과 수렴 특성을 주의 깊게 설계해야 한다.&lt;br /&gt;
==통신량 최적화==&lt;br /&gt;
대규모 분산 학습에서는 통신 비용이 전체 학습 시간의 상당 부분을 차지하므로, 통신량을 줄이기 위한 다양한 기법이 연구되어 왔다.&lt;br /&gt;
*&#039;&#039;&#039;기울기 희소화(gradient sparsification)&#039;&#039;&#039;: 크기가 큰 상위 k% 기울기만 전송하고 나머지는 축적하여 나중에 전송하거나 버리는 방식&lt;br /&gt;
*&#039;&#039;&#039;기울기 양자화(gradient quantization)&#039;&#039;&#039;: 기울기를 저정밀도 비트수로 표현해 전송량을 줄이는 방식&lt;br /&gt;
*&#039;&#039;&#039;딥 기울기 압축(Deep Gradient Compression)&#039;&#039;&#039;: 희소화, 양자화, 모멘텀 보정, 지역 기울기 누적 등을 결합해 통신량을 크게 줄이는 기법&lt;br /&gt;
*&#039;&#039;&#039;혼합 정밀도 학습(mixed precision training)&#039;&#039;&#039;: 16비트 부동소수점 등을 활용하여 연산과 통신을 동시에 효율화하는 기법&lt;br /&gt;
==프레임워크 및 라이브러리==&lt;br /&gt;
신경망 분산 학습을 지원하는 주요 프레임워크와 라이브러리는 다음과 같다.&lt;br /&gt;
*TensorFlow의 분산 전략(TF Distributed, MirroredStrategy, ParameterServerStrategy 등)&lt;br /&gt;
*PyTorch Distributed 및 DistributedDataParallel(DDP)&lt;br /&gt;
*Horovod: 여러 프레임워크에서 올 리듀스 기반 분산 학습을 지원하는 라이브러리&lt;br /&gt;
*DeepSpeed, Megatron-LM: 대규모 언어모델을 위한 모델·파이프라인 병렬 전용 라이브러리&lt;br /&gt;
==응용 분야==&lt;br /&gt;
신경망 분산 학습은 다음과 같은 분야에서 광범위하게 활용된다.&lt;br /&gt;
*수백만~수십억 개의 파라미터를 가진 대형 언어모델과 비전 모델 학습&lt;br /&gt;
*자율주행, 추천 시스템, 음성 인식 등 대규모 로그·센서 데이터 처리&lt;br /&gt;
*대규모 하이퍼파라미터 탐색과 메타학습&lt;br /&gt;
*과학 계산, 기후 모델링 등 시뮬레이션 데이터 기반 딥러닝&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[모델 병렬 처리]]&lt;br /&gt;
*[[올 리듀스]]&lt;br /&gt;
*[[파라미터 서버]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Narayanan, Deepak, et al. [https://dl.acm.org/doi/10.1145/3341301.3359638 PipeDream: Generalized pipeline parallelism for DNN training]. Proceedings of the 27th ACM Symposium on Operating Systems Principles (2019).&lt;br /&gt;
*Sergeev, Alexander; Del Balso, Mike. [https://arxiv.org/abs/1802.05799 Horovod: Fast and Easy Distributed Deep Learning in TensorFlow]. arXiv preprint arXiv:1802.05799 (2018).&lt;br /&gt;
*Lin, Yujun, et al. [https://arxiv.org/abs/1712.01887 Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training]. arXiv preprint arXiv:1712.01887 (2017).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EC%8B%A0%EA%B2%BD%EB%A7%9D_%EB%B6%84%EC%82%B0_%ED%95%99%EC%8A%B5&amp;diff=41712</id>
		<title>신경망 분산 학습</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EC%8B%A0%EA%B2%BD%EB%A7%9D_%EB%B6%84%EC%82%B0_%ED%95%99%EC%8A%B5&amp;diff=41712"/>
		<updated>2025-11-12T21:02:23Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 신경망 분산 학습(영어: distributed training of neural networks)은 인공신경망 모델을 여러 컴퓨팅 노드(예: GPU, 서버)에 분산시켜 동시에 학습함으로써 학습 속도를 높이고 더 큰 모델과 데이터셋을 다루기 위한 기술이다. ==개요== 신경망 분산 학습은 단일 장치의 메모리와 연산 능력으로 처리하기 어려운 대규모 데이터셋과 딥러닝 모델을 효율적으로 학습하기 위해 등장하...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;신경망 분산 학습(영어: distributed training of neural networks)은 인공신경망 모델을 여러 컴퓨팅 노드(예: GPU, 서버)에 분산시켜 동시에 학습함으로써 학습 속도를 높이고 더 큰 모델과 데이터셋을 다루기 위한 기술이다.&lt;br /&gt;
==개요==&lt;br /&gt;
신경망 분산 학습은 단일 장치의 메모리와 연산 능력으로 처리하기 어려운 대규모 데이터셋과 딥러닝 모델을 효율적으로 학습하기 위해 등장하였다. 분산 학습 환경에서는 여러 장치가 서로 다른 데이터 조각을 처리하거나, 모델의 서로 다른 부분을 담당하면서 병렬로 순전파와 역전파를 수행하고, 통신을 통해 기울기와 파라미터를 동기화한다. 주요 목표는 학습 시간 단축, 모델 및 배치 크기 확장, 자원 활용 효율 향상이다.&lt;br /&gt;
==분산 학습의 기본 개념==&lt;br /&gt;
신경망 분산 학습에서는 다음과 같은 요소들이 핵심적으로 고려된다.&lt;br /&gt;
*연산 단위: GPU, TPU, CPU 노드 등 모델 및 데이터 연산을 담당하는 장치&lt;br /&gt;
*통신 패턴: 파라미터 서버, 올 리듀스(All-Reduce) 등 기울기와 파라미터를 주고 받는 방식&lt;br /&gt;
*일관성 모델: 동기식(synchronous) 또는 비동기식(asynchronous) 갱신 방식&lt;br /&gt;
*오류 허용성: 일부 노드가 느려지거나 실패하더라도 학습을 지속할 수 있는지 여부&lt;br /&gt;
==병렬화 방식==&lt;br /&gt;
===데이터 병렬(Data Parallelism)===&lt;br /&gt;
데이터 병렬 학습은 가장 널리 쓰이는 방식으로, 동일한 신경망 모델을 여러 장치에 복제하고 서로 다른 미니배치를 각 장치에 나누어 처리하는 방법이다. 각 장치는 로컬 데이터에 대해 순전파와 역전파를 수행한 뒤, 계산된 기울기를 통신 연산(예: 올 리듀스)을 통해 평균 또는 합산하고, 동일한 파라미터 갱신을 적용받는다. 이 방식은 모델 구조를 변경할 필요가 없고 구현이 비교적 단순하며, 이미지 분류, 언어 모델 등 다양한 딥러닝 모델에 널리 적용된다.&lt;br /&gt;
===모델 병렬(Model Parallelism)===&lt;br /&gt;
모델 병렬 학습은 하나의 신경망을 여러 장치에 나누어 저장하고 계산하는 방식이다. 단일 장치 메모리에 모델이 모두 들어가지 않거나, 특정 계층의 계산 비용이 매우 큰 경우에 사용된다. 계층별로 장치를 나누는 수직 분할(layer-wise partitioning) 방식과, 매트릭스 곱셈 연산을 여러 장치에 나눠 처리하는 텐서 병렬(tensor parallel) 방식 등이 있다. GPT 계열 대형 언어모델과 같이 수십억 개 이상의 파라미터를 가진 모델에서 모델 병렬이 필수적으로 활용된다.&lt;br /&gt;
===파이프라인 병렬(Pipeline Parallelism)===&lt;br /&gt;
파이프라인 병렬은 모델을 여러 단계로 나누고, 서로 다른 미니배치 또는 마이크로배치(micro-batch)를 각 단계에 연속적으로 흘려보내는 방식이다. 한 장치에서 순전파를 수행하는 동안 다른 장치는 이전 단계의 역전파를 수행하도록 스케줄링함으로써 전체 파이프라인의 유휴 시간을 줄인다. PipeDream과 같은 프레임워크는 파이프라인 병렬의 스케줄링과 가중치 버전 관리(stale weight 문제 완화)를 통해 높은 하드웨어 활용률을 제공한다.&lt;br /&gt;
==통신 패턴==&lt;br /&gt;
===파라미터 서버(Parameter Server) 구조===&lt;br /&gt;
파라미터 서버 방식은 중앙 또는 분산된 서버 노드가 모델 파라미터를 저장하고, 여러 워커 노드가 기울기를 계산해 서버에 전송하면 서버가 이를 집계·갱신한 뒤 다시 워커에 배포하는 구조이다. 초기 분산 머신러닝 시스템에서 널리 사용되었으며, 동기식과 비동기식 두 방식 모두 지원할 수 있다. 그러나 노드 수가 증가할수록 서버에 통신과 연산이 집중되어 병목 현상이 발생하기 쉽고, 매우 대규모 GPU 클러스터에서는 확장성이 제한될 수 있다.&lt;br /&gt;
===올 리듀스(All-Reduce) 기반 구조===&lt;br /&gt;
올 리듀스 기반 분산 학습에서는 중앙 서버 없이 모든 노드가 서로 기울기를 교환하고 합산·평균한다. 링 올 리듀스(Ring All-Reduce)와 트리 기반 올 리듀스와 같은 알고리즘을 사용하면 통신량이 노드 간에 균등하게 분산되어 높은 확장성을 얻을 수 있다. 현대 딥러닝 프레임워크의 동기식 데이터 병렬 학습(PyTorch DistributedDataParallel, Horovod 등)은 대부분 올 리듀스 기반으로 구현된다.&lt;br /&gt;
==동기식 및 비동기식 학습==&lt;br /&gt;
===동기식 학습===&lt;br /&gt;
동기식 분산 학습에서는 모든 워커가 각자의 미니배치에 대한 기울기 계산을 마칠 때까지 기다린 뒤, 기울기를 집계하고 동일한 파라미터 업데이트를 적용한다. 이 방식은 단일 대형 배치와 동등한 학습 효과를 제공하지만, 가장 느린 워커가 전체 속도를 결정하는 스트래글러(straggler) 문제가 발생할 수 있다.&lt;br /&gt;
===비동기식 학습===&lt;br /&gt;
비동기식 분산 학습에서는 워커가 서로를 기다리지 않고, 계산이 끝나는 대로 서버나 다른 노드에 기울기를 전송해 파라미터를 갱신한다. 속도 측면에서는 유리하지만, 일부 워커가 오래된 파라미터를 사용해 기울기를 계산하는 정합성(consistency) 문제가 발생할 수 있어, 학습 안정성과 수렴 특성을 주의 깊게 설계해야 한다.&lt;br /&gt;
==통신량 최적화==&lt;br /&gt;
대규모 분산 학습에서는 통신 비용이 전체 학습 시간의 상당 부분을 차지하므로, 통신량을 줄이기 위한 다양한 기법이 연구되어 왔다.&lt;br /&gt;
*기울기 희소화(gradient sparsification): 크기가 큰 상위 k% 기울기만 전송하고 나머지는 축적하여 나중에 전송하거나 버리는 방식&lt;br /&gt;
*기울기 양자화(gradient quantization): 기울기를 저정밀도 비트수로 표현해 전송량을 줄이는 방식&lt;br /&gt;
*딥 기울기 압축(Deep Gradient Compression): 희소화, 양자화, 모멘텀 보정, 지역 기울기 누적 등을 결합해 통신량을 크게 줄이는 기법&lt;br /&gt;
*혼합 정밀도 학습(mixed precision training): 16비트 부동소수점 등을 활용하여 연산과 통신을 동시에 효율화하는 기법&lt;br /&gt;
==프레임워크 및 라이브러리==&lt;br /&gt;
신경망 분산 학습을 지원하는 주요 프레임워크와 라이브러리는 다음과 같다.&lt;br /&gt;
*TensorFlow의 분산 전략(TF Distributed, MirroredStrategy, ParameterServerStrategy 등)&lt;br /&gt;
*PyTorch Distributed 및 DistributedDataParallel(DDP)&lt;br /&gt;
*Horovod: 여러 프레임워크에서 올 리듀스 기반 분산 학습을 지원하는 라이브러리&lt;br /&gt;
*DeepSpeed, Megatron-LM: 대규모 언어모델을 위한 모델·파이프라인 병렬 전용 라이브러리&lt;br /&gt;
==응용 분야==&lt;br /&gt;
신경망 분산 학습은 다음과 같은 분야에서 광범위하게 활용된다.&lt;br /&gt;
*수백만~수십억 개의 파라미터를 가진 대형 언어모델과 비전 모델 학습&lt;br /&gt;
*자율주행, 추천 시스템, 음성 인식 등 대규모 로그·센서 데이터 처리&lt;br /&gt;
*대규모 하이퍼파라미터 탐색과 메타학습&lt;br /&gt;
*과학 계산, 기후 모델링 등 시뮬레이션 데이터 기반 딥러닝&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[모델 병렬 처리]]&lt;br /&gt;
*[[올 리듀스]]&lt;br /&gt;
*[[파라미터 서버]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Narayanan, Deepak, et al. [https://dl.acm.org/doi/10.1145/3341301.3359638 PipeDream: Generalized pipeline parallelism for DNN training]. Proceedings of the 27th ACM Symposium on Operating Systems Principles (2019).&lt;br /&gt;
*Sergeev, Alexander; Del Balso, Mike. [https://arxiv.org/abs/1802.05799 Horovod: Fast and Easy Distributed Deep Learning in TensorFlow]. arXiv preprint arXiv:1802.05799 (2018).&lt;br /&gt;
*Lin, Yujun, et al. [https://arxiv.org/abs/1712.01887 Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training]. arXiv preprint arXiv:1712.01887 (2017).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4&amp;diff=41711</id>
		<title>링 올 리듀스</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4&amp;diff=41711"/>
		<updated>2025-11-12T20:52:16Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 링 올 리듀스(Ring All-Reduce)는 분산 딥러닝 및 고성능 컴퓨팅(HPC) 환경에서 다수의 노드(주로 GPU) 간에 데이터를 효율적으로 집계하고 공유하기 위해 사용되는 올 리듀스(All-Reduce) 알고리즘의 한 형태이다. ==개요== 링 올 리듀스는 모든 노드를 링(Ring) 형태로 연결하여, 각 노드가 자신의 텐서를 여러 조각(chunk)으로 분할한 뒤 인접한 노드와 데이터를 교환하며 기울기(g...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;링 올 리듀스(Ring All-Reduce)는 분산 딥러닝 및 고성능 컴퓨팅(HPC) 환경에서 다수의 노드(주로 GPU) 간에 데이터를 효율적으로 집계하고 공유하기 위해 사용되는 올 리듀스(All-Reduce) 알고리즘의 한 형태이다.&lt;br /&gt;
==개요==&lt;br /&gt;
링 올 리듀스는 모든 노드를 링(Ring) 형태로 연결하여, 각 노드가 자신의 텐서를 여러 조각(chunk)으로 분할한 뒤 인접한 노드와 데이터를 교환하며 기울기(gradient) 또는 텐서 값을 점진적으로 집계한다. 통신량이 모든 노드에 균등하게 분산되기 때문에 확장성이 높아, 대규모 분산 딥러닝 환경에서 널리 사용되는 방식이다.&lt;br /&gt;
==구조==&lt;br /&gt;
링 올 리듀스는 일반적으로 다음과 같은 구조적 특징을 갖는다.&lt;br /&gt;
*모든 노드를 일렬로 연결한 뒤 양쪽 끝을 이어 링 형태를 만든다.&lt;br /&gt;
*각 노드는 자신의 텐서를 노드 수(N)만큼의 조각으로 나눈다.&lt;br /&gt;
*통신은 이웃 노드 간에만 이루어지며, 전체 링을 따라 순차적으로 전달된다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
링 올 리듀스는 크게 두 단계로 구성된다.&lt;br /&gt;
[[파일:링 올 리듀스 동작 순서 1.png|섬네일|200x200픽셀|링 올 리듀스 동작 순서 1]]&lt;br /&gt;
[[파일:링 올 리듀스 동작 순서 2.png|섬네일|200x200픽셀|링 올 리듀스 동작 순서 2]]&lt;br /&gt;
&lt;br /&gt;
===1. 리듀스-스캐터(Reduce-Scatter) 단계===&lt;br /&gt;
*각 노드는 자신의 텐서를 N개의 chunk로 나눈다.&lt;br /&gt;
*오른쪽 또는 왼쪽 이웃에게 하나의 chunk를 전달하고, 동시에 이웃으로부터 하나의 chunk를 받는다.&lt;br /&gt;
*받은 chunk와 자신의 해당 chunk를 더하여(reduce) 새로운 partial sum을 만든다.&lt;br /&gt;
*이 과정을 N-1번 반복하면, 각 노드는 전체 텐서의 일부 구간(1/N chunk)에 대해 합산된 결과를 가지게 된다.&lt;br /&gt;
[[파일:링 올 리듀스 동작 순서 3.png|섬네일|200x200픽셀|링 올 리듀스 동작 순서 3]]&lt;br /&gt;
&lt;br /&gt;
===2. 올-게더(All-Gather) 단계===&lt;br /&gt;
*각 노드는 자신이 보유한 partial sum을 이웃 노드에게 전달한다.&lt;br /&gt;
*노드들은 서로 chunk를 교환하여 전체 gradient를 점차 모은다.&lt;br /&gt;
*[[파일:링 올 리듀스 동작 순서 4.png|섬네일|200x200픽셀|링 올 리듀스 동작 순서 4]]N-1번 반복 후 모든 노드는 전체 텐서가 재구성된 동일한 결과를 갖는다.&lt;br /&gt;
==특징==&lt;br /&gt;
*모든 노드가 동일한 통신량을 가지므로 부하가 균등하게 분산된다.&lt;br /&gt;
*각 단계의 통신량이 일정하여 노드가 증가하더라도 확장성이 좋다.&lt;br /&gt;
*Parameter Server 방식과 달리 중앙 집중 병목이 발생하지 않는다.&lt;br /&gt;
*GPU 간 통신에 최적화된 NCCL 라이브러리에서 기본적으로 채택하는 방식이다.&lt;br /&gt;
==장점==&lt;br /&gt;
*높은 확장성: 노드 수가 많아져도 성능 저하가 적다.&lt;br /&gt;
*균등한 통신 부담: 특정 노드에 병목이 생기지 않는다.&lt;br /&gt;
*점대점(P2P) 통신 기반이라 네트워크 효율이 뛰어나다.&lt;br /&gt;
==단점==&lt;br /&gt;
*단계가 N-1번 반복되므로 지연(latency)에 민감할 수 있다.&lt;br /&gt;
*모든 노드가 동기적으로 참여해야 하므로 느린 노드가 전체 학습 속도를 저하시킬 수 있다.&lt;br /&gt;
*네트워크 토폴로지가 링 구조를 효율적으로 지원해야 최대 성능을 낼 수 있다.&lt;br /&gt;
==활용==&lt;br /&gt;
*대규모 딥러닝 모델 학습의 데이터 병렬 처리&lt;br /&gt;
*PyTorch DistributedDataParallel(DDP)&lt;br /&gt;
*TensorFlow MirroredStrategy&lt;br /&gt;
*Horovod 분산 학습 프레임워크&lt;br /&gt;
*NVIDIA NCCL 기반 GPU 간 집합 통신&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[올 리듀스]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[분산 학습]]&lt;br /&gt;
*[[파라미터 서버]]&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Sergeev, A.; Del Balso, M. &amp;quot;Horovod: Fast and Easy Distributed Deep Learning in TensorFlow.&amp;quot; arXiv (2018).&lt;br /&gt;
*Thakur, R.; Rabenseifner, R.; Gropp, W. &amp;quot;Optimization of Collective Communication Operations.&amp;quot; International Journal of High Performance Computing Applications (2005).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_4.png&amp;diff=41710</id>
		<title>파일:링 올 리듀스 동작 순서 4.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_4.png&amp;diff=41710"/>
		<updated>2025-11-12T20:51:09Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://tech.preferred.jp/en/blog/technologies-behind-distributed-deep-learning-allreduce/&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_3.png&amp;diff=41709</id>
		<title>파일:링 올 리듀스 동작 순서 3.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_3.png&amp;diff=41709"/>
		<updated>2025-11-12T20:50:25Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://tech.preferred.jp/en/blog/technologies-behind-distributed-deep-learning-allreduce/&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_2.png&amp;diff=41708</id>
		<title>파일:링 올 리듀스 동작 순서 2.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_2.png&amp;diff=41708"/>
		<updated>2025-11-12T20:49:22Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://tech.preferred.jp/en/blog/technologies-behind-distributed-deep-learning-allreduce/&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_1.png&amp;diff=41707</id>
		<title>파일:링 올 리듀스 동작 순서 1.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EB%A7%81_%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4_%EB%8F%99%EC%9E%91_%EC%88%9C%EC%84%9C_1.png&amp;diff=41707"/>
		<updated>2025-11-12T20:48:10Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://tech.preferred.jp/en/blog/technologies-behind-distributed-deep-learning-allreduce/&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EC%84%9C%EB%B2%84&amp;diff=41706</id>
		<title>파라미터 서버</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EC%84%9C%EB%B2%84&amp;diff=41706"/>
		<updated>2025-11-12T20:45:12Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:파라미터 서버.png|섬네일|파라미터 서버(싱글과 멀티 서버 방식)]]&lt;br /&gt;
파라미터 서버(Parameter Server)는 대규모 분산 머신러닝에서 모델 파라미터(가중치)를 관리하고 동기화하기 위해 사용되는 분산 시스템 구조이다.&lt;br /&gt;
==개요==&lt;br /&gt;
파라미터 서버 아키텍처는 여러 개의 워커(worker) 노드가 각자 데이터 샘플을 사용해 기울기(gradient)를 계산하고, 중앙 또는 분산된 서버(server) 노드가 이를 수집·통합해 모델 파라미터를 갱신하는 방식으로 동작한다. 이 구조는 초기 대규모 딥러닝 및 머신러닝 시스템에서 널리 사용되었으며, 특히 비동기식 학습과 대규모 클러스터 환경에서 효과적이었다.&lt;br /&gt;
==구조==&lt;br /&gt;
파라미터 서버는 일반적으로 다음과 같은 두 종류의 노드로 구성된다.&lt;br /&gt;
*워커(Worker): 로컬 데이터셋으로 순전파와 역전파를 수행하고 gradient를 계산한다.&lt;br /&gt;
*서버(Server): 워커로부터 전달된 gradient를 집계하고 파라미터를 업데이트한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===1. 순전파 및 역전파===&lt;br /&gt;
워커 노드는 주어진 미니배치를 사용하여 모델의 순전파(forward pass)와 역전파(backward pass)를 수행한다.&lt;br /&gt;
===2. 기울기 전송===&lt;br /&gt;
각 워커는 계산된 기울기를 파라미터 서버에 전송한다.&lt;br /&gt;
===3. 파라미터 집계 및 갱신===&lt;br /&gt;
서버는 여러 워커로부터 전달된 기울기를 집계하고, 이를 바탕으로 모델 파라미터를 갱신한다.&lt;br /&gt;
===4. 파라미터 배포===&lt;br /&gt;
갱신된 파라미터는 다시 워커들에게 전달되어 다음 학습 단계에서 사용된다.&lt;br /&gt;
==동기식과 비동기식 방식==&lt;br /&gt;
*동기식(Synchronous): 모든 워커가 기울기 계산을 완료할 때까지 기다린 다음 파라미터를 갱신한다.&lt;br /&gt;
*비동기식(Asynchronous): 워커는 서로 기다리지 않고 계산과 갱신을 독립적으로 진행한다.&lt;br /&gt;
비동기식 방식은 학습 속도가 빠르지만, 뒤쳐진 워커가 오래된 파라미터(Stale Parameter)를 사용할 위험이 있다.&lt;br /&gt;
==장점==&lt;br /&gt;
*시스템 일부가 느려도 전체 학습이 중단되지 않는 견고성(fault tolerance).&lt;br /&gt;
*비동기식 학습을 통해 높은 처리량을 얻을 수 있음.&lt;br /&gt;
*초기 분산 머신러닝 환경에서 구현이 상대적으로 단순함.&lt;br /&gt;
==단점==&lt;br /&gt;
*서버 노드에 통신량이 집중되어 병목(bottleneck)이 발생할 수 있다.&lt;br /&gt;
*서버 확장이 어렵기 때문에 매우 큰 규모의 분산 학습에서는 비효율적이다.&lt;br /&gt;
*워커 간 동기화 비용이 증가하면서 전체 학습 성능이 떨어질 수 있다.&lt;br /&gt;
==발전과 현대적 대안==&lt;br /&gt;
파라미터 서버는 초기 분산 딥러닝에서 중요한 역할을 했지만, 최근 대규모 딥러닝 모델 학습에서는 All-Reduce 기반 방식이 더 널리 사용된다. Ring All-Reduce와 같은 알고리즘은 통신 부하가 균등하게 분산되므로 확장성이 높아 현대 GPU 클러스터에 적합하다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[분산 학습]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[올 리듀스]]&lt;br /&gt;
*[[링 올 리듀스]]&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Li, Mu; Andersen, David G.; Park, Jinwoo et al. &amp;quot;Scaling Distributed Machine Learning with the Parameter Server.&amp;quot; OSDI (2014).&lt;br /&gt;
*Dean, Jeffrey; Corrado, Greg; Monga, Rajat et al. &amp;quot;Large Scale Distributed Deep Networks.&amp;quot; NIPS (2012).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4&amp;diff=41705</id>
		<title>올 리듀스</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4&amp;diff=41705"/>
		<updated>2025-11-12T20:44:41Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 올 리듀스 방식 작동 구조 올 리듀스(All-Reduce)는 분산 딥러닝 및 고성능 컴퓨팅(HPC) 환경에서 여러 노드(예: GPU)가 계산한 데이터를 집계하고, 그 결과를 모든 노드에 다시 배포하는 집합 통신 연산이다. ==개요== 올 리듀스는 각 노드가 독립적으로 계산한 기울기(gradient) 또는 텐서 값을 서로 공유하고 합산 또는 평균한 뒤, 그 결과를 모든...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:올 리듀스.png|섬네일|올 리듀스 방식 작동 구조]]&lt;br /&gt;
올 리듀스(All-Reduce)는 분산 딥러닝 및 고성능 컴퓨팅(HPC) 환경에서 여러 노드(예: GPU)가 계산한 데이터를 집계하고, 그 결과를 모든 노드에 다시 배포하는 집합 통신 연산이다.&lt;br /&gt;
==개요==&lt;br /&gt;
올 리듀스는 각 노드가 독립적으로 계산한 기울기(gradient) 또는 텐서 값을 서로 공유하고 합산 또는 평균한 뒤, 그 결과를 모든 노드가 동일하게 갖도록 하는 방식이다. 이 과정은 대규모 분산 학습에서 모델 파라미터의 일관성을 유지하는 핵심 기술로 사용되며, 특히 딥러닝 프레임워크([[PyTorch]], [[TensorFlow]], [[Horovod]] 등)에서 기본적인 동기식 데이터 병렬 학습 기법으로 채택된다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
올 리듀스는 일반적으로 다음 단계로 구성된다.&lt;br /&gt;
*각 노드가 로컬 데이터로 순전파와 역전파를 수행하고 기울기를 계산한다.&lt;br /&gt;
*모든 노드는 서로의 기울기를 통신하여 합산 또는 평균하는 집계(reduce)를 수행한다.&lt;br /&gt;
*집계된 결과는 다시 모든 노드에 동일하게 배포된다(gather).&lt;br /&gt;
*모든 노드는 동일한 기울기를 사용해 파라미터를 갱신한다.&lt;br /&gt;
==특징==&lt;br /&gt;
*각 노드가 동일한 파라미터를 항상 유지하므로 동기식 학습에 적합하다.&lt;br /&gt;
*기울기 평균은 단일 노드에서 큰 배치를 사용하는 것과 동일한 효과를 갖는다.&lt;br /&gt;
*분산 환경에서도 모델 일관성을 유지할 수 있다.&lt;br /&gt;
==파라미터 서버와의 비교==&lt;br /&gt;
올 리듀스는 모든 노드가 서로 기울기를 교환하며 집계하는 분산형 통신 구조인 반면, 파라미터 서버(Parameter Server)는 중앙 서버가 모든 워커로부터 기울기를 수집·통합한 뒤 갱신된 파라미터를 다시 배포하는 &#039;&#039;&#039;중앙집중식 구조&#039;&#039;&#039;이다. &lt;br /&gt;
&lt;br /&gt;
* 파라미터 서버는 서버 노드에 통신 및 연산 부하가 집중되어 병목이 발생하기 쉬운 반면, &lt;br /&gt;
* 올 리듀스는 통신량이 모든 노드에 균등하게 분산되어 확장성이 높고 대규모 GPU 클러스터 환경에서 더 효과적이다.&lt;br /&gt;
&lt;br /&gt;
==구현 방식==&lt;br /&gt;
올 리듀스는 다양한 통신 알고리즘으로 구현될 수 있으며, 그중 가장 널리 사용되는 구조는 다음과 같다.&lt;br /&gt;
===[[링 올 리듀스|링 올 리듀스(Ring All-Reduce)]]===&lt;br /&gt;
노드들을 링 형태로 연결하여 각 노드가 자신의 텐서를 여러 조각(chunk)으로 나눠 이웃 노드에 전송하는 방식이다. 모든 노드는 동일한 통신량을 가지므로 확장성이 뛰어나며, GPU 클러스터에서 가장 널리 사용되는 구현 방식이다.&lt;br /&gt;
===트리 기반 올 리듀스===&lt;br /&gt;
노드들을 트리 구조로 조직하여 상위 노드로 기울기를 모으고(reduce), 다시 하위 노드로 결과를 전파하는(broadcast) 방식이다. 통신 단계의 깊이가 짧아 지연(latency)이 낮은 것이 장점이다.&lt;br /&gt;
==장점==&lt;br /&gt;
*높은 확장성: 노드 수가 많아져도 성능 손실이 작다.&lt;br /&gt;
*균등한 통신 부하: 특히 링 구조에서는 모든 노드가 동일한 양의 데이터를 교환한다.&lt;br /&gt;
*GPU 간 통신을 최적화한 NCCL과 같은 라이브러리에서 고성능 지원.&lt;br /&gt;
==단점==&lt;br /&gt;
*모든 노드가 동기적으로 동작해야 하므로 느린 노드가 전체 속도를 저하시킬 수 있다.&lt;br /&gt;
*통신 비용이 매우 낮은 고속 네트워크 환경에서만 효율이 극대화된다.&lt;br /&gt;
*비동기식 학습에는 적합하지 않다.&lt;br /&gt;
==활용==&lt;br /&gt;
*대규모 딥러닝 모델의 데이터 병렬 학습&lt;br /&gt;
*HPC 환경에서 벡터 또는 텐서 연산 집계&lt;br /&gt;
*PyTorch DistributedDataParallel(DDP), TensorFlow MirroredStrategy, Horovod 등에서 기본 동작 방식&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[분산 학습]]&lt;br /&gt;
*[[링 올 리듀스]]&lt;br /&gt;
*[[파라미터 서버]]&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Sergeev, A.; Del Balso, M. &amp;quot;Horovod: Fast and Easy Distributed Deep Learning in TensorFlow.&amp;quot; arXiv (2018).&lt;br /&gt;
*Thakur, R.; Rabenseifner, R.; Gropp, W. &amp;quot;Optimization of Collective Communication Operations.&amp;quot; International Journal of High Performance Computing Applications (2005).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴퓨팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4.png&amp;diff=41704</id>
		<title>파일:올 리듀스.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%EC%98%AC_%EB%A6%AC%EB%93%80%EC%8A%A4.png&amp;diff=41704"/>
		<updated>2025-11-12T20:43:32Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://tech.preferred.jp/en/blog/technologies-behind-distributed-deep-learning-allreduce/&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EC%84%9C%EB%B2%84&amp;diff=41703</id>
		<title>파라미터 서버</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EC%84%9C%EB%B2%84&amp;diff=41703"/>
		<updated>2025-11-12T20:38:04Z</updated>

		<summary type="html">&lt;p&gt;인공무능: 새 문서: 파라미터 서버(싱글과 멀티 서버 방식) 파라미터 서버(Parameter Server)는 대규모 분산 머신러닝에서 모델 파라미터(가중치)를 관리하고 동기화하기 위해 사용되는 분산 시스템 구조이다. ==개요== 파라미터 서버 아키텍처는 여러 개의 워커(worker) 노드가 각자 데이터 샘플을 사용해 기울기(gradient)를 계산하고, 중앙 또는 분산된 서버(serv...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:파라미터 서버.png|섬네일|파라미터 서버(싱글과 멀티 서버 방식)]]&lt;br /&gt;
파라미터 서버(Parameter Server)는 대규모 분산 머신러닝에서 모델 파라미터(가중치)를 관리하고 동기화하기 위해 사용되는 분산 시스템 구조이다.&lt;br /&gt;
==개요==&lt;br /&gt;
파라미터 서버 아키텍처는 여러 개의 워커(worker) 노드가 각자 데이터 샘플을 사용해 기울기(gradient)를 계산하고, 중앙 또는 분산된 서버(server) 노드가 이를 수집·통합해 모델 파라미터를 갱신하는 방식으로 동작한다. 이 구조는 초기 대규모 딥러닝 및 머신러닝 시스템에서 널리 사용되었으며, 특히 비동기식 학습과 대규모 클러스터 환경에서 효과적이었다.&lt;br /&gt;
==구조==&lt;br /&gt;
파라미터 서버는 일반적으로 다음과 같은 두 종류의 노드로 구성된다.&lt;br /&gt;
*워커(Worker): 로컬 데이터셋으로 순전파와 역전파를 수행하고 gradient를 계산한다.&lt;br /&gt;
*서버(Server): 워커로부터 전달된 gradient를 집계하고 파라미터를 업데이트한다.&lt;br /&gt;
==동작 방식==&lt;br /&gt;
===1. 순전파 및 역전파===&lt;br /&gt;
워커 노드는 주어진 미니배치를 사용하여 모델의 순전파(forward pass)와 역전파(backward pass)를 수행한다.&lt;br /&gt;
===2. 기울기 전송===&lt;br /&gt;
각 워커는 계산된 기울기를 파라미터 서버에 전송한다.&lt;br /&gt;
===3. 파라미터 집계 및 갱신===&lt;br /&gt;
서버는 여러 워커로부터 전달된 기울기를 집계하고, 이를 바탕으로 모델 파라미터를 갱신한다.&lt;br /&gt;
===4. 파라미터 배포===&lt;br /&gt;
갱신된 파라미터는 다시 워커들에게 전달되어 다음 학습 단계에서 사용된다.&lt;br /&gt;
==동기식과 비동기식 방식==&lt;br /&gt;
*동기식(Synchronous): 모든 워커가 기울기 계산을 완료할 때까지 기다린 다음 파라미터를 갱신한다.&lt;br /&gt;
*비동기식(Asynchronous): 워커는 서로 기다리지 않고 계산과 갱신을 독립적으로 진행한다.&lt;br /&gt;
비동기식 방식은 학습 속도가 빠르지만, 뒤쳐진 워커가 오래된 파라미터(Stale Parameter)를 사용할 위험이 있다.&lt;br /&gt;
==장점==&lt;br /&gt;
*시스템 일부가 느려도 전체 학습이 중단되지 않는 견고성(fault tolerance).&lt;br /&gt;
*비동기식 학습을 통해 높은 처리량을 얻을 수 있음.&lt;br /&gt;
*초기 분산 머신러닝 환경에서 구현이 상대적으로 단순함.&lt;br /&gt;
==단점==&lt;br /&gt;
*서버 노드에 통신량이 집중되어 병목(bottleneck)이 발생할 수 있다.&lt;br /&gt;
*서버 확장이 어렵기 때문에 매우 큰 규모의 분산 학습에서는 비효율적이다.&lt;br /&gt;
*워커 간 동기화 비용이 증가하면서 전체 학습 성능이 떨어질 수 있다.&lt;br /&gt;
==발전과 현대적 대안==&lt;br /&gt;
파라미터 서버는 초기 분산 딥러닝에서 중요한 역할을 했지만, 최근 대규모 딥러닝 모델 학습에서는 All-Reduce 기반 방식이 더 널리 사용된다. Ring All-Reduce와 같은 알고리즘은 통신 부하가 균등하게 분산되므로 확장성이 높아 현대 GPU 클러스터에 적합하다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[분산 학습]]&lt;br /&gt;
*[[데이터 병렬 처리]]&lt;br /&gt;
*[[올 리듀스]]&lt;br /&gt;
*[[링 올 리듀스]]&lt;br /&gt;
*[[딥러닝]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Li, Mu; Andersen, David G.; Park, Jinwoo et al. &amp;quot;Scaling Distributed Machine Learning with the Parameter Server.&amp;quot; OSDI (2014).&lt;br /&gt;
*Dean, Jeffrey; Corrado, Greg; Monga, Rajat et al. &amp;quot;Large Scale Distributed Deep Networks.&amp;quot; NIPS (2012).&lt;br /&gt;
==각주==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:분산 컴뷰팅]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EC%84%9C%EB%B2%84.png&amp;diff=41702</id>
		<title>파일:파라미터 서버.png</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%ED%8C%8C%EC%9D%BC:%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EC%84%9C%EB%B2%84.png&amp;diff=41702"/>
		<updated>2025-11-12T20:36:39Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;출처: https://d2l.ai/chapter_computational-performance/parameterserver.html&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Medusa_(%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5)&amp;diff=41701</id>
		<title>Medusa (인공지능)</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Medusa_(%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5)&amp;diff=41701"/>
		<updated>2025-11-12T20:13:52Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Medusa(영어: Medusa)는 대형 언어모델(LLM) 기반 생성 모델의 추론 속도를 가속화하기 위해 제안된 프레임워크이다.&lt;br /&gt;
==개요==&lt;br /&gt;
[[파일:Medusa Framework.png|섬네일|메두사 작동 개요]]&lt;br /&gt;
Medusa는 기존 언어모델이 토큰을 순차적으로 하나씩 생성하는 방식의 병목을 해결하기 위해 고안된 방식이다.  기존 방식에서는 출력할 토큰 K개에 대해 모델이 K번의 연산을 실행해야 하지만, Medusa는 여러 개의 디코딩 헤드를 추가해 후속 토큰을 병렬로 예측한다.&lt;br /&gt;
==작동 원리==&lt;br /&gt;
===추가 디코딩 헤드===&lt;br /&gt;
Medusa는 기존 모델의 출력층 위에 여러 개의 디코딩 헤드를 추가하고, 각 헤드는 다음 토큰뿐 아니라 뒤이어 생성될 여러 토큰을 예측하도록 설계된다.  Medusa-1은 백본 모델을 고정한 채 헤드만 학습하고, Medusa-2는 모델 전체를 학습한다.&lt;br /&gt;
===트리 기반 어텐션 및 수락 스킴===&lt;br /&gt;
여러 후보 시퀀스는 트리 구조로 구성되며, 병렬 검증을 위한 어텐션 마스크가 사용된다.  또한 가능성이 높은 후보(prefix)를 수락하는 typical acceptance 방법을 통해 품질 저하 없이 속도 향상을 달성한다.&lt;br /&gt;
==특징 및 장점==&lt;br /&gt;
*별도의 드래프트 모델이 필요하지 않다.&lt;br /&gt;
*인프라 변경이 비교적 작다.&lt;br /&gt;
*다양한 모델 규모에서 속도 향상을 입증했다.&lt;br /&gt;
==제약 및 고려사항==&lt;br /&gt;
*여러 헤드가 추가되므로 메모리 사용량이 증가한다.&lt;br /&gt;
*주로 배치 사이즈 1 환경에서 효과가 크며, 대량 처리 환경에서는 추가 연구가 필요하다.&lt;br /&gt;
*Medusa-2는 모델 전체를 학습하므로 학습 비용이 크다.&lt;br /&gt;
==적용 사례 및 활용 가능성==&lt;br /&gt;
*실시간 대화형 어플리케이션 등 지연이 중요한 환경에 적합하다.&lt;br /&gt;
*코드 생성, SQL 질의 생성 등 규칙성이 높은 출력에서 속도 향상 효과가 크다.&lt;br /&gt;
*기존 LLM 시스템에 적은 구조 변경으로 적용 가능하다.&lt;br /&gt;
==역사==&lt;br /&gt;
*2024년 1월 19일, Medusa 논문이 arXiv에 공개되었다.&lt;br /&gt;
*Amazon SageMaker 블로그에서 Medusa-1 적용 사례가 공유되었다.&lt;br /&gt;
*Medusa 오픈소스 저장소가 GitHub에 공개되었다.&lt;br /&gt;
==관련 기술 및 비교==&lt;br /&gt;
*Speculative Decoding: 별도 모델을 사용한 후보 생성 방식.&lt;br /&gt;
*Medusa는 해당 방식의 복잡성을 줄이는 대안으로 평가된다.&lt;br /&gt;
*트리 기반 병렬 디코딩과도 밀접한 연관이 있다.&lt;br /&gt;
==Medusa와 [[추측 디코딩]]의 차이==&lt;br /&gt;
Medusa와 기존 추측 디코딩(speculative decoding)은 모두 토큰 생성 속도를 높이기 위한 기법이지만, 설계 철학과 구조적 접근 방식에서 명확한 차이를 가진다.&lt;br /&gt;
===구조적 차이===&lt;br /&gt;
*기존 추측 디코딩&lt;br /&gt;
**별도의 드래프트 모델이 필요하다.&lt;br /&gt;
**드래프트 모델이 후보 토큰을 생성하고, 메인 모델이 이를 검증한다.&lt;br /&gt;
** 두 모델 간 상호작용을 기반으로 한 이원 구조를 가진다.*Medusa&lt;br /&gt;
**메인 모델 내부에 여러 디코딩 헤드를 추가한다.&lt;br /&gt;
** 하나의 모델이 병렬 예측과 검증을 동시에 수행한다.&lt;br /&gt;
**트리 기반 검증 구조를 사용하며 별도 모델이 필요 없다.&lt;br /&gt;
===결과적 차이===&lt;br /&gt;
*기존 방식은 두 모델을 관리해야 하므로 구현 복잡성과 인프라 요구량이 증가한다.&lt;br /&gt;
*Medusa는 단일 모델 확장 방식이므로 구조가 단순하고 적용 비용이 낮다.&lt;br /&gt;
*두 방식 모두 속도 향상을 목표로 하지만 접근 방식이 크게 다르기 때문에 Medusa는 전통적 speculative decoding의 변형이자 대안으로 평가된다.&lt;br /&gt;
==같이 보기==&lt;br /&gt;
*[[대형 언어 모델]]&lt;br /&gt;
*[[추측 디코딩]]&lt;br /&gt;
*[[Transformer (딥러닝)]]&lt;br /&gt;
*[[추론 최적화]]&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*[https://arxiv.org/abs/2401.10774 Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads (arXiv)]&lt;br /&gt;
*[https://aws.amazon.com/blogs/machine-learning/achieve-2x-speed-up-in-llm-inference-with-medusa-1-on-amazon-sagemaker-ai/ Achieve ~2x speed-up in LLM inference with Medusa-1 (AWS Blog)]&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:대형 언어 모델]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EC%B6%94%EC%B8%A1_%EB%94%94%EC%BD%94%EB%94%A9&amp;diff=41700</id>
		<title>추측 디코딩</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EC%B6%94%EC%B8%A1_%EB%94%94%EC%BD%94%EB%94%A9&amp;diff=41700"/>
		<updated>2025-11-12T20:11:05Z</updated>

		<summary type="html">&lt;p&gt;인공무능: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[파일:추측적 디코딩.png|섬네일|추측적(예측적) 디코딩 방법]]&lt;br /&gt;
추측 디코딩(영어: Speculative Decoding)은 거대 언어 모델(LLM)의 자동회귀 디코딩 과정에서 지연(latency)과 처리량(throughput)을 개선하기 위해 고안된 방법으로, 작은 초안 모델이 여러 개의 미래 토큰을 제안하고, 이후 고성능 대상 모델이 이를 병렬로 검증하는 방식이다.&lt;br /&gt;
==개요==&lt;br /&gt;
기존의 자동회귀 디코딩 방식은 한 번에 하나의 토큰을 생성하고 그 결과를 기다려야 다음 단계를 진행할 수 있었다. 이 때문에 특히 대형 모델의 경우 처리 지연이 길어지는 문제가 발생하였다.  추측 디코딩은 이러한 병목을 완화하기 위해 다음과 같은 구조를 가진다.&lt;br /&gt;
*초안 단계: 작은 모델이 입력 문맥을 바탕으로 여러 개의 다음 토큰 후보를 빠르게 생성한다.&lt;br /&gt;
*검증 단계: 대상 모델이 후보 토큰들을 병렬로 평가하여, 실제로 모델이 생성할 가능성이 높은 토큰만을 수락한다.&lt;br /&gt;
이 과정을 통해 순차적인 토큰 생성이 아닌 병렬 검증 기반의 구조로 바뀌어 디코딩 지연이 줄고 처리량이 향상된다.&lt;br /&gt;
==작동 원리==&lt;br /&gt;
===드래프팅 단계===&lt;br /&gt;
초안 모델은 대상 모델보다 작거나 간소화된 형태로, 현재까지의 접두사(prefix)를 입력으로 다음 K개의 토큰 후보를 생성한다. 이 모델은 보통 대상 모델을 모방하거나 지식 증류(knowledge distillation)를 통해 훈련된다.&lt;br /&gt;
===검증 단계===&lt;br /&gt;
생성된 후보 토큰들은 대상 모델의 단일 포워드 패스(forward pass)를 통해 평가된다. 대상 모델은 각 후보 위치에서 확률 분포를 계산하고, 초안 모델이 제안한 토큰이 높은 확률을 갖는다면 해당 토큰을 수락한다. 첫 번째로 수락되지 않은 후보가 나오면 그 이후의 후보는 모두 버리고 접두사부터 다시 생성한다.&lt;br /&gt;
===수락률과 효율성===&lt;br /&gt;
수락률(acceptance rate)이 높을수록 초안 모델의 예측이 대상 모델과 일치하므로 병렬 처리 효율이 커진다. 반대로 수락률이 낮으면 재생성이 많아져 오히려 효율이 떨어질 수 있다.&lt;br /&gt;
==장점==&lt;br /&gt;
*순차적 생성 대신 여러 토큰을 한 번에 검증할 수 있어 지연(latency)이 줄어든다.&lt;br /&gt;
*동일한 하드웨어에서 처리량(throughput)을 높일 수 있다.&lt;br /&gt;
*메모리 대역폭이 병목인 환경에서 성능 향상이 크다.&lt;br /&gt;
==단점==&lt;br /&gt;
*초안 모델이 대상 모델과 다르게 예측하면 수락률이 낮아져 효율이 떨어진다.&lt;br /&gt;
*검증 단계에서 대상 모델의 추가 연산이 필요해 오버헤드가 생길 수 있다.&lt;br /&gt;
*품질 유지가 중요하므로 수락 임계값이나 모델 정렬 등의 튜닝이 필요하다.&lt;br /&gt;
==응용==&lt;br /&gt;
*vLLM 엔진에서는 가이드·추측 디코딩(guide &amp;amp; speculative decoding)으로 구현되어 있다.&lt;br /&gt;
*NVIDIA의 TensorRT-LLM 프레임워크에서는 추론 지연을 줄이기 위한 주요 기법으로 채택되었다.&lt;br /&gt;
*[[Medusa (인공지능)|&#039;&#039;&#039;Medusa&#039;&#039;&#039;]] 프로젝트에서는 여러 디코딩 헤드를 추가하여 동시에 여러 단계의 토큰을 제안하는 구조를 도입하였다.&lt;br /&gt;
==한계 및 연구 과제==&lt;br /&gt;
*초안 모델과 대상 모델의 정렬을 어떻게 최적화할지에 대한 연구가 필요하다.&lt;br /&gt;
*수락 임계값과 후보 토큰 길이(K)의 선택이 성능에 큰 영향을 미친다.&lt;br /&gt;
*실제 서비스 환경에서는 입력 길이와 생성 길이에 따라 성능 편차가 존재한다.&lt;br /&gt;
*블록 병렬 디코딩(blockwise decoding), 청크 프리필(chunk prefill) 등과의 결합 가능성이 연구되고 있다.&lt;br /&gt;
==용어 정리==&lt;br /&gt;
*대상 모델(target model): 최종 출력 품질을 담당하는 고성능 언어 모델&lt;br /&gt;
*초안 모델(draft model): 대상 모델보다 작고 빠르며 후보 토큰을 제안하는 모델&lt;br /&gt;
*수락률(acceptance rate): 초안 모델의 제안 중 대상 모델이 수락한 비율&lt;br /&gt;
*접두사(prefix): 현재까지 생성된 토큰 시퀀스로, 다음 토큰 생성을 위한 맥락&lt;br /&gt;
==같이 보기==&lt;br /&gt;
&lt;br /&gt;
* [[신경망 가지치기]]&lt;br /&gt;
* [[대형 언어 모델 효율화]]&lt;br /&gt;
&lt;br /&gt;
==참고 문헌==&lt;br /&gt;
*Li, Jamie. &amp;quot;An Introduction to Speculative Decoding for Reducing Latency in AI Inference.&amp;quot; NVIDIA Developer Blog, 2025년 9월 19일. &lt;br /&gt;
*Aleksa Gordić. &amp;quot;vLLM Internals: High-Throughput LLM Inference System.&amp;quot; RosettaLens, 2025년 9월 2일. &lt;br /&gt;
*A Comprehensive Survey of Speculative Decoding. 2024.&lt;br /&gt;
==각주==&lt;br /&gt;
[[분류:인공지능]]&lt;br /&gt;
[[분류:대형 언어 모델]]&lt;br /&gt;
[[분류:딥 러닝]]&lt;/div&gt;</summary>
		<author><name>인공무능</name></author>
	</entry>
</feed>