이전

리뷰 (7)

한줄평
평점 분포
  • 리뷰 총점10 86%
  • 리뷰 총점8 14%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 10.0
  • 30대 10.0
  • 40대 0.0
  • 50대 10.0

포토/동영상 (6)

리뷰 총점 종이책
[리뷰] JAX/Flax로 딥러닝 레벨업
"[리뷰] JAX/Flax로 딥러닝 레벨업" 내용보기
* 본 리뷰는 출판사에서 도서를 제공 받아, 직접 읽고 작성한 리뷰입니다.딥러닝 공부를 하면서 실제 논문을 읽고 구현된 코드를 들여다보면 최근에 나온 모델들의 경우 pytorch보다는 jax로 구현된 논문들이 있는 것을 확인할 수 있었습니다. 개인적으로 jax를 공부해 보면서 어려웠었는데 Jpub에서 JAX/Flax로 딥러닝 레벨업이라는 책을 출판해 주셔서 읽어보게 되었습니다.개인적으로
"[리뷰] JAX/Flax로 딥러닝 레벨업" 내용보기

* 본 리뷰는 출판사에서 도서를 제공 받아, 직접 읽고 작성한 리뷰입니다.

딥러닝 공부를 하면서 실제 논문을 읽고 구현된 코드를 들여다보면 최근에 나온 모델들의 경우 pytorch보다는 jax로 구현된 논문들이 있는 것을 확인할 수 있었습니다. 개인적으로 jax를 공부해 보면서 어려웠었는데 Jpub에서 JAX/Flax로 딥러닝 레벨업이라는 책을 출판해 주셔서 읽어보게 되었습니다.
개인적으로 이 책을 읽으면서 가장 만족스러웠던 부분은 JAX가 기존에 사용되던 프레임워크나 라이브러리와는 어떤 점으로 다른지에 대해 집중적으로 설명해 준 점이었습니다. 특히, 함수형 프로그래밍과 관련해서 JAX에서는 어떤 식으로 작성된 함수를 다루는지 알 수 있었고, 이에 대한 코딩 스타일에 대해서도 예제와 함께 나와 있어서 쉽게 이해할 수 있었던 것 같습니다. 또한, Numpy와 JAX의 차이점에 대해서도 나와 있는 점이 매우 흥미로웠습니다. 평소에 Numpy 라이브러리의 주요 기능들을 사용하기만 했지, 그 밑의 단의 특징에 대해서는 고민은 안 해 보았는데, 이에 대한 자세한 설명과 JAX에서는Numpy에서의 부족한 점들을 어떻게 보완했는지 나와 있기에 흥미롭게 읽었습니다.
다만, 해당 책의 후반부에는 JAX를 이용한 여러 딥러닝 모델의 구현 방법이 나와있는 만큼 딥러닝 기법에 대해 이해가 있는 독자들에게 추천합니다. 각 모델에 대한 설명이 나와있긴 하나 해당 책의 목적이 라이브러리에 대한 소개 및 활용 방법을 설명하는 것을 주 목적으로 잡고 있기에 모델들에 대한 설명은 간단하게 소개된 편입니다. 나와 있는 기법들에 대한 이해도가 부족하다면 외부 자료들과 같이 학습하면 좋을 듯싶습니다.

r***********1 2024.10.06. 신고 공감 0 댓글 0
리뷰 총점 종이책
빠르고 직관적인 pytorch , 아니 jax/flax
"빠르고 직관적인 pytorch , 아니 jax/flax" 내용보기
pytorch로만 딥러닝 모델들을 설계해보고 여태 python을 통해서만 딥러닝 모델들 학습해보곤 했는데, jax/flax 도서를 읽어보면서 훨씬 빠르게 연산할 수 있는 jax 프레임워크에 대해 알게 되었고 기존의 numpy, torch 와 크게 다르지 않은 동작법으로 금방 실습해볼 수 있던 것 같습니다! 더군다나 도서 내에 다양한 딥러닝 모델들을 구현해 볼 수 있는 예제들이 있어 좀 더 쉽게 접근할
"빠르고 직관적인 pytorch , 아니 jax/flax" 내용보기
pytorch로만 딥러닝 모델들을 설계해보고 여태 python을 통해서만 딥러닝 모델들 학습해보곤 했는데, jax/flax 도서를 읽어보면서 훨씬 빠르게 연산할 수 있는 jax 프레임워크에 대해 알게 되었고 기존의 numpy, torch 와 크게 다르지 않은 동작법으로 금방 실습해볼 수 있던 것 같습니다! 더군다나 도서 내에 다양한 딥러닝 모델들을 구현해 볼 수 있는 예제들이 있어 좀 더 쉽게 접근할 수 있다는 장점이 있어 딥러닝을 공부하시는 분 특히 jax 프레임워크를 한번이라도 들어보셨던 분이라면 강력히 추천드립니다! 
p*****2 2024.10.03. 신고 공감 0 댓글 0
리뷰 총점 종이책
JAX/Flax로 딥러닝 레벨업 !
"JAX/Flax로 딥러닝 레벨업 !" 내용보기
파이토치로 구현된 딥러닝 코드에 익숙해진 나는 최근에 다른 라이브러리도 적용해보고 싶다는 생각이 들었다. 파이토치의 유연함과 편리함 덕분에 많은 실습에서 활용해 왔지만, 새로운 프레임워크를 통해 딥러닝의 다양한 접근 방식을 경험해 보는 것도 필요하다고 느꼈다. 그러던 중 최근에 JAX와 Flax를 활용한 딥러닝 프레임워크에 대해 다룬 이 책을 접하게 되었고, 바로 읽어보게
"JAX/Flax로 딥러닝 레벨업 !" 내용보기

