1. 개요
TensorFlow Lite 및 Firebase Codelab을 사용한 텍스트 분류에 오신 것을 환영합니다. 이 Codelab에서는 TensorFlow Lite 및 Firebase를 사용하여 텍스트 분류 모델을 학습시키고 앱에 배포하는 방법을 알아봅니다. 이 Codelab은 이 TensorFlow Lite 예를 기반으로 합니다.
텍스트 분류는 내용에 따라 텍스트에 태그 또는 범주를 할당하는 프로세스입니다. 감정 분석, 주제 레이블 지정, 스팸 감지 및 의도 감지와 같은 광범위한 애플리케이션을 사용하는 자연어 처리(NLP)의 기본 작업 중 하나입니다.
감정 분석은 텍스트 분석 기술을 사용하여 텍스트 데이터 내에서 감정(긍정적, 부정적, 중립적)을 해석하고 분류하는 것입니다. 감정 분석을 통해 기업은 온라인 대화 및 피드백에서 제품, 브랜드 또는 서비스에 대한 고객 감정을 식별할 수 있습니다.
이 자습서에서는 감정 분석, 특히 텍스트를 긍정 또는 부정으로 분류하기 위한 기계 학습 모델을 구축하는 방법을 보여줍니다. 이것은 중요하고 광범위하게 적용할 수 있는 종류의 기계 학습 문제인 이진 또는 2클래스 분류의 예입니다.
당신이 배울 것
- TF Lite Model Maker로 TF Lite 감정 분석 모델 교육
- TF Lite 모델을 Firebase ML에 배포하고 앱에서 액세스
- Firebase Analytics로 사용자 피드백을 추적하여 모델 정확도 측정
- Firebase Performance Monitoring을 통한 프로필 모델 성능
- 배포된 여러 모델 중 원격 구성을 통해 로드할 모델 선택
- Firebase A/B 테스팅을 통해 다양한 모델로 실험
필요한 것
- Xcode 11(또는 그 이상)
- 코코아팟 1.9.1(또는 그 이상)
이 튜토리얼을 어떻게 사용하시겠습니까?
Android 앱 구축 경험을 어떻게 평가하시겠습니까?
2. Firebase 콘솔 프로젝트 생성
프로젝트에 Firebase 추가
- Firebase 콘솔 로 이동합니다.
- 새 프로젝트 만들기를 선택하고 프로젝트 이름을 'Firebase ML iOS Codelab'으로 지정합니다.
3. 샘플 프로젝트 받기
코드 다운로드
샘플 프로젝트를 복제하고 프로젝트 디렉터리에서 pod update
실행하여 시작합니다.
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
git이 설치되어 있지 않은 경우 GitHub 페이지에서 또는 이 링크를 클릭하여 샘플 프로젝트를 다운로드할 수도 있습니다. 프로젝트를 다운로드했으면 Xcode에서 실행하고 텍스트 분류를 가지고 놀면서 어떻게 작동하는지 감을 잡으십시오.
Firebase 설정
설명서에 따라 새 Firebase 프로젝트를 만듭니다. 프로젝트가 있으면 Firebase 콘솔 에서 프로젝트의 GoogleService-Info.plist
파일을 다운로드하고 Xcode 프로젝트의 루트로 드래그합니다.
Podfile에 Firebase를 추가하고 포드 설치를 실행합니다.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
AppDelegate
의 didFinishLaunchingWithOptions
메서드에서 파일 상단에 Firebase를 가져옵니다.
import FirebaseCore
그리고 Firebase를 구성하기 위한 호출을 추가합니다.
FirebaseApp.configure()
프로젝트를 다시 실행하여 앱이 올바르게 구성되었고 실행 시 충돌이 발생하지 않는지 확인하십시오.
4. 감정 분석 모델 교육
우리는 TensorFlow Lite Model Maker를 사용하여 주어진 텍스트의 감정을 예측하는 텍스트 분류 모델을 훈련할 것입니다.
이 단계는 Google Colab에서 열 수 있는 Python 노트북으로 제공됩니다.
Colab에서 열기
이 단계를 완료하면 모바일 앱에 배포할 준비가 된 TensorFlow Lite 감정 분석 모델이 생깁니다.
5. Firebase ML에 모델 배포
Firebase ML에 모델을 배포하는 것은 다음 두 가지 주요 이유로 유용합니다.
- 앱 설치 크기를 작게 유지하고 필요한 경우에만 모델을 다운로드할 수 있습니다.
- 모델은 전체 앱과 다른 릴리스 주기로 정기적으로 업데이트될 수 있습니다.
이 모델은 콘솔을 통해 또는 Firebase Admin SDK를 사용하여 프로그래밍 방식으로 배포할 수 있습니다. 이 단계에서는 콘솔을 통해 배포합니다.
먼저 Firebase Console을 열고 왼쪽 탐색 패널에서 Machine Learning을 클릭합니다. 처음 여는 경우 '시작하기'를 클릭하십시오. 그런 다음 "사용자 지정"으로 이동하고 "모델 추가" 버튼을 클릭합니다.
메시지가 표시되면 모델 이름을 sentiment_analysis
로 지정하고 이전 단계에서 Colab에서 다운로드한 파일을 업로드합니다.
6. Firebase ML에서 모델 다운로드
Firebase에서 앱으로 원격 모델을 다운로드할 시기를 선택하는 것은 TFLite 모델이 상대적으로 커질 수 있기 때문에 까다로울 수 있습니다. 이상적으로는 앱이 실행될 때 즉시 모델을 로드하지 않는 것이 좋습니다. 모델이 하나의 기능에만 사용되고 사용자가 해당 기능을 사용하지 않는 경우 아무 이유 없이 상당한 양의 데이터를 다운로드하게 되기 때문입니다. Wi-Fi에 연결된 경우에만 모델을 가져오는 것과 같은 다운로드 옵션을 설정할 수도 있습니다. 네트워크 연결 없이도 모델을 사용할 수 있도록 하려면 백업으로 앱 없이 번들로 제공하는 것도 중요합니다.
단순화를 위해 기본 번들 모델을 제거하고 앱이 처음 시작될 때 항상 Firebase에서 모델을 다운로드합니다. 이렇게 하면 감정 분석을 실행할 때 Firebase에서 제공하는 모델로 추론이 실행되고 있는지 확인할 수 있습니다.
ModelLoader.swift
상단에서 Firebase 모듈을 가져옵니다.
import FirebaseCore import FirebaseMLModelDownloader
그런 다음 다음 방법을 구현하십시오.
static func downloadModel(named name: String, completion: @escaping (CustomModel?, DownloadError?) -> Void) { guard FirebaseApp.app() != nil else { completion(nil, .firebaseNotInitialized) return } guard success == nil && failure == nil else { completion(nil, .downloadInProgress) return } let conditions = ModelDownloadConditions(allowsCellularAccess: false) ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in switch (result) { case .success(let customModel): // Download complete. // The CustomModel object contains the local path of the model file, // which you can use to instantiate a TensorFlow Lite classifier. return completion(customModel, nil) case .failure(let error): // Download was unsuccessful. Notify error message. completion(nil, .downloadFailed(underlyingError: error)) } } }
ViewController.swift
의 viewDidLoad
에서 loadModel()
에 대한 호출을 새로운 모델 다운로드 메서드로 대체합니다.
// Download the model from Firebase print("Fetching model...") ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in guard let customModel = customModel else { if let error = error { print(error) } return } print("Model download complete") // TODO: Initialize an NLClassifier from the downloaded model }
앱을 다시 실행하십시오. 몇 초 후 원격 모델이 성공적으로 다운로드되었음을 나타내는 Xcode 로그인이 표시됩니다. 일부 텍스트를 입력하고 앱의 동작이 변경되지 않았는지 확인하십시오.
7. 앱에 모델 통합
Tensorflow Lite 작업 라이브러리를 사용하면 몇 줄의 코드만으로 TensorFlow Lite 모델을 앱에 통합할 수 있습니다. Firebase에서 다운로드한 TensorFlow Lite 모델을 사용하여 TFLNLClassifier
인스턴스를 초기화합니다. 그런 다음 이를 사용하여 앱 사용자의 텍스트 입력을 분류하고 결과를 UI에 표시합니다.
종속성 추가
앱의 Podfile로 이동하여 앱의 종속 항목에 TensorFlow Lite 작업 라이브러리(텍스트)를 추가합니다. target 'TextClassification'
선언 아래에 종속성을 추가했는지 확인하십시오.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
pod install
실행하여 새 종속성을 설치합니다.
텍스트 분류자 초기화
그런 다음 작업 라이브러리의 NLClassifier
사용하여 Firebase에서 다운로드한 감정 분석 모델을 로드합니다.
ViewController.swift
TFLNLClassifier 인스턴스 변수를 선언해 보겠습니다. 파일 맨 위에서 새 종속성을 가져옵니다.
import TensorFlowLiteTaskText
마지막 단계에서 수정한 방법 위에서 이 주석을 찾습니다.
// TODO: Add an TFLNLClassifier property.
TODO를 다음 코드로 바꿉니다.
private var classifier: TFLNLClassifier?
Firebase에서 다운로드한 감정 분석 모델로 textClassifier
변수를 초기화합니다. 마지막 단계에서 추가한 이 주석을 찾으십시오.
// TODO: Initialize an NLClassifier from the downloaded model
TODO를 다음 코드로 바꿉니다.
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
텍스트 분류
classifier
인스턴스가 설정되면 단일 메서드 호출로 감정 분석을 실행할 수 있습니다.
ViewController.swift
classify(text:)
메서드에서 TODO 주석을 찾습니다.
// TODO: Run sentiment analysis on the input text
주석을 다음 코드로 바꿉니다.
guard let classifier = self.classifier else { return }
// Classify the text
let classifierResults = classifier.classify(text: text)
// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)
8. 최종 앱 실행
감정 분석 모델을 앱에 통합했으므로 테스트해 보겠습니다. iOS 장치를 연결하고 실행 ( ) Xcode 도구 모음에서.
앱은 입력한 영화 리뷰의 감정을 정확하게 예측할 수 있어야 합니다.
9. 더 많은 Firebase 기능으로 앱 강화
TFLite 모델을 호스팅하는 것 외에도 Firebase는 기계 학습 사용 사례를 강화하는 몇 가지 다른 기능을 제공합니다.
- 사용자 기기에서 실행되는 모델 추론 속도를 측정하기 위한 Firebase 성능 모니터링.
- Firebase Analytics는 사용자 반응을 측정하여 프로덕션에서 모델의 성능을 측정합니다.
- 모델의 여러 버전을 테스트하기 위한 Firebase A/B 테스팅
- 이전에 TFLite 모델의 두 가지 버전을 교육한 것을 기억하십니까? A/B 테스트는 프로덕션 환경에서 어떤 버전이 더 나은지 알아보는 좋은 방법입니다!
앱에서 이러한 기능을 활용하는 방법에 대해 자세히 알아보려면 아래 Codelab을 확인하세요.
10. 축하합니다!
이 Codelab에서는 감정 분석 TFLite 모델을 학습시키고 Firebase를 사용하여 모바일 앱에 배포하는 방법을 배웠습니다. TFLite 및 Firebase에 대해 자세히 알아보려면 다른 TFLite 샘플 및 Firebase 시작 가이드를 살펴보세요.
우리가 다룬 내용
- TensorFlow 라이트
- Firebase ML
다음 단계
- Firebase Performance Monitoring으로 모델 추론 속도를 측정하세요.
- Firebase ML 모델 관리 API를 통해 Colab에서 Firebase로 직접 모델을 배포합니다.
- 사용자가 예측 결과에 대한 피드백을 허용하는 메커니즘을 추가하고 Firebase Analytics를 사용하여 사용자 피드백을 추적합니다.
- Firebase A/B 테스트를 통해 평균 단어 벡터 모델과 MobileBERT 모델을 A/B 테스트합니다.