구글 JAX
Google JAX![]() Google JAX 로고 | |
![]() | |
개발자 | 구글 |
---|---|
프리뷰 릴리즈 | v0.3.13 / 2022년 5월 ; 전( |
저장소 | github |
기입처 | Python, C++ |
운영 체제 | Linux, macOS, Windows |
플랫폼 | Python, NumPy |
크기 | 9.0 MB |
유형 | 기계 학습 |
면허증. | 아파치 2.0 |
웹 사이트 | jax![]() |
Google JAX는 수치 [1][2][3]함수를 변환하기 위한 기계 학습 프레임워크입니다.이것은 수정된 버전의 autograd(함수의 미분을 통해 그라데이션 함수의 자동 취득)와 TensorFlow의 XLA(가속 선형 대수)를 결합하는 것으로 설명된다.NumPy의 구조와 워크플로우를 최대한 가깝게 따르도록 설계되었으며 TensorFlow 및 PyTorch와 [4][5]같은 다양한 기존 프레임워크와 연동됩니다.JAX의 주요 기능은 다음과 같습니다.[1]
- 그라데이션: 자동 미분
- jit: 컴파일
- vmap: 자동 평가
- pmap: SPMD 프로그래밍
눈금을 매기다
아래 코드는 그라데이션 함수의 자동 미분을 보여줍니다.
Import 수 부터 잭스 수입품 눈금을 매기다 수입품 jax.numpy ~하듯이 jnp # 로지스틱 함수의 정의 방어하다 로지스틱(x): 돌아가다 jnp.exp(x) / (jnp.exp(x) + 1) # 로지스틱 함수의 그라데이션 함수를 구합니다. grad_module = 눈금을 매기다(로지스틱) # x = 1에서 로지스틱 함수의 기울기를 평가합니다. grad_log_out = grad_module(1.0) 인쇄물(grad_log_out)
마지막 행이 출력됩니다.
0.19661194
점토
아래 코드는 퓨전을 통한 jit 기능의 최적화를 보여줍니다.
Import 수 부터 잭스 수입품 점토 수입품 jax.numpy ~하듯이 jnp # 큐브 함수를 정의합니다. 방어하다 입방체(x): 돌아가다 x * x * x 데이터 생성 수 x = jnp.하나((10000, 10000)) # 큐브 함수의 jit 버전을 만듭니다. 큐브 = 점토(입방체) # 큐브와 jit_cube 함수를 동일한 데이터에 적용하여 속도를 비교합니다. 입방체(x) 큐브(x)
jit_cube(17행)의 계산 시간은 큐브(16행)의 계산 시간보다 현저하게 짧아야 합니다.7번 줄의 값을 늘리면 차이가 커집니다.
vmap
아래 코드는 vmap 함수의 벡터화를 보여줍니다.
Import 수 부터 기능하다 수입품 부분적인 부터 잭스 수입품 vmap 수입품 jax.numpy ~하듯이 jnp # 함수를 정의합니다. 방어하다 그레이드(자신, 입력): in_grad_filename(실행) = 부분적인(자신._net_grades, 자신._net_패럴) grad_vmap = 잭스.vmap(in_grad_filename(실행)) 리치_그레이드 = grad_vmap(입력) 평점 = np.배열(자신._filen_displays_displays(비활성화)(리치_그레이드)) 주장하다 평점.하지 않다 == 2 그리고. 평점.모양.[0] == 입력.모양.[0] 돌아가다 평점
이 섹션의 오른쪽에 있는 GIF는 벡터화된 덧셈의 개념을 보여줍니다.
pmap
아래 코드는 행렬 곱셈을 위한 pmap 함수의 병렬화를 보여줍니다.
# JAX에서 pmap 및 랜덤 Import, JAX NumPy Import 부터 잭스 수입품 pmap, 랜덤 수입품 jax.numpy ~하듯이 jnp # 5000 x 6000 치수의 랜덤 매트릭스 2개 생성 (디바이스당 1개씩) 랜덤 키 = 랜덤.분열되다(랜덤.동작하고 있다(0), 2) 매트릭스 = pmap(람다 열쇠: 랜덤.보통의(열쇠, (5000, 6000)))(랜덤 키) # 데이터 전송 없이 병렬로 각 CPU/GPU에서 로컬 매트릭스 곱셈 실행 출력 = pmap(람다 x: jnp.점(x, x.T))(매트릭스) # 데이터 전송 없이 병렬로 각 CPU/GPU의 두 매트릭스에 대한 평균을 개별적으로 구합니다. 수단 = pmap(jnp.의미하다)(출력) 인쇄물(수단)
마지막 행에는 값이 인쇄됩니다.
[1.1566595 1.1805978]
Jax를 사용하는 라이브러리
다음과 같은 여러 파이썬 라이브러리는 Jax를 백엔드로 사용합니다.
- 구글 [6]브레인에서 개발한 고급 뉴럴 네트워크 라이브러리인 아마.
- Haiku는 Deep [7]Mind가 개발한 뉴럴 네트워크용 객체 지향 라이브러리입니다.
- Equinox는 파라미터화된 함수(신경망 포함)를 PyTree로 표현한다는 아이디어를 중심으로 전개되는 라이브러리입니다.패트릭 [8]키저에 의해 만들어졌습니다.
- Optax는 DeepMind가 [9]개발한 그라데이션 처리 및 최적화를 위한 라이브러리입니다.
- RLax는 [10]DeepMind가 개발한 강화 학습 에이전트 개발을 위한 라이브러리입니다.
「 」를 참조해 주세요.
외부 링크
- 매뉴얼 jax.readtedocs.이오
- Colab ( Jupyter / iPython )퀵 스타트 가이드 colab.research.google.com/github/google/jax/blob/main/docs/notebooks/quickstart.ipynb
- TensorFlow의 XLA www.tensorflow.org/xla (가속 선형 대수)
- JAX 소개: YouTube에서의 머신러닝 연구 가속화
- 오리지널 페이퍼 © 。
레퍼런스
- ^ a b Bradbury, James; Frostig, Roy; Hawkins, Peter; Johnson, Matthew James; Leary, Chris; MacLaurin, Dougal; Necula, George; Paszke, Adam; Vanderplas, Jake; Wanderman-Milne, Skye; Zhang, Qiao (2022-06-18), "JAX: Autograd and XLA", Astrophysics Source Code Library, Google, Bibcode:2021ascl.soft11002B, archived from the original on 2022-06-18, retrieved 2022-06-18
- ^ Frostig, Roy; Johnson, Matthew James; Leary, Chris (2018-02-02). "Compiling machine learning programs via high-level tracing" (PDF). MLsys: 1–3. Archived (PDF) from the original on 2022-06-21.
{{cite journal}}
: CS1 유지보수: 날짜 및 연도(링크) - ^ "Using JAX to accelerate our research". www.deepmind.com. Archived from the original on 2022-06-18. Retrieved 2022-06-18.
- ^ Lynley, Matthew. "Google is quietly replacing the backbone of its AI product strategy after its last big push for dominance got overshadowed by Meta". Business Insider. Archived from the original on 2022-06-21. Retrieved 2022-06-21.
- ^ "Why is Google's JAX so popular?". Analytics India Magazine. 2022-04-25. Archived from the original on 2022-06-18. Retrieved 2022-06-18.
- ^ Flax: A neural network library and ecosystem for JAX designed for flexibility, Google, 2022-07-29, retrieved 2022-07-29
- ^ Haiku: Sonnet for JAX, DeepMind, 2022-07-29, retrieved 2022-07-29
- ^ Kidger, Patrick (2022-07-29), Equinox, retrieved 2022-07-29
- ^ Optax, DeepMind, 2022-07-28, retrieved 2022-07-29
- ^ RLax, DeepMind, 2022-07-29, retrieved 2022-07-29