파이토치로 구현된 딥러닝 코드에 익숙해진 나는 최근에 다른 라이브러리도 적용해보고 싶다는 생각이 들었다. 파이토치의 유연함과 편리함 덕분에 많은 실습에서 활용해 왔지만, 새로운 프레임워크를 통해 딥러닝의 다양한 접근 방식을 경험해 보는 것도 필요하다고 느꼈다.

 

그러던 중 최근에 JAX와 Flax를 활용한 딥러닝 프레임워크에 대해 다룬 이 책을 접하게 되었고, 바로 읽어보게 되었다.

이 책은 모두의 연구소 JAX/Flax LAB이

JAX를 어떻게 실용적으로 활용할 수 있는지에 중점을 두고 집필한 책이다.

그 목표에 맞게 이론과 실제 예제가 적절하게 섞여있다.

 

개발 서적치고 짧은 분량에도 불구하고 간결하면서 쉽게 이해 가능한 설명과 예제 코드에 대한 설명으로 가득 채워져 있어서 빠르고 수월하게 JAX를 익히기에 좋은 책이었다.

 

전에 텐서플로와 파이토치로 구현해 본 적이 있던 CNN, ResNet, DCGAN 같은 친숙한 딥러닝 모델을 JAX로 구현해 보면서 해당 라이브러리를 더 쉽게 이해할 수 있었다.

 

Numpy와 JAX를 비교해서 설명하는 부분과 참고 내용으로 텐서플로, 파이토치에서는 어떻게 구현하는지 짧게 비교 설명한 부분도 마음에 들었다.


이 책은 파이썬에 익숙하며 머신러닝/딥러닝에 대한 사전 지식이 있고 파이토치 보다 확장성이 뛰어난 라이브러리를 프로젝트나 연구에 적용할 필요성을 느낀 사람들에게 추천한다.


* 제이펍 출판사의 서평단 활동으로 제공받은 도서를 읽고 솔직하게 작성한 리뷰입니다.
a********9 2024.10.03. 신고 공감 0 댓글 0
리뷰 총점 종이책
[서평] JAX/Flax로 딥러닝 레벨업
"[서평] JAX/Flax로 딥러닝 레벨업" 내용보기
▶▶ 이 리뷰는 출판사에서 도서를 제공 받아, 직접 읽고 작성한 리뷰입니다.<JAX/Flax로 딥러닝 레벨업>은 딥러닝의 차세대 라이브러리로 각광받는 JAX와 Flax를 본격적으로 다룬 국내 최초의 책입니다. 이 책은 JAX의 함수형 프로그래밍 개념, 자동 미분, 그리고 병렬 연산 기능을 상세히 설명하고,실제 딥러닝 모델을 구축하며 병렬 가속화의 힘을 경험할 수 있도록 안내합니다. 특
"[서평] JAX/Flax로 딥러닝 레벨업" 내용보기
▶▶ 이 리뷰는 출판사에서 도서를 제공 받아, 직접 읽고 작성한 리뷰입니다.


<JAX/Flax로 딥러닝 레벨업>은 
딥러닝의 차세대 라이브러리로 각광받는 JAX와 Flax를 본격적으로 다룬 국내 최초의 책입니다. 
이 책은 JAX의 함수형 프로그래밍 개념, 자동 미분, 그리고 병렬 연산 기능을 상세히 설명하고,
실제 딥러닝 모델을 구축하며 병렬 가속화의 힘을 경험할 수 있도록 안내합니다. 

특히, CNN, ResNet, DCGAN, CLIP 등의 딥러닝 모델을 예제로 다뤄, 
독자가 실제 프로젝트에 적용할 수 있도록 돕습니다.

이 책의 가장 큰 장점은 JAX와 Flax를 쉽게 따라할 수 있게 구성되어 있다는 점입니다. 
초심자들에게는 JAX의 함수형 프로그래밍 개념이 조금 어려울 수 있지만, 
실습을 통해 고급 모델링과 병렬 가속화의 실제적인 이점을 경험할 수 있게 돕습니다. 
예제 코드와 함께 다양한 딥러닝 모델을 단계별로 구축하면서 
독자는 JAX와 Flax의 강력한 기능을 자연스럽게 습득할 수 있습니다. 

