# IPU

3개의 포스트
post-thumbnail

Keras의 EfficientNet 모델을 IPU에 포팅하기

해당 문서는 https://github.com/Joonkkyo/EfficientNet-for-IPU 의 실습을 돕기 위해 제작되었습니다. Overview GPU용 예제 코드를 IPU용 예제 코드로 변환 모델 및 학습 관련 코드를 IPU 환경에서 학습할 수 있도록 변환 폴더 구조 환경 설정 python 3.6 버전 가상환경 설치 및 활성화 Poplar SDK, gc-tensorflow 설치 및 활성화 코드 비교 - efficientnetCIFAR10traingpu.py vs efficientnetCIFAR10trainipu.py 스크린샷 2021-04-22 오후 3 42 25 왼쪽이 GPU 버전, 오른쪽이 IPU 버전입

2021년 9월 26일
·
0개의 댓글
·
post-thumbnail

IPU Programmer's Guide - 2

1. Programming Model IPU가 다른 프로세서와 비교했을 때 가장 차별화되는 점은 tile에 위치한 코드의 병렬 실행이다. IPU가 프로그램을 실행할 때, 모든 tile이 해당 task에 대해 병렬 작업을 수행한다. 각각의 tile은 각각 다른 코드를 실행하고 로컬 메모리에 저장되어 있는 데이터에 대한 연산을 수행한다. tile은 연산이 끝나는 시점에 데이터를 서로 교환할 수 있다. 모든 tile이 이 작업을 수행하기 위해서는 반드시 동기화되어야 한다. 일반적으로 IPU 애플리케이션은 다차원 배열 데이터(텐서)를 저장하는 변수에서 동작한다. 이 작업은 각각의 서로 다른 tile에 저장된 변수 부분에서 tile 전체에 걸쳐 분산될 수 있다. 1.1. Graph representation IPU 프로그램이 실행되면, 하나 이상의 텐서로부터 데이터를 읽어온 다음 그 결과를 다른 텐서에 쓴다. 텐서들은 여러 개의 tile에서 처리될 수 있고, 텐서의 일부

2021년 1월 14일
·
0개의 댓글
·
post-thumbnail

IPU Programmer's Guide - 1

1. IPU hardware overview IPU는 머신 러닝 애플리케이션 가속화를 목적으로 설계된 대규모 병렬 처리 및 메모리 중심 구조를 기반으로 한다. 혼합 정밀도 데이터 (mixed-precision data)에 대한 매우 높은 성능의 부동 소수점 연산 능력을 제공한다. 또한 IPU에는 데이터에 대한 빠르고 유동적인 접근을 가능케 하는 엄청난 양의 분산형 SRAM이 장착되어 있다. IPU는 호스트 컴퓨터용 가속기로 사용된다. 호스트 프로세서는 하나 이상의 IPU에서 실행되는 IPU 코드를 생성할 수 있다. 이를 통해 호스트는 IPU에서 연산을 수행하고, IPU는 호스트 메모리와 데이터를 주고받을 수 있다. 단일 IPU는 광범위한 기계 학습 및 인공 지능 관련 task를 수행할 수 있다. 또한, 다중 IPU는 한꺼번에 단일 task를 처리할 수 있다. 이 경우에 다중 IPU는 custom IPU-Link® interconnect cable을 통해 서로 통신한다

2020년 12월 8일
·
0개의 댓글
·