배포 공간으로 모델 가져오기
IBM ( Watson Machine Learning ) 외부에서 훈련된 머신러닝 모델을 가져와 배포하고 테스트할 수 있습니다. 모델 가져오기에 사용 가능한 모델 프레임워크를 검토하십시오.
여기서 ‘훈련된 모델을 가져온다’는 것은 다음을 의미합니다:
- 훈련된 모델을 Watson Machine Learning 저장소에 저장하세요
- 선택사항: Watson Machine Learning 서비스에 저장된 모델 배치
및 저장소 는 클러스터의 디렉토리를 의미합니다. 자세한 정보는 배치 영역 작성을 참조하십시오.
사용자 지정 기초 모델을 배포 공간으로 가져오려면 ‘사용자 지정 기초 모델을 공간으로 가져오기’에 나열된 지침을 따르십시오.
다음과 같은 방법으로 모델을 가져올 수 있습니다.
자세한 내용은 다음을 참조하십시오:
Cloud Pak for Data 인스턴스 간에 모델을 프로그래밍 방식으로 전송하려는 경우, ‘배포 공간의 자산’에 설명된 절차를 따르십시오.
Python 클라이언트를 사용하여 프로그래밍 방식으로 모델을 추가하는 방법에 대한 예는 다음 노트북을 참조하십시오.
프레임워크 유형별로 모델을 가져오는 사용 가능한 방법
이 표에는 프레임워크 유형별로 Watson Machine Learning으로 모델을 가져오는 사용 가능한 방법이 나열되어 있습니다.
| 가져오기 옵션 | Spark MLlib | scikit-learn | XGBoost | TensorFlow | PyTorch |
|---|---|---|---|---|---|
| UI를 사용하여 모델 가져오기 | ✓ | ✓ | ✓ | ✓ | |
| 모델 객체 가져오기 | ✓ | ✓ | ✓ | ||
| 파일에 대한 경로를 사용하여 모델 가져오기 | ✓ | ✓ | ✓ | ✓ | |
| 디렉토리에 대한 경로를 사용하여 모델 가져오기 | ✓ | ✓ | ✓ | ✓ |
UI를 사용하여 모델 추가
UI를 사용하여 모델을 가져오려면 다음을 수행하십시오.
PMML 형식으로 모델을 가져오려는 경우 모델 .xml 파일을 직접 가져올 수 있습니다. 다른 모든 형식은 먼저 .zip 아카이브로 저장해야 합니다.
- Watson Machine Learning에 있는 공간의 자산 탭에서 자산 가져오기를 클릭하십시오.
Local file를 선택한 후 모델을 선택하십시오.- 가져올 모델 파일을 선택하고 가져오기를 클릭하십시오.
가져올 파일을 선택하면 가져오기 메커니즘이 사용자가 선택할 수 있도록 일치하는 모델 유형 및 소프트웨어 스펙 목록을 생성합니다.
이 선택에 대한 논리는 다음과 같습니다.
- 아카이브된
.pkl또는.pickle파일: 목록에는 Scikit-learn및 XGBoost 프레임워크와 일치하는 모델 유형 및 소프트웨어 스펙이 포함되어 있습니다. - 아카이브된
.onnx파일: 목록에는 PyTorch 프레임워크와 일치하는 모델 유형 및 소프트웨어 스펙이 포함되어 있습니다. - 아카이브된
.pb,.h5또는.hdf5파일: 목록에는 Tensorflow 모델과 일치하는 모델 유형 및 소프트웨어 스펙이 포함되어 있습니다. .xml파일 (PMML 형식으로 저장된 모델): 가져오기 메커니즘은.xml파일의 버전 문자열을 기반으로 일치하는 모델 유형 및 소프트웨어 스펙을 자동으로 선택합니다.
모델 객체 가져오기
이 가져오기 메소드는 제한된 수의 ML 프레임워크에서 지원됩니다. 자세한 정보는 프레임워크 유형별로 모델을 가져오는 데 사용 가능한 방법을 참조하십시오.
모델 오브젝트를 가져오려면 다음을 수행하십시오.
- 모델이 원격 위치에 있는 경우 원격 위치에 저장된 모델 다운로드를 따르십시오.
- 모델 객체를 Watson Machine Learning 저장소에 저장하세요. 자세한 정보는 Watson Machine Learning 저장소에 모델 저장을 참조하십시오.
파일에 대한 경로를 사용하여 모델 가져오기
이 가져오기 메소드는 제한된 수의 ML 프레임워크에서 지원됩니다. 자세한 정보는 프레임워크 유형별로 모델을 가져오는 데 사용 가능한 방법을 참조하십시오.
파일에 대한 경로를 사용하여 모델을 가져오려면 다음을 수행하십시오.
모델이 원격 위치에 있는 경우 원격 위치에 저장된 모델 다운로드 에 따라 다운로드하십시오.
모델이 로컬에 있는 경우, 특정 디렉터리에 배치하십시오:
!cp <saved model> <target directory> !cd <target directory>Scikit-learn, XGBoost, Tensorflow 및 PyTorch 모델의 경우, 다운로드한 파일이 압축 파일이
.tar.gz아니라면 압축 파일을 생성하십시오:!tar -zcvf <saved model>.tar.gz <saved model>모델 파일은 디렉토리의 최상위 레벨 폴더에 있어야 합니다. 예를 들어, 다음과 같습니다.
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.index저장된 파일의 경로를 사용하여 모델 파일을 Watson Machine Learning 저장소에 저장하세요. 자세한 정보는 Watson Machine Learning 저장소에 모델 저장을 참조하십시오.
디렉토리에 대한 경로를 사용하여 모델 가져오기
이 가져오기 메소드는 제한된 수의 ML 프레임워크에서 지원됩니다. 자세한 정보는 프레임워크 유형별로 모델을 가져오는 데 사용 가능한 방법을 참조하십시오.
디렉토리에 대한 경로를 사용하여 모델을 가져오려면 다음을 수행하십시오.
모델이 원격 위치에 있는 경우, ‘원격 위치에 저장된 모델 다운로드 ’를 참조하십시오.
모델이 로컬에 있는 경우, 특정 디렉터리에 배치하십시오:
!cp <saved model> <target directory> !cd <target directory>scikit-learn, XGBoost, Tensorflow및 PyTorch 모델의 경우, 모델 파일은 디렉토리의 최상위 레벨 폴더에 있어야 합니다. 예를 들어, 다음과 같습니다.
assets/ <saved model> variables/ variables/variables.data-00000-of-00001 variables/variables.indexWatson Machine Learning 저장소에 모델 파일을 저장할 디렉터리 경로를 지정하세요. 자세한 정보는 Watson Machine Learning 저장소에 모델 저장을 참조하십시오.
원격 위치에 저장된 모델 다운로드
다음 예제 코드를 따라 원격 위치에서 모델을 다운로드하세요:
import os
from wget import download
target_dir = '<target directory name>'
if not os.path.isdir(target_dir):
os.mkdir(target_dir)
filename = os.path.join(target_dir, '<model name>')
if not os.path.isfile(filename):
filename = download('<url to model>', out = target_dir)
모델을 가져올 때 고려할 사항
특정 모델 유형 가져오기에 대한 자세한 정보는 다음을 참조하십시오.
Watson Machine Learning에서 사용할 수 있는 프레임워크에 대해 자세히 알아보려면 지원되는 프레임워크를 참조하십시오.
PMML 형식으로 저장된 모델
- PMML에서 가져온 모델에 대해 사용 가능한 유일한 배치 유형은 온라인 배치입니다.
- PMML 파일에는
.xml파일 확장자가 있어야 합니다. - PMML 모델은 SPSS 스트림 흐름에서 사용할 수 없습니다.
- PMML 파일에는 프롤로그가 포함되어서는 안 됩니다. 모델을 저장할 때 사용 중인 라이브러리에 따라 프롤로그가 기본적으로 파일의 시작 부분에 추가될 수 있습니다.
spark-mllib-lr-model-pmml.xml예를 들어, 파일에 와 같은 프롤로그 문자열이 포함되어 있다면, PMML 파일을 배포 공간으로 가져오기 전에 해당 문자열을 제거하십시오.
모델을 저장할 때 사용 중인 라이브러리에 따라 기본적으로 다음 예제와 같이 프롤로그가 파일의 시작 부분에 추가될 수 있습니다.
::::::::::::::
spark-mllib-lr-model-pmml.xml
::::::::::::::
Watson Machine Learning 로 PMML 파일을 가져오려면 먼저 해당 프롤로그를 삭제해야 합니다.
Spark MLlib 모델
- 분류 및 회귀 모델만 사용할 수 있습니다.
- 사용자 정의 변환기, 사용자 정의 함수 및 클래스를 사용할 수 없습니다.
scikit-learn 모델
.pkl및.pickle는 사용 가능한 가져오기 형식입니다.- 모델을 직렬화하거나 피클하려면
joblib패키지를 사용하십시오. - 분류 및 회귀 모델만 사용할 수 있습니다.
predict()API에 대한 Pandas Dataframe 입력 유형을 사용할 수 없습니다.- scikit-learn 모델에 대해 사용 가능한 유일한 배치 유형은 온라인 배치입니다.
XGBoost 모델
.pkl및.pickle는 사용 가능한 가져오기 형식입니다.- 모델을 직렬화하거나 피클하려면
joblib패키지를 사용하십시오. - 분류 및 회귀 모델만 사용할 수 있습니다.
predict()API에 대한 Pandas Dataframe 입력 유형을 사용할 수 없습니다.- XGBoost 모델에 사용 가능한 유일한 배치 유형은 온라인 배치입니다.
TensorFlow 모델
.pb,.h5및.hdf5는 사용 가능한 가져오기 형식입니다.- TensorFlow 모델을 저장하거나 직렬화하려면
tf.saved_model.save()메소드를 사용하십시오. tf.estimator사용할 수 없습니다.- TensorFlow 모델에 사용 가능한 유일한 배치 유형은 온라인 배치 및 일괄처리 배치입니다.
PyTorch 모델
PyTorch 모델에 사용 가능한 유일한 배치 유형은 온라인 배치입니다.
PyTorch 모델을 Watson Machine Learning 로 가져오려면, 해당 모델을 먼저 형식으로
.onnx내보내야 합니다. 이 코드를 참조하십시오.torch.onnx.export(<model object>, <prediction/training input data>, "<serialized model>.onnx", verbose=True, input_names=<input tensor names>, output_names=<output tensor names>)
Watson Machine Learning 저장소에 모델 저장
이 코드를 사용하여 모델을 Watson Machine Learning 저장소에 저장하세요:
from ibm_watson_machine_learning import APIClient
client = APIClient(<your credentials>)
sw_spec_uid = client.software_specifications.get_uid_by_name("<software specification name>")
meta_props = {
client.repository.ModelMetaNames.NAME: "<your model name>",
client.repository.ModelMetaNames.SOFTWARE_SPEC_UID: sw_spec_uid,
client.repository.ModelMetaNames.TYPE: "<model type>"}
client.repository.store_model(model=<your model>, meta_props=meta_props)
참고 :
사용되는 모델 프레임워크에 따라
<your model>는 실제 모델 오브젝트, 저장된 모델 파일의 전체 경로 또는 모델 파일이 있는 디렉토리의 경로일 수 있습니다. 자세한 정보는 프레임워크 유형별로 모델을 가져오는 데 사용 가능한 방법을 참조하십시오.<software specification name>사용 가능한 소프트웨어 사양 목록을 확인하려면 방법을client.software_specifications.list()사용하십시오.사용
model_type가능한 모델 유형 목록은 배포용 소프트웨어 사양 및 하드웨어 사양을 참조하십시오.Py횃불 모델을
.onnx형식으로 내보내는 경우keep_initializers_as_inputs=True플래그를 지정하고opset_version를 9로 설정하십시오. (Watson Machine Learning 배치에서는 9보다 높은 opset 버전을 지원하지 않는caffe2ONNX 런타임을 사용합니다.)torch.onnx.export(net, x, 'lin_reg1.onnx', verbose=True, keep_initializers_as_inputs=True, opset_version=9)