특히, JIT 컴파일, 벡터화, 병렬 처리 등 JAX의 고유한 기능을 
각 장마다 예제 코드와 상세한 설명을 통해 그 개념을 자연스럽게 습득할 수 있게 돕습니다. 

어느 정도 딥러닝과 파이썬에 익숙한 독자를 대상으로 하고 있기 때문에, 
완전 초보자에게는 다소 어려울 수 있습니다. 

PyTorch나 TensorFlow에 익숙한 독자라면 
JAX로의 전환이 매끄럽게 이루어질 수 있습니다.
함수형 프로그래밍의 패러다임이 초심자에게는 다소 생소할 수 있지만, 
선형대수와 기본적인 머신러닝 지식이 있는 독자라면 
그 개념을 이해하는 데 큰 어려움이 없을 것입니다. 
실제로 이 책은 파이썬과 딥러닝 지식을 어느 정도 갖춘 독자들에게 적합하며, 
JAX의 강력한 성능을 효과적으로 활용할 수 있도록 돕습니다.

따라서, 파이썬과 선형대수, 그리고 기본적인 머신러닝 지식을 가지고 있는 독자라면 
이 책을 통해 JAX와 Flax의 강력한 기능을 효과적으로 학습할 수 있습니다. 

각 단계를 차근차근 밟아가며 자신만의 실습을 추가한다면 
훨씬 더 풍부한 학습 경험을 얻을 수 있을 것입니다.

<JAX/Flax로 딥러닝 레벨업>은
대규모 모델 학습에 관심 있는 개발자들에게 강력히 추천할 만한 실용적인 안내서입니다. 
JAX의 확장성과 Flax의 유연성에 대한 이해를 통해 딥러닝 개발에 도움을 줄 것입니다.


#JAX/Flax로딥러닝레벨업 #JAX/Flax로_딥러닝_레벨업 #Jpub #제이펍 #JAX #Flax #딥러닝 #이영빈 #유현아 #김한빈 #조영빈 #이태호 #장진우 #이승현 #김형섭 #박정현

JAX/Flax로 딥러닝 레벨업

JAX/Flax로 딥러닝 레벨업
글쓴이
<이영빈>,<유현아>,<김한빈>,<조영빈>,<이태호>,<장진우>,<이승현>,<김형섭>,<박정현> 공저 저
출판사
제이펍




n*********a 2024.10.02. 신고 공감 0 댓글 0
리뷰 총점 종이책
[리뷰] JAX/Flax로 딥러닝 레벨업
"[리뷰] JAX/Flax로 딥러닝 레벨업" 내용보기
이번에 리뷰하게 된 도서는 구글에서 개발한 고성능 딥러닝 라이브러리인 JAX/Flax 프레임워크에 대한 내용을 다루고 있는 도서이다. 이 도서를 접하기 전까지 JAX에 대해서는 이름만 들어본 수준이었지, 구체적으로 어떤 기능을 가지고 있는지 전혀 알지 못했었기에 본 도서를 통해 JAX와 Flax라는 것에 대해 어떤 것인지 개념을 이해할 수 있는 좋은 기회가 되었던 것 같다. JAX는 구글
"[리뷰] JAX/Flax로 딥러닝 레벨업" 내용보기
이번에 리뷰하게 된 도서는 구글에서 개발한 고성능 딥러닝 라이브러리인 JAX/Flax 프레임워크에 대한 내용을 다루고 있는 도서이다. 이 도서를 접하기 전까지 JAX에 대해서는 이름만 들어본 수준이었지, 구체적으로 어떤 기능을 가지고 있는지 전혀 알지 못했었기에 본 도서를 통해 JAX와 Flax라는 것에 대해 어떤 것인지 개념을 이해할 수 있는 좋은 기회가 되었던 것 같다. 


JAX는 구글 딥마인드에서 사용하고 있는 고성능 수치계산을 지원하는 딥러닝 프레임워크이다. 뒤에서 또 언급하겠지만 JAX는 PyTorch나 TensorFlow와 다르게 함수형 프로그래밍 방식을 사용하기 때문에 이에 대한 이해가 좀 필요하다. 그리고, Flax는 구글 브레인 팀에서 JAX팀과 협업을 하면서 JAX를 조금 더 쉽게 사용할 수 있도록 하기 위해 만들어진 오픈소스로서, Flexibility+JAX의 의미로 만들어진 합성어이다. 그래서 요새 JAX 기반으로 딥러닝 모델을 만들 때에는 대부분 Flax를 함께 사용한다고 한다아래는 OpenAI에서 음성인식 및 음성 번역을 위해 PyTorch로 만든 오픈소스인 Whisper(첫번째 컬럼)와 허깅 페이스 연구원이 이를 JAX로 변환해서 만든 모델인 Whisper-JAX와의 성능 비교표이다. A100 GPU(난 아직 써본 적이 없는 1500만원 짜리 GPU..ㅠ) 환경에서 음성 데이터의 길이별 추론 성능이 거의 1/10 수준으로 Whispter-JAX의 처리 속도가 빠른 것을 확인할 수 있다. JAX의 성능이 PyTorch보다 상대적으로 빠르다는 걸 단적으로 보여주는 표라고 할 수 있겠다. 


