보통 분석모델 관리 프로세스는 모델개발, 모델등록, 배포, 모니터링 및 재학습으로 구성됩니다. 이번 글에서는 SAS Model Manager (MM)가 제공하는 API를 통해 분석모델 관리 프로세스가 어떻게 진행되는지 살펴보겠습니다. SAS MM은 모델 컬렉션의 생성 및 관리를 간소화하는 제품입니다. 이 웹 기반 인터페이스를 사용하면 모델 관리 프로세스를 손쉽게 자동화하고, 사용자가 모델링 프로세스의 각 단계별로 진행 상황을 추적할 수 있도록 지원함으로써 보다 효과적인 협업을 실현할 수 있습니다. 반복 가능한 프레임워크 덕분에 분석 모델을 손쉽게 등록, 검증, 추적, 모니터링 및 유지하여 성능을 보장할 수 있습니다. 고객이 서로 다른 모델 유형에 대해 맞춤형 워크플로우를 정의할 수 있으며, 모델과의 상호작용이나 모델 해석에 참여하는 모든 관계자가 각 모델의 통용 여부와 정의 및 기능을 한 눈에 확인할 수 있습니다.
이 글은 SAS MM에 익숙하지만 API 사용에 익숙하지 않은 사용자를 대상으로 합니다. SAS MM이 제공하는 API를 사용하는 이유는 아래와 같습니다.
- Jupyter 노트북이나 기타 통합 개발 환경 (Integrated Development Environment, IDE)에서 분석모델 관리를 원활하게 통합할 수 있습니다.
- SAS MM의 기능 위에 고객의 맞춤형 애플리케이션을 구축할 수 있습니다.
- SAS MM이 DevOps 및 CI/CD (Continuous Integration/Continuous Deployment)와 관련된 고급 ModelOps 프로세스에 내장될 수 있습니다.
SAS MM를 사용하면 단일 중앙 리포지토리에서 SAS 및 오픈 소스 모델을 모두 관리할 수 있습니다. 이는 일반적으로 직관적인 그래픽 사용자 인터페이스 (GUI)를 통해 이루어지지만 오픈 소스 사용자에게 더 유리한 방법은 API를 통해 MM에 액세스하는 것입니다.
Python에서 API 요청하기
Sasctl라는 SAS R&D에서 지원하는 SAS Software Github에서 사용할 수 있는 Python 라이브러리로, Python에서 SAS Viya API 요청 작성을 간소화합니다. Sasctl을 사용하면 MM에 대한 API 요청이 다음과 같이 됩니다.
사용자는 관리하고자 하려는 모델 메타데이터를 제공하는 것 외에 필요한 API 정보를 코딩할 필요가 없습니다. Sasctl 기능은 SAS 마이크로 서비스에 따라 그룹화되고 이 블로그에서는 모델등록만 다루므로 modelRepository 마이크로 서비스와만 상호 작용할 것입니다.
SAS Model Manager의 API를 통해 Python 모델 등록
이제 모델 등록하는 프로세스를 단계별로 살펴보겠습니다. 이를 위해 스크래치와 같은 API를 코딩하는 대신 sasctl을 사용할 것입니다. 단계별 프로세스는 GUI에서 수행하는 동일한 단계와 기능적으로 매우 유사합니다.
GUI에서 다음 단계는 아래와 같습니다.
- 인증
- 모델 리포지토리에서 새 모델 프로젝트 생성
- 모델 프로젝트 변수 및 메타데이터 업데이트
- 새 모델 생성
- 모델 콘텐츠 업로드(학습 코드, 스코링 코드 등)
sasctl을 사용하는 단계는 다음과 같습니다.
- sasctl 가져오기 및 인증
- 모델 리포지토리에서 새 모델 프로젝트 생성
- 모델 리포지토리 UUID 검색
- 모델 리포지토리 UUID를 사용하여 새 모델 프로젝트 생성
- 모델 프로젝트 변수 및 메타데이터 업데이트
- 새 모델 생성
- 모델 콘텐츠 업로드(학습 코드, 채점 코드 등)
sasctl에는 순수한 모델 등록의 편의를 위해 이 전체 시퀀스를 sasctl.register_model()이라는 단일 Python 함수로 수행할 수 있습니다. 그러나 등록 프로세스의 각 개별 단계에서 어떤 일이 발생하는지 분석하는 것이 중요하므로 각 단계를 개별 API 요청으로 진행하겠습니다.
이 예에서 등록하려는 모델은 scikit-learn의 Gradient Boosting 모델이며 Jupyter Notebook에서 이미 학습되었습니다. 이 모델에는 여러 관련 파일을 포함합니다.
- 학습 코드 (gboost_train.py)
- 스코어링 코드 (gboost_score.py)
- Python pickle - 스코어 코드의 일부로 사용되는 모델의 로직이 포함된 바이너리 파일 (gboost_V3_6_8.pkl).
- 모델 생성에 필요한 패키지의 버전 정보가 포함된 요구사항 파일 (requirements.txt)
학습 코드:
스코어링 코드:
피클 파일이 생성된 방법은 다음과 같습니다.
requirements.txt 파일은 일반적으로 작성되지만 여기에서도 Python 코드로 생성할 수 있습니다.
Sasctl에는 편의상 이러한 파일 중 일부를 자동으로 생성하는 내장 유틸리티 기능이 있지만 모델에 비즈니스 목적에 따라 보다 복잡한 요구 사항이나 보다 구체적인 사용자 정의가 있는 경우 사용자는 여전히 이러한 파일을 수동으로 생성하기를 원할 수 있습니다.
- sasctl 가져오기 및 Viya 인증
이제 등록 절차를 시작할 수 있습니다. Python에서는 sasctl 모듈과 관련 기능을 가져와야 합니다. 그런 다음 sasctl 세션을 시작하여 SAS Viya에서 Jupyter Notebook을 인증합니다.
Python 변수 's'는 sasctl 세션 개체이며 후속 API 요청을 인증하는 데 사용하는 인증 토큰을 포함합니다.
2a. 모델 리포지토리 UUID 검색
모델을 생성하려면 새로운 모델 프로젝트를 생성해야 합니다. 이를 위해서는 프로젝트를 생성할 모델 리포지토리를 지정해야 합니다. 이렇게 하려면 API를 사용하여 선택한 리포지토리의 UUID (Universally Unique Identifier)를 검색해야 합니다.
2b. 모델 리포지토리에서 모델 프로젝트 만들기
그런 다음 모델 프로젝트를 생성할 수 있습니다. 여기서 모델 프로젝트 메타데이터를 지정하고 이전 API 호출에서 검색한 리포지토리 정보를 제공합니다.
- 모델 프로젝트 변수 및 메타데이터 업데이트
모델 프로젝트 메타데이터 정보를 업데이트하려는 경우 마치 사전인 것처럼 "project" Python 변수와 상호 작용하고 필요한 변경을 수행할 수 있습니다. 그런 다음 다른 API 요청과 함께 수정된 변수를 제출합니다.
- 모델 만들기
이제 다음과 같이 모델 프로젝트에서 모델 표현을 생성할 수 있습니다.
- 모델 콘텐츠 가져오기
프로젝트를 생성한 후 모델 콘텐츠를 모델에 첨부하고 파일 역할을 할당하여 파일 유형을 지정할 수 있습니다. 파일의 경우 Python open() 함수를 사용하여 데이터를 읽고 API를 통해 보낼 수 있습니다.
Model Manager를 직접 보고 모델 프로젝트와 모델이 올바른 메타데이터와 콘텐츠로 생성되었는지 확인할 수 있습니다.
이상으로 Model Manager API의 개념과 사용 방법, API를 통해 Python 모델을 Model Manager에 등록하는 단계별 프로세스를 소개했습니다. SAS Model Manager의 API를 이해하는 데 도움이 되었기를 바랍니다.