모델 호스팅 프로토콜

이 문서는 thub.dev - TFJS, TF Lite 및 TensorFlow 모델에서 모든 모델 유형을 호스팅할 때 사용되는 URL 규칙을 설명합니다. 또한, thub.dev의 TensorFlow 모델과 호환 가능한 서비스를 TensorFlow 프로그램에 로드하기 위해 tensorflow_hub 라이브러리에서 구현된 HTTP(S) 기반 프로토콜에 대해서도 설명합니다.

주요 기능은 코드에서 같은 URL을 사용하여 모델을 로드하고 브라우저에서 모델 설명서를 보는 것입니다.

일반 URL 규칙

thub.dev는 다음 URL 형식을 지원합니다.

  • TF Hub 게시자는 <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>를 따릅니다.
  • TF Hub 모음은 <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/collection/<collection_name>를 따릅니다.
  • TF Hub 모델에는 버전이 지정된 URL <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>/<version> 및 최신 버전으로 확인되는 버전 없는 URL <a href="https://tfhub.dev/">https://tfhub.dev/</a><publisher>/<model_name>이 있습니다.

TF Hub 모델은 thub.dev 모델 URL에 URL 매개변수를 추가하여 압축된 자산으로 다운로드할 수 있습니다. 그러나 이를 달성하는 데 필요한 URL 매개변수는 모델 유형에 따라 다릅니다.

  • TensorFlow 모델(SavedModel 및 TF1 Hub 형식 모두): ?tf-hub-format=compressed를 TensorFlow 모델 URL에 추가합니다.
  • TFJS 모델: ?tfjs-format=compressed를 TFJS 모델 URL에 추가하여 압축된 또는 /model.json?tfjs-format=file을 다운로드하고 원격 스토리지에서 읽습니다.
  • TF Lite 모델: ?lite-format=tflite를 TF Lite 모델 URL에 추가합니다.

예를 들면 다음과 같습니다.

유형 모델 URL 다운로드 유형 URL 매개변수 다운로드 URL
TensorFlow (SavedModel, TF1 Hub 형식) https://tfhub.dev/google/spice/2 .tar.gz ?tf-hub-format=compressed https://tfhub.dev/google/spice/2?tf-hub-format=compressed
TF Lite https://tfhub.dev/google/lite-model/spice/1 .tflite ?lite-format=tflite https://tfhub.dev/google/lite-model/spice/1?lite-format=tflite
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .tar.gz ?tfjs-format=compressed https://tfhub.dev/google/tfjs-model/spice/2/default/1?tfjs-format=compressed

또한, 일부 모델은 다운로드하지 않고도 원격 스토리지에서 직접 읽을 수 있는 형식으로 호스팅됩니다. 이는 브라우저에서 TF.js 모델을 실행하거나 Colab에서 SavedModel을 로드하는 등 사용 가능한 로컬 스토리지가 없는 경우에 특히 유용합니다. 로컬로 다운로드하지 않고 원격으로 호스팅되는 모델을 읽으면 대기 시간이 늘어날 수 있습니다.

유형 모델 URL 응답 유형 URL 매개변수 요청 URL
TensorFlow (SavedModel, TF1 Hub 형식) https://tfhub.dev/google/spice/2 문자열(압축되지 않은 모델이 저장되는 GCS 폴더 경로) ?tf-hub-format=uncompressed https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
TF.js https://tfhub.dev/google/tfjs-model/spice/2/default/1 .json ?tfjs-format=file https://tfhub.dev/google/tfjs-model/spice/2/default/1/model.json?tfjs-format=file

tensorflow_hub 라이브러리 프로토콜

이 섹션에서는 tensorflow_hub 라이브러리와 함께 사용하기 위해 thub.dev에서 모델을 호스팅하는 방법을 설명합니다. tensorflow_hub 라이브러리와 함께 동작하도록 자체 모델 리포지토리를 호스팅하려면 HTTP(s) 배포 서비스에서 이 프로토콜의 구현을 제공해야 합니다.

이 섹션에서는 TF Lite 및 TFJS 모델이 tensorflow_hub 라이브러리를 통해 다운로드되지 않으므로 호스팅에 대해서는 다루지 않습니다. 이들 모델 유형의 호스팅에 대한 자세한 내용은 위에서 확인하세요.

압축된 호스팅

모델은 압축된 tar.gz 파일로 thub.dev에 저장됩니다. tensorflow_hub 라이브러리는 압축된 모델을 자동으로 다운로드합니다. 또는, 모델 URL에 ?tf-hub-format=compressed를 추가하여 수동으로 다운로드할 수도 있습니다. 예를 들면 다음과 같습니다.

wget https://tfhub.dev/tensorflow/albert_en_xxlarge/1?tf-hub-format=compressed

아카이브의 루트는 모델 디렉토리의 루트이며 다음 예제와 같이 SavedModel을 포함해야 합니다.

# Create a compressed model from a SavedModel directory.
$ tar -cz -f model.tar.gz --owner=0 --group=0 -C /tmp/export-model/ .

# Inspect files inside a compressed model
$ tar -tf model.tar.gz
./
./variables/
./variables/variables.data-00000-of-00001
./variables/variables.index
./assets/
./saved_model.pb

레거시 TF1 Hub 형식과 함께 사용하기 위한 Tarball에는 ./tfhub_module.pb 파일도 포함됩니다.

tensorflow_hub 라이브러리 모델 로딩 API 중 하나가 호출되면(hub.KerasLayer, hub.load 등), 라이브러리는 모델을 다운로드하고 모델의 압축을 풀고 로컬로 캐싱합니다. tensorflow_hub 라이브러리는 모델 URL의 버전이 지정되고 지정된 버전의 모델 콘텐츠가 변경 불가능하여 무기한 캐싱될 수 있다고 예상합니다. 캐싱 모델에 대해 자세히 알아보세요.

압축되지 않은 호스팅

환경 변수 TFHUB_MODEL_LOAD_FORMAT 또는 명령줄 플래그 --tfhub_model_load_formatUNCOMPRESSED로 설정된 경우, 모델은 로컬로 다운로드 및 압축 해제되는 대신 원격 저장소(GCS)에서 직접 읽어옵니다. 이 동작이 활성화되면 라이브러리는 ?tf-hub-format=uncompressed를 모델 URL에 추가합니다. 이 요청은 압축되지 않은 모델 파일이 포함된 GCS의 폴더 경로를 반환합니다. 예를 들어,
<a href="https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed">https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed</a>
는 303 응답 본문에 gs://tfhub-modules/google/spice/2/uncompressed
를 반환합니다. 그런 다음 이 라이브러리는 해당 GCS 대상에서 모델을 읽습니다.