통합: 빠른 SaaS 애플리케이션 구현을 위한 Fast API
개발자 커뮤니티의 많은 분들이 PerceptiLabs에서 모델을 내보낸 후 모델을 배포하고 사용하는 방법을 문의하셨습니다. 따라서 0.13 릴리스에서는 FastAPI 배포 대상을 PerceptiLabs의 Deploy View에 추가했습니다. 이 기능은 TensorFlow 모델을 배포할 뿐만 아니라 실제 추론을 위해 모델을 몇 분 내에 검증하고 실행할 수 있는 완전히 작동하는 앱을 생성합니다.
우리는 Fast를 선택했다.기반으로서 API는 RESTful API를 구축하기 위한 고성능 웹 프레임워크이기 때문에 2021년에 세 번째로 선호되는 웹 프레임워크는 말할 것도 없다. 이것이 무엇을 제공하는지 자세히 살펴봅시다.
왜 Fast API인가?
FastAPI 배포 대상은 TensorFlow 모델을 내보내고, 해당 서버와 통신하는 예제 Python 클라이언트 앱과 함께 FastAPI를 기반으로 하는 Python 서버 앱을 생성합니다. 이 아키텍처는 추론을 위해 서버를 통해 모델을 호스팅하고, 원격 클라이언트 앱에서 데이터를 수신한 다음, 오늘날의 SaaS DL 솔루션에서 흔히 볼 수 있는 패턴인 해당 클라이언트 앱으로 예측을 반환하는 방법을 보여 주기 때문에 이 아키텍처를 선택했습니다. PerceptiLabs의 사용자는 버튼 클릭으로 이 대상에 쉽게 배포할 수 있지만 PerceptiLabs에서 생성된 코드는 이해하고 사용자 정의하기 위해 프로그래밍 경험이 필요하다.
하우 더 패스트PerceptiLabs에서 작동하는 API 배포 대상
더 패스트API 서버는 모델을 호스팅하고 클라이언트 앱이 추론을 실행하기 위해 호출할 수 있는 /predict 끝점을 노출합니다.
클라이언트 앱은 일련의 데이터 파일을 나열하는 CSV 파일(배포 프로세스에서도 생성됨)을 로드합니다. 그런 다음 클라이언트는 나열된 데이터 파일에서 원시 데이터를 로드하고 요청 페이로드의 /predict 끝점으로 전송합니다. 서버는 호스팅하는 TensorFlow 모델을 통해 데이터를 공급하고 각 데이터 항목에 해당하는 예측을 포함하는 JSON 응답을 반환합니다.
이 대상을 한 번 배포한 후에는 Perceptilabs에서 모델의 후속 내보내기에 TensorFlow 또는 TensorFlowLite 대상을 사용할 수 있습니다. 서버와 앱 코드를 계속 재생성하고 싶지 않을 수 있기 때문입니다. 그런 다음 FastAPI 폴더의 이전 모델을 새로 생성된 모델 파일로 덮어쓸 수 있습니다.
FastAPI 사용 사례
FastAPI 배포 대상에 의해 생성된 서버 및 클라이언트 애플리케이션은 다음과 같은 실제 추론을 사용하는 사용 사례에 적합한 기반을 제공합니다.
-
클라우드 기반 SaaS 솔루션: 모델을 호스팅하고 단순한 REST API에서 예측 요청을 캡슐화하는 샘플 서버의 기능은 클라우드 기반 SaaS 솔루션의 기반이 될 수 있습니다. 예를 들어 생성된 코드를 장치에서 업로드한 데이터에서 추론을 수행하는 클라우드 서비스로 변환할 수 있습니다. 서버 코드는 이러한 에지 장치로 예측을 되돌리는 것 외에도 업로드된 이미지의 품질을 감지하거나 지정된 시간 내에 엔드포인트가 호출되는 횟수 등의 간단한 메트릭을 기록하는 등의 분석을 수행할 수 있습니다. 그러면 클라우드에서 예측과 함께 REST 응답을 수신하면 장치는 다른 장치(예: 액추에이터)를 활성화하거나 서비스에 추가한 다른 엔드포인트(예: 경고 트리거)를 호출하는 등의 추가 작업을 수행할 수 있습니다.
-
클라우드 서비스에 문의하여 추론: 마찬가지로, 클라이언트 앱은 추론을 위해 클라우드 서비스를 호출하는 방법을 보여주는 데 유용하다. 예를 들어 에지 장치에서 실행되도록 앱을 수정하여 카메라 또는 비디오 데이터를 수집할 수 있습니다. 이 앱은 클라우드 기반 추론을 위해 엔드포인트를 호출할 때 여러 이미지 또는 프레임을 수집하여 페이로드에 패키징한 다음 페이로드를 포함할 수 있습니다. 그런 다음 서버에서 이러한 예측을 분석하여 경고를 보내거나 통찰력을 위한 대시보드를 제공할 수 있습니다.
-
캡처 타이밍 메트릭: 서버 및 앱에 코드를 추가하여 타이밍 메트릭을 캡처하는 것도 흥미로운 개선 방법입니다. 예를 들어, 서버의 추론 호출과 클라이언트의 POST 요청을 각각의 호출 전과 이후의 시간을 모두 수집하기 위한 시스템 호출로 감쌀 수 있습니다. 그런 다음 타이밍 델타를 계산하여 추론 속도와 왕복 요청/응답 타이밍을 테스트할 수 있습니다.