Firebase 머신러닝을 사용하여 맞춤 모델을 호스팅하는 경우 2027년 6월 15일에 Firebase ML 호스팅 서비스가 종료되기 전에 다른 솔루션으로 이전해야 합니다.
대안으로 Firebase용 Cloud Storage를 사용하여 모델을 호스팅할 수 있습니다. 이 가이드에 따라 Firebase ML에서 Cloud Storage로 모델을 이전하세요.
TensorFlow Lite 모델 다운로드
모델이 아직 로컬에 저장되어 있지 않다면 Firebase 프로젝트에서 다운로드합니다. 다음 두 가지 방법으로 이 작업을 수행할 수 있습니다.
Firebase Console에서 한 번에 하나씩 다운로드
- Firebase Console에서 머신러닝 페이지 섹션을 엽니다.
- 이전하려는 각 모델의 점 3개로 된 더보기 메뉴를 클릭한 다음 모델 다운로드를 클릭합니다.
호스팅된 모델을 모두 일괄 다운로드
- Firebase Console에서 머신러닝 페이지를 엽니다.
- 일괄 다운로드 명령어 가져오기 버튼을 클릭하여 프로젝트의 모든 모델을 다운로드하는
curl명령어를 가져옵니다. 이 URL은 7일 후에 만료됩니다. - 로컬 터미널 또는 Cloud Shell에서 명령어를 실행합니다. Cloud Shell을 사용하는 경우 5GB 디스크 스토리지 한도에 유의하세요.
이 명령어는 모델을
hosted_models이라는 로컬 폴더에 다운로드합니다.
Cloud Storage를 사용하여 모델 호스팅
모델이 로컬에 있으면 Cloud Storage 버킷에 업로드해야 합니다.
필요에 맞는 업로드 방법을 선택하세요.
모델을 한 번에 하나씩 업로드
- 스토리지 버킷 만들기: Firebase 콘솔에서 데이터베이스 및 스토리지 > 스토리지로 이동하고 온보딩 단계에 따라 버킷을 만듭니다(아직 만들지 않은 경우). 이 작업에는 결제 계정이 필요합니다. 자세한 내용은 Firebase 가격 책정을 참고하세요.
- 저장소 섹션에서 원하는 경로에
.tflite모델 파일을 업로드합니다.
모델 일괄 업로드
- 스토리지 버킷 만들기: Firebase 콘솔에서 데이터베이스 및 스토리지 > 스토리지로 이동하고 온보딩 단계에 따라 버킷을 만듭니다(아직 만들지 않은 경우). 이 작업에는 결제 계정이 필요합니다. 자세한 내용은 Firebase 가격 책정을 참고하세요.
다음
gcloud명령어를 사용하여 로컬hosted_models폴더에서 모든 모델을 업로드합니다.gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/
보안 및 앱 통합 구성
스토리지 보안 규칙을 통해 앱이 모델 파일을 읽을 수 있는지 확인합니다. 예를 들어 인증된 사용자에게만 액세스를 허용할 수 있습니다.
새 스토리지 버킷에서
.tflite파일을 다운로드하도록 애플리케이션 코드를 업데이트합니다.Android
modelRef = storage.getReferenceFromUrl("gs://YOUR_BUCKET/path/to/model.tflite") val localFile = File.createTempFile("models", "tflite") modelRef.getFile(localFile).addOnSuccessListener { // Local temp file has been created }.addOnFailureListener { // Handle any errors }Apple
let gsReference = storage.reference(forURL: "gs://YOUR_BUCKET/path/to/model.tflite") // Create local filesystem URL let localURL = URL(string: "path/to/model.tflite")! // Download to the local filesystem let downloadTask = gsReference.write(toFile: localURL) { url, error in if let error = error { // Uh-oh, an error occurred! } else { // Local file URL for "model.tflite" is returned } }Flutter
final modelRef = FirebaseStorage.instance.refFromURL("gs://YOUR_BUCKET/path/to/model.tflite"); final appDocDir = await getApplicationDocumentsDirectory(); final filePath = "${appDocDir.absolute}/models/model.tflite"; final file = File(filePath); final downloadTask = modelRef.writeToFile(file); downloadTask.snapshotEvents.listen((taskSnapshot) { switch (taskSnapshot.state) { case TaskState.running: // TODO: Handle this case. break; case TaskState.paused: // TODO: Handle this case. break; case TaskState.success: // TODO: Handle this case. break; case TaskState.canceled: // TODO: Handle this case. break; case TaskState.error: // TODO: Handle this case. break; } });모델이 다운로드되면 기존 TensorFlow Lite 라이브러리를 사용하여 모델을 로드하고 사용할 수 있습니다.
(선택사항) 새 버전을 출시하지 않고도 앱에서 모델 경로를 동적으로 업데이트하려면 Firebase 원격 구성을 사용하는 것이 좋습니다.
선택사항: LiteRT CompiledModel API로 이전
앱에서 여전히 기존 TensorFlow Lite Interpreter API를 사용하는 경우 기존 API에 비해 하드웨어 가속 지원 및 기타 개선사항이 제공되는 LiteRT CompiledModel API로 이전하는 것이 좋습니다.