TFX에서 다른 ML 프레임워크 사용

플랫폼으로서의 TFX는 프레임워크 중립적이며 JAX, scikit-learn과 같은 다른 ML 프레임워크와 함께 사용할 수 있습니다.

모델 개발자의 경우 이는 다른 ML 프레임워크에 구현된 모델 코드를 다시 작성할 필요가 없으며 대신 TFX에서 대량의 학습 코드를 그대로 재사용하고 다른 기능 TFX 및 나머지 TensorFlow 생태계의 이점을 누릴 수 있음을 의미합니다. 제안합니다.

TFX 파이프라인 SDK 및 TFX의 대부분의 모듈(예: 파이프라인 오케스트레이터)은 TensorFlow에 직접적인 종속성을 갖지 않지만 데이터 형식과 같이 TensorFlow를 지향하는 몇 가지 측면이 있습니다. 특정 모델링 프레임워크의 요구 사항을 어느 정도 고려하면 TFX 파이프라인을 사용하여 다른 Python 기반 ML 프레임워크에서 모델을 학습할 수 있습니다. 여기에는 Scikit-learn, XGBoost, PyTorch 등이 포함됩니다. 다른 프레임워크와 함께 표준 TFX 구성요소를 사용할 때 고려해야 할 사항은 다음과 같습니다.

  • exampleGen은 TFRecord 파일에 tf.train.Example을 출력합니다. 이는 교육 데이터에 대한 일반적인 표현이며 다운스트림 구성 요소는 TFXIO를 사용하여 메모리에서 Arrow/RecordBatch로 읽습니다. 이는 tf.dataset , Tensors 또는 기타 형식으로 추가로 변환될 수 있습니다. tf.train.Example/TFRecord 이외의 페이로드/파일 형식이 고려되고 있지만 TFXIO 사용자의 경우 블랙박스여야 합니다.
  • 훈련에 어떤 프레임워크를 사용하든 변환을 사용하여 변환된 훈련 예제를 생성할 수 있지만, 모델 형식이 saved_model 이 아닌 경우 사용자는 변환 그래프를 모델에 삽입할 수 없습니다. 이 경우 모델 예측은 원시 특성 대신 변환된 특성을 가져와야 하며 사용자는 제공 시 모델 예측을 호출하기 전에 전처리 단계로 변환을 실행할 수 있습니다.
  • Trainer는 GenericTraining을 지원하므로 사용자는 ML 프레임워크를 사용하여 모델을 훈련할 수 있습니다.
  • 기본적으로 Evaluator는 saved_model 만 지원하지만 사용자는 모델 평가를 위한 예측을 생성하는 UDF를 제공할 수 있습니다.

Python 기반이 아닌 프레임워크에서 모델을 교육하려면 Kubernetes와 같은 컨테이너화된 환경에서 실행되는 파이프라인의 일부로 Docker 컨테이너에서 사용자 지정 교육 구성 요소를 격리해야 합니다.

잭스

JAX 는 고성능 기계 학습 연구를 위해 결합된 Autograd와 XLA입니다. Flax 는 유연성을 위해 설계된 JAX용 신경망 라이브러리이자 생태계입니다.

jax2tf를 사용하면 훈련된 JAX/Flax 모델을 일반 훈련 및 모델 평가를 통해 TFX에서 원활하게 사용할 수 있는 saved_model 형식으로 변환할 수 있습니다. 자세한 내용은 이 예를 확인하세요.

scikit-learn

Scikit-learn은 Python 프로그래밍 언어용 기계 학습 라이브러리입니다. TFX-Addons의 맞춤형 교육 및 평가가 포함된 e2e 예시가 있습니다.