시나리오의 한 측면은 기계 학습 모델을 만드는 것입니다. 현실 세계에서 사용할 수 있어야 하며 소비자와 개발자가 사용할 수 있어야 합니다.
기계 학습 모델을 배포하는 가장 간단하고 인기 있는 방법은 REST API에 포함하는 것입니다.
FastAPI라는 유명한 라이브러리를 사용하면 바로 이것이 바로 오늘 우리가 성취할 것입니다.
하지만, 무엇 FastAPI?
FastAPI Python 웹 프레임워크는 최신 Python 기능을 활용하기 위해 처음부터 만들어졌습니다.
클라이언트와 비동기식 동시 통신을 위해 ASGI 표준을 준수하며 WSGI도 사용할 수 있습니다.
끝점과 경로는 모두 비동기 기능을 사용할 수 있습니다. 또한 FastAPI를 사용하면 유형 힌트가 있는 깔끔한 최신 Python 코드로 웹 앱을 생산적으로 생성할 수 있습니다.
FastAPI의 주요 사용 사례는 이름에서 알 수 있듯이 API 끝점을 만드는 것입니다.
대화형 Swagger UI가 포함된 OpenAPI 표준을 사용하거나 Python 사전 데이터를 JSON으로 제공하는 것은 모두 이를 달성하는 간단한 방법입니다. 그러나 FastAPI는 API만을 위한 것이 아닙니다.
웹 프레임워크가 할 수 있는 거의 모든 것 외에도 Jinja2 템플릿 엔진을 사용하여 표준 웹 페이지를 제공하고 WebSocket을 사용하는 앱을 제공하는 데 사용할 수 있습니다.
이 기사에서는 간단한 기계 학습 모델을 개발한 다음 FastAPI를 사용하여 배포합니다. 의 시작하자.
FastAPI 설치 및 첫 번째 API 생성
라이브러리와 ASGI 서버를 먼저 설치해야 합니다. Uvuicorn 또는 Hypercorn이 작동합니다. 터미널에 다음 명령을 입력하여 작동합니다.
API가 생성되었으므로 원하는 코드 편집기를 사용하여 탐색할 수 있습니다. 시작하려면 ml_model.py라는 Python 스크립트를 만듭니다. 다른 이름을 지정해도 되지만 이 게시물을 위해 이 파일을 ml_model.py로 지칭하겠습니다.
두 개의 엔드포인트가 있는 간단한 API를 만들려면 다음 작업을 완료해야 합니다.
- FastAPI 및 Uvicorn 라이브러리를 가져옵니다.
- FastAPI 클래스 인스턴스를 설정합니다.
- 인덱스 페이지에서 간단한 JSON 개체를 생성하는 첫 번째 경로를 선언합니다.
- 사용자 지정 메시지와 함께 간단한 JSON 개체를 제공하는 두 번째 경로를 선언합니다. 이름 매개변수는 URL에서 직접 가져옵니다(예: https://127.0.0.1:8000/Jay).
- API를 실행하려면 Uvicorn을 활용하십시오.
이 XNUMX단계를 구현하는 것은 다음 코드 비트에 나와 있습니다. 간단한 API 생성
모두 완료되었습니다! API를 즉시 실행해 보겠습니다. 이를 수행하려면 ml model.py 파일 옆에 있는 터미널 창을 엽니다. 다음으로 다음을 입력합니다.
엔터 키. 계속 진행하기 전에 이 주장을 반박해 보겠습니다. 첫 번째 앱은 확장자 없이 Python 파일 이름만 사용합니다. 두 번째 앱은 FastAPI 인스턴스와 이름이 같아야 합니다.
-reload를 사용하면 처음부터 시작하지 않고 파일을 저장할 때 자동으로 다시 로드하도록 API에 알릴 수 있습니다.
이제 브라우저를 실행하고 https://127.0.0.1:8000으로 이동합니다. 결과는 다음과 같이 나타나야 합니다.
이제 FastAPI를 사용하여 간단한 API를 만드는 방법을 이해했습니다.
기계 학습 모델 빌드 및 학습
데이터를 수집하거나 분석하지 않고 간단한 모델만 학습합니다. 이는 모델 배포와 관련이 없으며 당면한 주제에 필수적이지 않습니다.
Iris 데이터셋을 기반으로 하는 모델은 동일한 방법으로 설치할 수 있습니다. 신경망 설치 방법.
그리고 우리는 그것을 할 것입니다 : 다운로드 홍채 데이터 세트 그리고 모델을 훈련시킵니다. 그것은 간단하지 않을 것입니다. 시작하려면 jaysmlmodel.py라는 파일을 만듭니다.
여기에서 다음을 수행합니다.
- 가져오기 — pandas, scikit-RandomForecastClassifier, Learn's pydantic의 BaseModel(다음 단계에서 이유를 알 수 있음), 모델 저장 및 로드를 위한 joblib가 필요합니다.
- 기본 모델에서 상속되는 IrisSpecies 클래스를 선언합니다. 이 클래스에는 단일 꽃 종을 예측하는 데 필요한 필드만 포함됩니다(자세한 내용은 다음 섹션 참조).
- 클래스를 만듭니다. IrisModel은 모델 훈련 및 예측 도구입니다.
- IrisModel 내에서 _train model이라는 메소드를 선언합니다. 랜덤 포레스트 기법을 사용하여 모델을 훈련하는 데 사용됩니다. 훈련된 모델은 프로시저에 의해 반환됩니다.
- IrisModel 내부에 예측된 종 함수를 선언하십시오. 4개의 입력 요소(꽃 측정)를 기반으로 예측하는 데 활용됩니다. 예측(꽃 종)과 예측 확률은 모두 알고리즘에 의해 반환됩니다.
- IrisModel의 생성자를 변경하여 Iris 데이터 세트를 로드하고 폴더에서 누락된 경우 모델을 학습시키십시오. 이것은 새로운 모델을 반복적으로 훈련시키는 문제를 해결합니다. joblib 라이브러리는 모델 로드 및 저장에 활용됩니다.
전체 코드는 다음과 같습니다.
위의 목록과 주석이 작성하기에 상당한 양의 코드임에도 불구하고 이해하기 쉽게 되었기를 바랍니다. 이제 이 모델이 개발되었으므로 예측 기능을 다음을 통해 게시해 보겠습니다. REST API.
전체 REST API 구성
ml_model.py 파일로 돌아가서 모든 데이터를 제거합니다. 상용구는 본질적으로 이전과 동일하지만 빈 파일로 다시 시작해야 합니다.
이번에는 꽃 유형을 결정하는 데 사용되는 하나의 끝점만 정의합니다. 이전 섹션에서 선언된 IrisModel.predict species()는 예측을 수행하기 위해 이 끝점에 의해 호출됩니다.
요청 유형은 또 다른 큰 변화입니다. URL이 아닌 JSON으로 파라미터를 전달하기 위해서는 사용시 POST 사용을 권장합니다. 기계 학습 아피스.
위의 문장은 당신이 횡설수설처럼 들릴 수 있습니다. 데이터 과학자하지만 괜찮습니다. 모델을 설계하고 배포하기 위해 HTTP 요청 및 REST API에 대한 전문가일 필요는 없습니다.
ml model.py에 대한 작업은 적고 간단합니다.
- 이전에 생성한 jaymlmodel.py 파일에서 uvicorn, FastAPI, IrisModel 및 IrisSpecies를 가져와야 합니다.
- FastAPI 및 IrisModel의 인스턴스를 만듭니다.
- https://127.0.0.1:8000/predict에서 함수를 선언하여 예측합니다.
- IrisModel.predict species() 메서드는 IrisSpecies 유형의 개체를 수신하고 이를 사전으로 변환한 다음 반환합니다. 반환값은 예상 클래스와 예측 확률입니다.
- uvicorn을 사용하여 API를 실행합니다.
다시 말하지만 다음은 주석과 함께 전체 파일의 코드입니다.
그것이 당신이해야 할 모든 것입니다. 다음 단계에서는 API를 테스트해 보겠습니다.
API 테스트
API를 실행하려면 터미널에 다음 줄을 다시 입력하십시오. uvicorn ml_model:app –reload
문서 페이지가 표시되는 방식은 다음과 같습니다.
오늘은 여기까지입니다. 이 다음 부분에서 결론을 내리도록 하겠습니다.
결론
오늘은 간단한 API 예제와 간단한 기계 학습 예제를 사용하여 FastAPI가 무엇인지, 어떻게 사용하는지 배웠습니다. 또한 API 문서를 만들고 보는 방법과 테스트하는 방법도 배웠습니다.
그것은 한 조각에 많은 양이므로 제대로 이해하는 데 몇 번 읽어야 한다고 해도 놀라지 마십시오.
행복한 코딩.
댓글을 남겨주세요.