Heroku에 기계 학습 모델 배포

게시 됨: 2021-01-05

기계 학습은 데이터 추출, 정리, 중요한 기능 선택, 모델 구축, 유효성 검사 및 배포를 포함하여 보이지 않는 데이터에서 모델을 테스트하는 연속 프로세스입니다.

초기 데이터 엔지니어링 및 모델 구축 단계는 상당히 지루한 프로세스이고 데이터를 사용하는 데 많은 시간이 필요하지만 모델 배포는 간단해 보일 수 있지만 중요한 프로세스이며 대상으로 삼고 싶은 사용 사례에 따라 다릅니다. 모바일 사용자, 웹 사이트, 스마트 장치 또는 기타 IoT 장치를 통해 모델을 제공할 수 있습니다.

모델을 기본 애플리케이션에 통합하거나 SDLC 또는 클라우드에 포함하도록 선택할 수 있습니다. 클라우드 플랫폼에서 모델을 배포하고 실행하기 위한 다양한 전략이 있으며, Google Cloud Platform, Azure, Amazon Web Services 및 Heroku와 같은 도구를 사용할 수 있기 때문에 대부분의 경우에 더 나은 옵션인 것 같습니다.

Pub/Sub 방식으로 모델을 노출하도록 선택할 수 있지만 API(응용 프로그램 인터페이스) 또는 REST 래퍼는 프로덕션에서 모델을 배포하는 데 더 일반적으로 사용됩니다. 모델 복잡성이 증가함에 따라 일반적으로 기계 학습 엔지니어로 알려진 이러한 상황을 처리하기 위해 다른 팀이 할당됩니다. 이 많은 소개를 통해 Heroku 플랫폼에서 기계 학습 모델을 API로 배포하는 방법을 살펴보겠습니다.

목차

헤로쿠란?

Heroku는 개발자가 서버리스 코드를 호스팅할 수 있는 서비스 도구로서의 플랫폼입니다. 이것이 의미하는 바는 특정 목적을 위해 하나 또는 다른 하나를 제공하는 스크립트를 개발할 수 있다는 것입니다. Heroku 플랫폼 자체는 서비스 도구로서의 인프라인 AWS(Amazon Web Services)에서 호스팅됩니다.

Heroku는 무료 플랫폼이지만 가동 시간은 500시간으로 제한됩니다. 앱은 30분 동안 활동이 없으면 절전 모드로 전환되는 다이노로 호스팅됩니다. 이렇게 하면 앱이 비활성 상태에서 모든 자유 시간을 소비하지 않습니다. 플랫폼은 Ruby, Java, PHP, Python, Node, Go, Scala를 지원합니다. 대부분의 데이터 과학 초보자는 이 플랫폼을 참조하여 클라우드에서 모델을 실행하고 배포한 경험이 있습니다.

모델 준비

이제 이 플랫폼에 대해 알고 있으므로 동일한 모델을 준비하겠습니다. 기계 학습 모델이 학습되면 해당 매개변수가 메모리 자체에 저장됩니다. 이 모델은 이 모델을 직접 로드하고, 보이지 않는 데이터를 전달하고, 출력을 얻을 수 있도록 별도의 파일로 내보내야 합니다.

Python 개체 모델을 비트스트림으로 변환하는 Pickle, job-lib, H20.ai 내보내기 형식인 ONNX, PMML 또는 MOJO와 같은 다양한 모델 형식이 일반적으로 실행되며 Java 애플리케이션에도 통합될 모델을 제공합니다. 단순화를 위해 피클을 통해 모델을 내보내고 싶다고 가정하고 다음과 같이 할 수 있습니다.

수입 피클

Pkl_Filename = "model.pkl"

파일로 open(Pkl_Filename, 'wb') 사용:

pickle.dump(모델명, 파일)

이제 모델이 별도의 파일에 저장되고 API에 통합되어 사용할 준비가 되었습니다.

서버 로직

예측을 위해 이 모델에 대한 액세스를 제공하려면 모든 클라이언트 측 요청을 리디렉션하고 처리할 수 있는 서버 코드가 필요합니다. Python은 웹 개발 프레임워크를 지원하며 유명한 것은 Flask입니다.

몇 줄의 코드로 서버를 설정할 수 있는 최소한의 프레임워크입니다. 최소 패키지이므로 인증 및 RESTful 특성과 같은 많은 기능이 명시적으로 지원되지 않습니다. 이것들은 확장과 통합될 수 있습니다.

또 다른 옵션은 새로 출시된 프레임워크 FastAPI를 선택하는 것입니다. 훨씬 빠르고 확장 가능하며 잘 문서화되어 있으며 많은 통합 패키지와 함께 제공됩니다. 지금은 플라스크를 계속 사용하여 간단한 예측 경로를 설정해 보겠습니다.

플라스크 가져오기 플라스크에서

수입 피클

앱 = 플라스크(__이름__)

파일로 열기(파일 이름, 'rb') 사용:

모델 = pickle.load(파일)

@app.route('/예측', 메소드 = ['GET', 'POST'])

def pre():