아래 표를 보면, 더 나아가서 Whisper-JAX를 Google의 TPU(Tensor Processing Unit) 환경에서 돌리면, A100 GPU에서 돌릴 때보다도 4분의 1 정도의 시간 밖에 안걸리는 걸 확인할 수 있다.ㅋ 구글의 AI 연구원들은 사내에서 연구하고 테스트하기 참 좋을 것 같다는 생각이 든다. (부럽) 물론, 일반 사용자들도 구글 Colab을 통해 TPU를 사용할 수는 있지만, 이용 시간과 사용량 등에 제한이 있어 원활하게 사용하기는 어렵다. 다만, 이 책 마지막 장에도 언급하고 있지만, TRC(TPU Research Cloud) 프로그램 신청을 통해 TPU를 특정 크레딧 만큼 안정적으로 사용할 수는 있다. (홍익인간의 정신을 몸소 실천해 주고 계시는, 관대하신 구글님께 경의를.. ^^ Colab도 감사히 잘 쓰고 있습니다. 굽신굽신~ㅎㅎ)


벤치마크 출처 : https://github.com/sanchit-gandhi/whisper-jax



이 책은 총 5개의 장으로 구성되어 있다. 1장에서는 JAX/Flax에 대한 소개와 JAX 사용에 필요한 함수형 프로그래밍에 대한 설명, 그리고 JAX/Flax 설치 방법에 대한 내용을 담고 있다. 특히, 함수형 프로그래밍에 대한 개념 설명은 나처럼 일반적인 절차적 프로그래밍 방식에 익숙한 개발자들에게 꼭 필요한 부분이라는 생각이 든다. JAX에서 요구되는 함수형 프로그래밍에서 가장 중요한 핵심은, 함수가 외부에 영향을 미치거나 상호작용을 수행하지 않는 순수 함수(pure function) 형태로 구현되어야 한다는 것이며, 순수 함수로 만들어야만 병렬처리나 분산처리 시 독립적인 활용과 코드 재사용이 가능하게 된다. (그렇기 때문에 JAX가 PyTorch나 TensorFlow에 비해 수행 속도가 빠른 것이다.)


2장부터가 본격적인 JAX를 활용한 개발에 대한 내용인데, JAX의 강력한 기능 중 하나인 자동 미분 기능에 대한 소개부터 손실 함수의 기울기, JAX의 함수형 언어적 특징에 대한 설명, JAX를 활용한 선형회귀 수행 등을 Colab 기반 실습 예제와 함께 담고 있다. 이 부분은 사전에 딥러닝에 대한 지식을 대략적으로 알고 있어야 원활한 학습이 가능할 듯 하고, 아니라면 구글링을 좀 하면서 책을 보면 좋을 것 같다.


JAX 활용 기본 예제 코드



특히, JIT(Just-In-Time) 컴파일을 통해 더 빠른 연산을 지원하는 JAX의 특징에 대한 소개를 하면서, JAX가 성능 향상을 위해 어떤 기술을 품고 있는지 이해할 수 있도록 해준다. JIT 컴파일이란 보통 소스코드를 실행하는 시점에 기계어로 변환하는 컴파일 기법을 이야기하며, 컴파일한 후 그 기계어 코드를 캐싱하여 같은 함수가 여러 번 호출될 때는 캐시된 코드를 활용하는 방식으로 기계어 코드 변환 과정을 줄이게 되어 성능 향상을 꾀할 수 있게 된다. JAX의 JIT 컴파일링 과정은 "jax.jit(함수명)"을 통해 특정 함수로의 변환이 이루어지게 되며, 이러한 과정을 통해 동시에 여러 연산을 실행하거나 병렬로 코드를 실행하는 등의 최적화를 가능하게 한다.


이 외에도 2장에서는 자동 벡터화, 자동 미분, pmap을 통한 병렬처리와 같은 JAX의 성능 최적화 방식에 대해 설명하고 있다. 2장은 한 마디로 JAX가 성능 측면에서 왜 우위를 가질 수 밖에 없는지에 대한 여러 가지 원리를 이해할 수 있는 chapter라 할 수 있겠다.

