2019.04.24

텐서플로우, 더 빠른 머신러닝 지원하는 보조 프로젝트 MLIR 공개

Serdar Yegulalp | InfoWorld
구글 텐서플로우 머신러닝 프레임워크를 개발하는 엔지니어가 보조 프로젝트인 MLIR을 공개했다. 머신러닝 프레임워크를 위한 공통 중간 언어를 목표로 한다.
 
ⓒGettyImagesBank

MLIR은 Multi-Level Intermediate Representation의 줄임말로, 텐서플로우를 사용하는 프로젝트와 다른 머신러닝 라이브러리에서 좀 더 효율적인 방법으로 코드를 컴파일해 기반 하드웨어의 장점을 최대한 살릴 수 있도록 해 준다. 더 나아가 MLIR은 조만간 컴파일러에서 범용적으로 사용해 머신러닝 프로젝트를 넘어 다른 프로젝트로도 최적화의 이점을 확대할 수 있다.

MLIR은 C++나 파이썬 같은 개발언어는 아니다. 이런 고수준 언어와 기계 코드 간의 중간 컴파일 단계를 대변한다. 컴파일러 프레임워크인 LLVM이 이런 중간 대변 계층으로 자체 IR을 사용하는데, LLVM 창시자 중 한 명인 크리스 래트너가 MLIR의 공동 개발자이다. MLIR을 LLVM 공동 프로제트로 만드는 것도 이를 확산하는 방법 중 하나가 될 것이다.

이달 초 유로LLVM 컨퍼런스의 발표 자료를 보면, 래트너와 구글의 타티아나 스피스먼은 텐서플로우가 내부적으로 여러 개의 IR을 생성하는 방법을 설명했다. 하지만 이들 별도의 IR은 서로를 이용하지 않는다. MLIR은 모든 텐서플로우 서브시스템용으로 하나의 표준 IR을 제공한다. 텐서플로우는 현재 내부적으로 MLIR을 사용하도록 마이그레이션하고 있다.

MLIR이 제공하는 또 하나의 이점은 병렬 컴파일이다. MLIR은 컴파일러가 코드의 서로 다른 영역에서 병렬로 동작하도록 고안됐기 때문에 머신러닝 모델과 다른 종류의 애플리케이션을 좀 더 신속하게 프로덕션 환경으로 보낼 수 있다.

머신러닝 외의 다른 언어나 프레임워크에 활용할 수 있는 장점도 있다. 예를 들어, 스위프트나 러스트 같은 LLVM 기반 언어는 내부적으로 사용하는 수많은 최적화를 LLVM에서 표현할 수 없기 때문에 자체 IR을 개발해야만 했다. MLIR은 이런 최적화를 표현할 표준화된 방법을 제공해 다른 언어에서도 재사용할 수 있다.

MLIR 프로젝트는 오픈소스로, 깃허브에 공식 사양이 공개되어 있다.  editor@itworld.co.kr


2019.04.24

텐서플로우, 더 빠른 머신러닝 지원하는 보조 프로젝트 MLIR 공개

Serdar Yegulalp | InfoWorld
구글 텐서플로우 머신러닝 프레임워크를 개발하는 엔지니어가 보조 프로젝트인 MLIR을 공개했다. 머신러닝 프레임워크를 위한 공통 중간 언어를 목표로 한다.
 
ⓒGettyImagesBank

MLIR은 Multi-Level Intermediate Representation의 줄임말로, 텐서플로우를 사용하는 프로젝트와 다른 머신러닝 라이브러리에서 좀 더 효율적인 방법으로 코드를 컴파일해 기반 하드웨어의 장점을 최대한 살릴 수 있도록 해 준다. 더 나아가 MLIR은 조만간 컴파일러에서 범용적으로 사용해 머신러닝 프로젝트를 넘어 다른 프로젝트로도 최적화의 이점을 확대할 수 있다.

MLIR은 C++나 파이썬 같은 개발언어는 아니다. 이런 고수준 언어와 기계 코드 간의 중간 컴파일 단계를 대변한다. 컴파일러 프레임워크인 LLVM이 이런 중간 대변 계층으로 자체 IR을 사용하는데, LLVM 창시자 중 한 명인 크리스 래트너가 MLIR의 공동 개발자이다. MLIR을 LLVM 공동 프로제트로 만드는 것도 이를 확산하는 방법 중 하나가 될 것이다.

이달 초 유로LLVM 컨퍼런스의 발표 자료를 보면, 래트너와 구글의 타티아나 스피스먼은 텐서플로우가 내부적으로 여러 개의 IR을 생성하는 방법을 설명했다. 하지만 이들 별도의 IR은 서로를 이용하지 않는다. MLIR은 모든 텐서플로우 서브시스템용으로 하나의 표준 IR을 제공한다. 텐서플로우는 현재 내부적으로 MLIR을 사용하도록 마이그레이션하고 있다.

MLIR이 제공하는 또 하나의 이점은 병렬 컴파일이다. MLIR은 컴파일러가 코드의 서로 다른 영역에서 병렬로 동작하도록 고안됐기 때문에 머신러닝 모델과 다른 종류의 애플리케이션을 좀 더 신속하게 프로덕션 환경으로 보낼 수 있다.

머신러닝 외의 다른 언어나 프레임워크에 활용할 수 있는 장점도 있다. 예를 들어, 스위프트나 러스트 같은 LLVM 기반 언어는 내부적으로 사용하는 수많은 최적화를 LLVM에서 표현할 수 없기 때문에 자체 IR을 개발해야만 했다. MLIR은 이런 최적화를 표현할 표준화된 방법을 제공해 다른 언어에서도 재사용할 수 있다.

MLIR 프로젝트는 오픈소스로, 깃허브에 공식 사양이 공개되어 있다.  editor@itworld.co.kr


X