# 쿼리나 페이로드를 통해 매개변수를 가져오는 논리를 구현합니다.

예측 = model.predict([얻은 매개변수])

{'결과': 예측} 반환

서버 로직을 어떻게 진행하는지 보여주는 대략적인 코드입니다. 더 나은 구현을 위해 선택할 수 있는 다양한 전략이 있습니다.

체크아웃: Streamlit을 사용한 ML 모델 배포 가이드

배포 파일 설정

Heroku에는 애플리케이션에 필요한 모든 종속성 목록이 필요합니다. 이것을 요구 사항 파일이라고 합니다. 응용 프로그램에서 사용하는 모든 외부 라이브러리를 나열하는 텍스트 파일입니다. 이 예에서 파일 내용에는 다음이 포함됩니다.

플라스크

스켈런

넘넘 </p>

팬더

총기둥

마지막 라이브러리인 gunicorn을 사용하면 HTTP 트래픽을 처리하는 서버와 클라이언트에 대한 인터페이스를 형성하는 WSGI 서버 구현을 설정할 수 있습니다. Heroku는 또한 앱의 진입점을 지정하는 데 사용되는 Procfile이라는 다른 파일을 요구합니다. 서버 로직 파일이 main.py라는 이름으로 저장되었다고 생각하면 이 파일에 넣을 명령은 다음과 같습니다.

웹: gunicorn 메인:앱

"web"은 우리가 배포하는 dyno 유형이고, "gunicorn"은 요청을 서버 코드 "main"에 전달하고 "main"에서 "app"을 검색하는 중재자 역할을 합니다. 앱은 여기에서 모든 경로를 처리합니다.

최종 배포

모든 준비가 끝났고 이제 클라우드에서 앱을 실행할 차례입니다. Heroku가 아닌 경우 계정을 만들고 앱 만들기를 클릭하고 지역을 선택합니다. 그런 다음 GitHub 계정을 연결하고 서버 코드, model.pkl, requirements.txt 및 Procfile 파일이 포함된 리포지토리를 선택합니다.

이 후 단순히 배포 분기를 누르십시오! 성공하면 생성된 링크를 방문하면 앱이 활성화됩니다. 이제 appname.herokuapp.com/predict route에 요청할 수 있으며 예측을 제공해야 합니다. 기계 학습 모델에 대해 자세히 알아보세요.

결론

이것은 Heroku가 무엇인지, 왜 필요한지, Flask의 도움으로 모델을 배포하는 방법에 대한 소개였습니다. 데이터 파이프라인, 스트리밍과 같은 고급 기능을 제공하는 호스팅 플랫폼이 많이 있지만 무료 플랫폼인 Heroku는 배포를 맛보고 싶은 초보자에게 여전히 좋은 선택입니다.

기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

Heroku 플랫폼을 사용할 때의 단점은 무엇입니까?

플랫폼의 문서가 광범위하지 않기 때문에 Heroku는 대기업에 적합하지 않습니다. 또 다른 문제는 읽기 전용 파일 시스템으로, 필름이나 고해상도 사진과 같은 대용량 파일 업로드를 처리하기 어렵습니다. Heroku는 사용자 정의가 제한된 서비스로서의 플랫폼 제공업체입니다. Heroku는 USD로만 결제할 수 있으며 EUR와 같은 다른 통화로는 결제할 수 없습니다. 자국 통화로 지불하는 것을 선호하는 사업주에게는 이것이 약간의 불편이 될 수 있습니다. 또한 CRE(Common Runtime Environment) 내에서 Heroku는 고정 IP 주소를 제공하지 않습니다.

Heroku는 AWS와 어떻게 다릅니까?

AWS의 배포 절차는 간단하지 않으며 결과적으로 복잡성 측면에서 특히 사용자 친화적이지 않습니다. Heroku는 작동이 간단하고 바로 사용할 수 있는 환경을 제공합니다. Heroku는 사람의 개입이 덜 필요하기 때문에 AWS보다 비용이 많이 듭니다. AWS는 높거나 매우 높은 컴퓨팅 요구 사항을 처리할 수 있는 반면 Heroku는 적당한 컴퓨팅 요구 사항을 처리할 수 있습니다. Heroku는 AWS와 달리 정기적인 인프라 유지 관리가 필요하지 않습니다. AWS와 Heroku는 배포와 관련하여 번개처럼 빠릅니다.

Heroku를 얼마 동안 무료로 사용할 수 있습니까?

Heroku 계정에는 무료 앱에서 사용할 수 있는 무료 dyno 시간 풀이 있습니다. 이는 무료 프로그램의 18시간 제한을 대체하여 필요한 경우 하루 24시간 작동할 수 있도록 합니다. 새 계정에는 550시간의 무료 dyno 시간이 제공되며 신용 카드로 신원을 확인하면 추가로 450시간이 제공됩니다. Heroku는 기술을 배우고 시작하는 데 도움이 되는 무료 플랜을 제공합니다. Heroku 버튼 및 빌드팩과 마찬가지로 많은 Heroku 애드온이 무료 플랜을 제공합니다.