3장은 Flax에 대한 설명을 담은 chapter이다. 앞서도 소개했듯이 Flax는 JAX를 사용하는 딥러닝 연구자들을 위해 개발된 고성능 신경망 라이브러리이자 에코 시스템이다. 최초 구글 리서치 브레인 팀에서 JAX팀과 협력하며 개발하였고 현재는 오픈소스 커뮤니티와 공동으로 개발하고 있다. TensorFlow 딥러닝 프레임워크의 쉽고 간결한 사용을 위해 Keras API가 나온 것처럼, JAX 프레임워크의 사용을 돕기 위해 나온 것이 Flax라고 보면 된다. 


3장에서는 이러한 Flax 라이브러리를 통해 간단한 합성곱 신경망(CNN)을 구축하고, MNIST 데이터셋(손글씨로 쓴 된 숫자 이미지 데이터)에 대해 이미지 분류 태스크를 학습시키는 실습 튜토리얼을 소개하고 있고, 이를 통해 Flax의 사용을 연습해 볼 수 있다.

2~3장에서 JAX/Flax의 기본적인 사용법을 다루었다면, 4장에서는 이러한 기초 지식을 바탕으로 JAX/Flax 라이브러리를 통해 딥러닝 모델 구축과 미세조정(파인튜닝) 과정을 수행하는 내용에 대해 다루고 있다. JAX/Flax에 대한 가장 종합적인 활용 부분을 담고 있는 본 도서의 핵심 chapter라고 할 수 있겠다.


4장에 다루는 내용을 구체적으로 나열하자면, 순수 JAX만을 활용하여 CNN 모델을 구축하는 부분과 ResNet(Residual Network), 생성형 AI 분야에서 많이 활용되고 있는 DCGAN(합성곱 레이어로 구성된 Deep Convolutional GAN), 그리고 OpenAI에서 개발한, 대규모 이미지-텍스트 쌍으로 비지도 학습된 멀티모달 신경망인 CLIP(Contrastive Language-Image Pretraining), Flax와 TPU를 활용하여 허깅 페이스의 Transformers 라이브러리에 있는 DistilGPT2 모델을 미세조정 학습하는 과정 등이 4장에서 다루고 있는 내용이다. 분량에 비해 다소 많은 내용을 담고 있으며, 완벽한 이해를 위해서는 이 분야에 대한 지식이 좀 필요하지만, 예제 위주로 설명되어 있어 실제 실습을 따라가면서 JAX/Flax를 활용하여 문제해결 전략을 구현하는 부분에 대해서는 대략적으로 이해하고 학습할 수 있기 때문에, 너무 겁먹을 필요는 없을 듯.. (우리에게는 구글신이 있다.^^) 본 chapter를 통해 각자가 수행하고 있는 딥러닝 연구 프로젝트에 JAX/Flax를 적용하는 능력을 키울 수 있을 것 같다.


마지막 5장은 딥러닝 프로젝트 실습 시 학습 속도를 올리기 위해 구글 클라우드의 TPU 환경을 활용하는 방법을 간략히 소개하고 있다. 이 chapter는 약간 부록같은 개념으로서, 앞에서도 언급한 바와 같이 본격적인 딥러닝 연구를 위해 TPU가 필요하다면, 누구나 이 TRC 프로그램을 통해 TPU 환경 확보를 시도해 보는 것도 좋은 방법인 것 같다. 본 도서의 전체 과정에 대한 실습 전에 5장을 먼저 읽어보고 TPU 환경을 확보하고 난 후 본 도서를 통한 학습을 진행하는 것도 괜찮을 것 같다.


