모델 호스팅 프로토콜
이 문서는 thub.dev - TFJS, TF Lite 및 TensorFlow 모델에서 모든 모델 유형을 호스팅할 때 사용되는 URL 규칙을 설명합니다. 또한, thub.dev의 TensorFlow 모델과 호환 가능한 서비스를 TensorFlow 프로그램에 로드하기 위해 tensorflow_hub
라이브러리에서 구현된 HTTP(S) 기반 프로토콜에 대해서도 설명합니다.
주요 기능은 코드에서 같은 URL을 사용하여 모델을 로드하고 브라우저에서 모델 설명서를 보는 것입니다.
일반 URL 규칙
thub.dev는 다음 URL 형식을 지원합니다.
TF Hub 게시자는
https://tfhub.dev/<publisher>
를 따릅니다.TF Hub 모음은
https://tfhub.dev/<publisher>/collection/<collection_name>
를 따릅니다.TF Hub 모델에는 버전이 지정된 URL
https://tfhub.dev/<publisher>/<model_name>/<version>
및 최신 버전으로 확인되는 버전 없는 URLhttps://tfhub.dev/<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
를 추가하여 수동으로 다운로드할 수도 있습니다. 예를 들면 다음과 같습니다.
아카이브의 루트는 모델 디렉토리의 루트이며 다음 예제와 같이 SavedModel을 포함해야 합니다.
레거시 TF1 Hub 형식과 함께 사용하기 위한 Tarball에는 ./tfhub_module.pb
파일도 포함됩니다.
tensorflow_hub
라이브러리 모델 로딩 API 중 하나가 호출되면(hub.KerasLayer, hub.load 등), 라이브러리는 모델을 다운로드하고 모델의 압축을 풀고 로컬로 캐싱합니다. tensorflow_hub
라이브러리는 모델 URL의 버전이 지정되고 지정된 버전의 모델 콘텐츠가 변경 불가능하여 무기한 캐싱될 수 있다고 예상합니다. 캐싱 모델에 대해 자세히 알아보세요.
압축되지 않은 호스팅
환경 변수 TFHUB_MODEL_LOAD_FORMAT
또는 명령줄 플래그 --tfhub_model_load_format
가 UNCOMPRESSED
로 설정된 경우, 모델은 로컬로 다운로드 및 압축 해제되는 대신 원격 저장소(GCS)에서 직접 읽어옵니다. 이 동작이 활성화되면 라이브러리는 ?tf-hub-format=uncompressed
를 모델 URL에 추가합니다. 이 요청은 압축되지 않은 모델 파일이 포함된 GCS의 폴더 경로를 반환합니다. 예를 들어, https://tfhub.dev/google/spice/2?tf-hub-format=uncompressed
는 303 응답 본문에 gs://tfhub-modules/google/spice/2/uncompressed
를 반환합니다. 그런 다음 이 라이브러리는 해당 GCS 대상에서 모델을 읽습니다.