JAX에 연결

새로운 기계 학습 프레임 워크 시도

2018 년 11 월 Google의 GitHub : JAX 에 새로운 라이브러리가 등장했습니다 . 2020 년에는 인기가 급증했고 Google 직원들이 TensorFlow v2보다 선호한다는 소문이 돌았습니다. JAX로 작성된 함수는 어색한 도우미 라이브러리없이 기기 메모리에서 데이터를 이동하지 않고 다중 GPU 또는 TPU 시스템에서 실행됩니다.

일반적으로 AutoKeras 및 Transformers를 사용하여 신경망 문제를 해결하는 개발자로서 JAX에 대해 신중하게 낙관합니다. 그 자체로는 너무 낮고 NumPy에 더 가깝습니다. 신경망 지원을 추가하는 프레임 워크 중 하나를 사용해 보면 커뮤니티가 성장하고 있지만 PyTorch 및 TensorFlow만큼 많은 예제 나 StackOverflow 스레드가 없습니다.

JAX의 미래를 믿는 사람들에게이 격차는 다음 큰 것을 구축 할 수있는 기회입니다!
이 프로젝트를 위해 나는 Elegy에 대한 명예로운 언급과 함께 Flax / Linen , HaikuObjax의 세 가지 JAX 프레임 워크를 사용하여 Kaggle의 꽃 분류 문제를 해결하려고했습니다 . 처음 세 개는 모두 Google (또는 자회사 DeepMind)에서 관리합니다.

아마 (및 리넨)

Flax 는 유연성을 위해 설계된 JAX 용 고성능 신경망 라이브러리입니다.

나는 Flax가 공개 된 최초의 JAX 프레임 워크라고 믿습니다. 내 프로젝트에 대해 트윗하기 시작한 후 개발자가 Linen이라는 베타 API로 전환 할 것을 권장했습니다. 나는 그들의 Imagenet 예를했고 몇 가지 사소한 변경했다 CoLab에서 실행하는Imagenette의 데이터 집합을. Imagenet 데이터 세트는 CoLab에 비해 너무 크고 클래스 (1,000 개)가 많으므로 10 개 클래스 Imagenette 및 해당 스핀 오프 프로젝트 (Imagewoof)를 사용하기가 더 쉽습니다.

Flax / Linen의 템플릿 네트워크

그런 다음 Kaggle에서 제공하는 TFRecord 형식으로 꽃 챌린지를로드하기 위해 몇 가지를 더 변경할 수 있습니다 .
JAX가 TensorFlow의 대안이라면 왜 여전히 TensorFlow를 가져오고 TFRecord / tf.data.Dataset 형식으로 데이터를로드하고 있는지 궁금 할 것입니다.

  • 이 준 표준 형식으로 많은 데이터 세트 / 벤치 마크를 사용할 수 있습니다 (몇 가지 성가신 차이점이 있지만 무엇을 할 수 있습니까?)
  • 데이터 세트는 일괄 처리로 나누어 관리 할 수 ​​있으므로 한 번에 전체 데이터 세트를 RAM에로드하려고하지 않습니다.
  • 이미지 데이터 세트에는 훈련 데이터를 늘리고 모델을 더 유연하게 만들기위한 자르기, 미러링, 색상 지정, 마스킹 등의 도구가 있습니다.

하이쿠

Haiku 는 JAX의 순수 함수 변환에 대한 전체 액세스를 허용하면서 익숙한 객체 지향 프로그래밍 모델을 사용할 수있게 해주는 JAX 용 간단한 신경망 라이브러리입니다.

Haiku의 ImageNet 예제는 ResNet101을 표준 빌딩 블록 중 하나로 포함하는 방법을 보여줍니다. Imagenette꽃 분류 데이터 세트에 대한 예제 성공적으로 적용했습니다 .
Haiku (또는 적어도이 예제가 구성된 방식)의 특히 이상한 차이점 중 하나는 별도의 데이터 세트를 전달하거나 % 분할을 설정하는 대신 학습, 테스트 및 검증 예제의 수를 설정해야한다는 것입니다.

검증 세트는 평가 배치 크기의 배수 여야했고 Imagenette v0.1.0에는 500 개의 테스트 이미지 만 있으므로 학습 단계에서 동일한 코드를 성공적으로 사용한 후에도 평가 단계에서 오류가 계속 발생했습니다.

이것은 오류에 대한 또 다른 문제를 제기합니다! JAX / NVIDIA 강연 은 JAX의 JIT 컴파일러가 좋은 코드를 받아 들여야하며 엉망이 될 때 조용히 실패하거나 이상하게 행동하지 않아야한다고 설명합니다. 이러한 프레임 워크에 대한 내 짧은 경험에서 이것은 ' 왼쪽이 오른쪽과 일치하지 않음 '또는 ' pmap got arg of rank _' 라는 긴 오류 스택을 의미 했습니다 . 성숙한 프레임 워크가 말했을 수있는 잘못된 수의 클래스 또는 예상 크기 : [devices, batch_size, height, width, colors] 혼동 / 두려움을 방지합니다.