TRC 프로그램 신청 사이트 (https://sites.research.google/trc/about/)



결론적으로, 본 도서는 다음과 같은 사람들이 읽으면 좋을 것 같다.

  • Python 개발에 익숙하며, 머신러닝/딥러닝을 학습하거나 연구하는 분

  • JAX/Flax에 대해 공부하고자 하는 분

  • 머신러닝/딥러닝을 통한 학습/추론 성능을 좀 더 개선하고자 하는 분

  • 고성능 GPU/TPU 활용에 관심이 있으신 분


최근 AI 관련 학문이 큰 각광을 받으면서 단순히 관련 서비스를 활용하는 이용자의 수준을 넘어서, AI 기술 자체에 대한 연구에 뛰어드는 분들도 예전에 비해 많아지고 있는 것 같고, 그로 인해 SW개발자라면 자연스레 머신러닝과 딥러닝에 대한 어느 정도 상식 수준 또는 그 이상의 학습과 활용 경험이 필수가 되어 가고 있다는 생각이 든다. 그와 더불어 이러한 딥러닝 연구를 진행할 때의 생산성 향상을 위해서 JAX/Flax 프레임워크에 대해서도 점점 관심도가 높아질 것이라 생각되며, 본 도서는 그러한 JAX/Flax를 처음 접하고 활용하는데 있어 분명 좋은 길잡이가 될 것이다. (JAX/Flax 관련 국내 도서는 아직까지 본 도서가 유일한 것으로 알고 있음)


현재 담당하고 있는 업무가 딥러닝이나 머신러닝과 직접적으로 관련된 업무는 아니어서(물론 이상탐지 부분에 있어서 좀 관련은 있지만..) 나 같은 경우는 JAX/Flax를 당장 활용할 일은 없을 것 같다. 그렇지만, 최근 SW개발자에 대한 AI 역량 강화 기조에 따라 나 또한 조만간 AI 관련 과제를 수행할 가능성이 있어 그 때 본 도서를 다시 뒤적거리며 JAX/Flax를 활용할 일이 곧 생길 수도 있을 것 같다.

c****m 2024.09.22. 신고 공감 0 댓글 0
리뷰 총점 종이책
JAX 한국어 참고서
"JAX 한국어 참고서" 내용보기
[책리뷰] JAX/Flax로 딥러닝 레벨업전반적인 소감 및 마음에 드는 부분흔히들 딥러닝 프레임워크 하면 Tensorflow나 PyTorch를 떠올린다. 인공지능 개발 경쟁이 한창인 요즘 JAX는 구글 딥마인드에서 개발, 유지관리하고 사용하는 또 다른 딥러닝 프레임워크다. 텐서플로우나 파이토치를 알려주는 책은 많지만 JAX 를 알려주는 책이 24년 9월 기준 이 책이 유일하다. 이 책에서도 쓸데없
"JAX 한국어 참고서" 내용보기

[책리뷰] JAX/Flax로 딥러닝 레벨업


전반적인 소감 및 마음에 드는 부분

흔히들 딥러닝 프레임워크 하면 Tensorflow나 PyTorch를 떠올린다. 인공지능 개발 경쟁이 한창인 요즘 JAX는 구글 딥마인드에서 개발, 유지관리하고 사용하는 또 다른 딥러닝 프레임워크다. 텐서플로우나 파이토치를 알려주는 책은 많지만 JAX 를 알려주는 책이 24년 9월 기준 이 책이 유일하다. 이 책에서도 쓸데없는 파이썬 기초 프로그래밍을 알려주는 페이지 없이 JAX/Flax 에 대해서만 다룬다. 책의 머릿말에도 나오듯이 JAX/Flax LAB은 '모두의 연구소'에서 활동하는 AI 리서처와 현업자로 구성되어 있는데, 해당 구성원들이 집필한 책이다. 아무리 공식 문서를 보고 공부하는 게 좋다고 하더라도 이렇게 번역하고 한국어로 책이 나온 점은 대단히 감사하다.

 

대상 독자 및 책 난이도

JAX에 관심 있는 모든 개발자와 학생들을 대상으로 한다. 특히 파이썬을 통한 고성능 계산과 머신러닝에 익숙하거나 관심이 있는 분들도 대상 독자다. 이 책을 보기 위해 적어도 파이썬 프로그래밍 기초 지식이 있어야 하며, 선형대수 기본 개념과 머신러닝/딥러닝 기초 이론이 필요하다. 여기에 함수형 프로그래밍이 대략 어떤건지 간단하게나마 알고 있으면 더욱 좋다. 개인적으로는 텐서플로우와 파이토치로 딥러닝을 공부해본 개발자를 대상으로 한 느낌이다.


텐서플로우나 파이토치로 딥러닝 공부를 해본 경험이 있다면 무리없이 따라할 수 있다. 파이썬 라이브러리 import 할 때, JAX로 대체하는 것이 대부분이라고 보면 될 것이다. 그러나 처음부터 JAX로 시작한다고 하면 어려울 수 있다.


다루는 내용과 범위

JAX/Flax 프레임워크에 대해서만 다룬다. 책의 목차는 다음과 같다.

  1. JAX/Flax 공부하기 전에
    1. JAX/Flax 소개와 예시
  2. JAX 특징
    1. Numpy에서부터 JAX 시작하기
    2. JAX의 JIT 컴파일
    3. 자동 벡터화/자동 미분
    4. JAX의 난수
    5. pytree 사용하기
    6. JAX에서의 병렬처리
    7. 상태를 유지하는 연산
  3. Flax 소개
    1. Flax CNN 튜토리얼
    2. 심화 튜토리얼
  4. JAX/Flax 활용한 딥러닝 모델 만들기
    1. 순수 JAX로 구현한 CNN
    2. ResNet
    3. DCGAN
    4. CLIP
    5. DistilGPT2 미세조정 학습
  5. TPU 환경 설정


결론

딥러닝 모델 학습에 막대한 리소스가 필요한 대규모 모델 연구에 깊이 관여 중이라면 JAX 를 고려해볼만 하다. 따라서 대규모 모델 연구 즉, LLM 같은 걸 연구하는 사람들에게 추천한다. 지난 약 1년 동안 나온 논문과 릴리스를 살펴보면 구글에서 많은 연구가 JAX로 옮겨갔다는 사실을 알 수 있다고 한다. 모든 것을 충족시키는 만능 프레임워크는 없다. 어떤 문제를 해결할 것인가, 배포할 모델의 크기, 플랫폼 등등에 따라 달라진다. 조그마한 모델을 학습시키기 위해 JAX를 고려할 필요는 없다는 의미이다. 그러나 대규모 연산의 확장성을 염두에 둔다면 JAX도 고려해볼만 하다. 

a***y 2024.09.21. 신고 공감 0 댓글 0
리뷰 총점 종이책
JAX/Flax로 딥러닝 레벨업
"JAX/Flax로 딥러닝 레벨업" 내용보기
목차JAX/Flax를 공부하기 전에JAX/Flax에 대한 소개와 예시함수형 프로그래밍에 대한 이해JAX/Flax에서 자주 사용하는 파이썬 표준 라이브러리JAX/Flax 설치 방법JAX의 특징NumPy에서부터 JAX 시작하기JAX의 JIT 컴파일자동 벡터화자동 미분JAX의 난수pytree 사용하기JAX에서의 병렬처리상태를 유지하는 연산Flax 소개Flax CNN 튜토리얼심화 튜토리얼JAX/Flax를 활용한 딥러닝 모델 만들
"JAX/Flax로 딥러닝 레벨업" 내용보기
  • 목차
    1. JAX/Flax를 공부하기 전에
      • JAX/Flax에 대한 소개와 예시
      • 함수형 프로그래밍에 대한 이해
      • JAX/Flax에서 자주 사용하는 파이썬 표준 라이브러리
      • JAX/Flax 설치 방법
    2. JAX의 특징
      • NumPy에서부터 JAX 시작하기
      • JAX의 JIT 컴파일
      • 자동 벡터화
      • 자동 미분
      • JAX의 난수
      • pytree 사용하기
      • JAX에서의 병렬처리
      • 상태를 유지하는 연산
    3. Flax 소개
      • Flax CNN 튜토리얼
      • 심화 튜토리얼
    4. JAX/Flax를 활용한 딥러닝 모델 만들기
      • 순수 JAX로 구현하는 CNN
      • ResNet
      • DCGAN
      • CLIP
      • DistilGPT2 미세조정 학습
    5. TPU 환경 설정
      • 코랩에서 TPU 설정하기
      • 캐글에서 TPU 세팅하기
      • TRC 프로그램 신청하기
  • 총평
    • 모든 코드를 github에 공개하여 실습해볼 수 있음(notebook으로 공개되어서 바로 colab에서 실행해 볼 수 있음)
    • 매우 전문적인 서적으로 실제 프레임워크를 사용하여 ML/DL 프로젝트를 진행하는 사람들에게 빠르게 입문하는 것에 도움을 주는 책
    • ML/DL에 전문지식이 없는 사람에게는 내용의 벽이 너무 높음
    • JAX, Flax에 대한 소개(1~3장), 프레임워크를 이용한 실제 모델 훈련(4장)으로 구성되어 있어 기본적인 내용을 배우고 난 후, 간단한 프로젝트에 실제 적용을 해 보는 형태로 구성되어 있음
    • 4장의 튜토리얼의 경우, 각 노트북별로 사전에 설치하거나, 로드해야할 dataset 등이 해당 부분에서 설명하는 코드를 실행하기 전에 잘 나열되어 있어서 작은 chapter 별로 구분되어 있는 노트북을 실행하기만 하면 결과를 볼 수 있음
    • 책의 코드를 일일히 타이프하고 결과를 보기까지 수많은 에러에 직면하던 과거와는 달리, 너무나 에러없이 결과를 재현하면서 확인할 수 있어 만족스러웠음


  • Chapter 1 : JAX, Flax의 정의와 기초
    • Jax 는 구글 딥마인드에서 사용하고 있는 고성능 딥러닝 프레임워크(파이토치, 텐서플로 같은 프레임워크임)
    • JAX의 장점은 GPU, TPU에서 Numpy프로그램을 컴파일하고 실행할 수 있게 해주며, XLA로 컴파일이 가능해서 파이토치의 그래프 방식보다 빠른 속도로 학습과 추론이 가능함
    • Flax는 JAX에 좀더 엔지니어가 편하게 사용할 수 있게 만든 프레임워크
    • JAX/Flax 설치 방법
      • 현재 리눅스와 macOS에만 설치 가능함
      • 구글 코랩에서도 사용 가능함
        • 단, 책의 예시는 에러가 발생(jax 버전 관련 오류로 보임)
        • 아래와 같이 고쳐야 성공(단, 런타임 유형을 TPU v2-8로 선택해야함)

  • chapter 2 : JAX의 특징
    • 고성능 수치계산과 머신러닝에서 중요한 JAX의 특징 : jax.numpy, JIT compile, 의사 난수 생성 등
    • 장점
      • Numpy같은 중요 라이브러리와 유사하게 처리 가능하여 학습이 쉬움
      • Gradient 함수같은 것도 jax.grad(함수명) 이렇게 쉽게 처리 가능함
      • JIT compile을 통해 빠른 연산 수행 가능
      • 자동벡터화를 통해 병렬연산이 가능
      • numpy보다 우수한 유사난수 기능, python의 container를 유사하게 처리하는 pytree 함수 지원
      • 병렬처리를 지원하여 간단한 함수 몇개로 병렬처리를 지원할 수 있음
      • 상태를 유지하는 함수형 연산을 이용하면서도 변수의 상태를 update할 필요가 있을 때도 update하는 변수를 JIT Compile 외부에 두어 원하는 upate를 수행 가능함
    • 단점(주의점)
      • JAX변환은 함수형 프로그래밍의 원칙을 따르기에 비순수함수를 사용할 수는 있지만, 사용자가 원하는 동자을 하지 않을 수 있음을 명확히 알고 수행해야 함



  • chapter 3 : Flax 소개
    • 텐서플로와 파이토치의 성공에는 각각의 프레임워크를 쉽고 간결하게 사용하기 위한 API의 역할이 컸으며, Flax도 JAX를 쉽고 간결하게 활용하도록 개발되었음
    • 특징
      • 안정성 : JAX에서 상태를 처리할 때보다 좀더 버그 발생이 완화됨
      • 제어기능 : 대부분의 신경망 프레임워크보다 좀더 세분화된 제어 기능과 표현력을 제공
      • 함수형API : JAX에서 사용되는 변환을 모듈에서 직접 재정의하여 사용할 수 있음
      • 코드 간결성 :
    • 튜토리얼 1
      • Flax의 Linen API를 사용하여 Convolution Neural Network를 구축하고 , MNIST 데이터셋에 대해서 이미지 분류 학습 진행
      • 필요패키지 설치 → 데이터 로드하기 → 모델정의와 초기화 → 메트릭 정의하기 → TrainState 초기화 →훈련스텝과 평가스텝 정의하기 → 모델 학습하기 → 모델 추론하기 순서로 함수를 작성하고 실행해 볼 수 있음
      • Colab에 notebook을 열고 차례차례 실행해 보면서 결과를 확인하였음
      • 실행결과 (직접 colab에서 돌려 봄). 글자 인식 정도의 문제는 쉽게 해결하고 있음
    • 튜토리얼 2
      • 배치 정규화 적용 : 데이터의 분포가 달라지며 학습성능이 떨어지는 것을 보완하고 정규화하여 문제해결하는 방법
      • 결과(실제 노트북을 돌려서 나온 결과, 도서의 결과와는 일부 다름)
    • Drop Out 적용, 학습률 스케줄링, 체크포인트 예제도 모두 colab에서 잘 실행되며 결과도 일치함




  • Chapter 4 : JAX, Flax를 활용한 딥러닝 모델 만들기
    • JAX/Flax를 이용해서 CNN, ResNet, DCGAN, CLIP 모델을 구현하고 최적화하는 실습 진행
    • 숫자인식 : CNN(JAX로만 구현), ResNet
      • CNN
        • 패키지로드 → MNIST 데이터셋 로드 → 레이어구현 → 네트워크정의 → 훈련단계 → 평가단계 → 훈련 및 평가 → 모델추론하기 순서로 구현
        • 레이어 구현 : 완전연결레이어, 합성곱레이어, 활성화 함수, 폴링레이어, 평탄화, 직렬화 구현
      • ResNet
        • 필요한 패키리 로드 → MNIST 데이터셋 로드 → ResNet 모델 정의 → 메트릭 정의 → TrainState 초기화 → 학습방법 정의 → 학습 순서로 구현
      • 학습결과 : CNN, ResNet 모두 이미지 식별을 탁월하게 수행함
    • DCGAN
      • GAN(Generative Adversarial Network, 생성적 적대 신경망)의 일종인 DCGAN(Deep Convolution GAN)을 MNIST 데이터셋을 이용하여 이미지 생성
      • 필요한 패키지 로드 → MNIST 데이터셋 로드 → 생성자와 판별자 모델을 정의하고 초기화 → 학습방법 정의 → TrainState 초기화 → 학습 순서로 구현
      • 학습에 33분 54초가 소요됨(colab)
      • 최종 이미지 생성결과(실제 수행결과) : 알아보기 명확한 숫자도 있지만 여러이미지가 숫자인지 그림인지 확인하기 어려운 것도 상당수 임 → z_dim, epoch를 늘려보는 것을 권고함
    • CLIP(Contrastive Language-image Pre-training)
      • OpenAI에서 개발한 대규모 이미지-텍스트 쌍으로 학습된 멀티모달 신경망
      • 비지도 학습을 이용하며, 이미지-텍스트간 유사성을 최대화하고, 서로 다른 이미지-텍스트 쌍 간의 유사성을 최소화하가 위한 대조손실(contrastive loss) 사용
      • 학습결과 : 54분 걸려서 학습 완료
f******s 2024.10.08. 신고 공감 0 댓글 0