Objax

Objax 는 단순성과 이해성에 중점을 둔 연구원을 위해 연구원 이 설계 했습니다 .

Objax는 새로운 프레임 워크이며 제가 시도한 첫 번째 프레임 워크입니다. 저는 그들의 Imagenet 예제를 읽고 Imagenette에서 연습하지 않고도 꽃 챌린지에 직접 이식 할 수 있었습니다.
CHW에서 HWC [height, width, color_channels] 순서로 이미지를 전치해야하는 혼란스러운 단계가 있었고 StackOverflow는 TensorFlow를 포함 시켰습니다. JAX가 약속 한 성능을 잃지 않고 표준 TensorFlow, NumPy 또는 기타 작업을 내 코드로 가져올 수있는 위치가 확실하지 않습니다. 당분간 코드가 실행되어 기쁩니다.

비가

Elegy 는 Keras와 Haiku에서 영감을 얻은 Jax를 기반으로하는 신경망 프레임 워크입니다.

이것은 팩의 최신이며 poets-ai 의 창조물입니다 . 예제를 살펴본 결과 MNIST 만 발견되었으므로 프로젝트에서 시작할 수있는 항목이 적었습니다. 프레임 워크에는 작업을 처리 할 수있는 Conv2D, Conv3D 및 ConvND 클래스가 있지만 지금까지 시도한 결과 더 적거나 더 많은 차원이 필요하다는 오류가 발생했습니다. 게시 한 후 문제가 무엇인지 알게 될 것입니다.

신경망, seq2seq, 확률 적 프로그래밍 등에서 JAX를 사용하는 더 많은 라이브러리의 경우 : https://news.ycombinator.com/item?id=22814870

Suggested posts

기계 학습 워크 플로를 실행하여 데이터를 변환하고 txtai로 AI 기반 텍스트 인덱스를 구축합니다.

데이터 흐름에 NLP 변환 적용

기계 학습 워크 플로를 실행하여 데이터를 변환하고 txtai로 AI 기반 텍스트 인덱스를 구축합니다.

txtai는 기계 학습 워크 플로우를 실행하여 데이터를 변환하고 AI 기반 텍스트 인덱스를 구축하여 유사성 검색을 수행합니다. txtai는 텍스트 스 니펫, 문서, 오디오 및 이미지 인덱싱을 지원합니다.

로지스틱 회귀

또는 범주 형 데이터 분류를위한 시그 모이 드 "squishification"함수를 좋아하는 방법을 배웠습니다.

로지스틱 회귀

이 기사는 내 회귀 시리즈의 짧은 연속입니다. 지금까지 제가 설명한 회귀 예제는 숫자, 숫자, 즉 연속 변수 예측입니다.

Related posts

Spotify의 마법 성분 : 기계 학습

Spotify의 마법 성분 : 기계 학습

면책 조항 :이 기사는 Spotify와 관련이 없으며 Spotify 및 현재 관련이 없을 수있는 과거 구조에 대한 확인되지 않은 정보로 구성 될 수 있습니다. 음악은 표현의 한 형태, 예술의 형태, 전체적인 문화 활동입니다.

2021 년 2 월에 읽을 4 가지 딥 러닝 논문

2021 년 2 월에 읽을 4 가지 딥 러닝 논문

신경 과학에서 자동 분화, 신경망 이론 및 신경 과정의 과소 적합에 이르기까지 현재 추구되고있는 다양한 딥 러닝 연구 흐름에 대한 더 나은 개요를 얻고 싶으십니까? 합리적으로 통과하기에는 열려있는 arXiv 탭이 너무 많습니까? 전체 동영상을 볼 시간이 너무 적습니까? 논문의 핵심 아이디어와 개념에 대한 간략한 요약 만 있다면. 그런 다음 '머신-러닝-콜라주'시리즈를 소개하게되어 기쁩니다.

내부의 관심 네트워크 그래프

수학에서 NumPy까지 단계별 가이드

내부의 관심 네트워크 그래프

그래프 신경망 (GNN)은 그래프 데이터에서 학습 할 수있는 표준 도구 상자로 등장했습니다. GNN은 콘텐츠 추천 또는 신약 발견과 같은 다양한 분야에서 영향이 큰 문제를 개선 할 수 있습니다.

분할에 대한 고정 2 부 : Python으로 이미지 분할을 수행하는 방법

분할에 대한 고정 2 부 : Python으로 이미지 분할을 수행하는 방법

안녕하세요! 이미지 분할에 대한이 짧은 시리즈의 첫 번째 부분을 읽지 않았다면 여기에서 읽으십시오. 이전 이야기에서 임계 값 및 색상 분할에 대해 논의 했으므로 2 부에서는 색도 분할과 이미지 차이에 중점을 둘 것입니다.