데이터 과학자는 ML 모델을 생성하여 프로덕션 환경에 배포하기 위해 엔지니어링 팀에 넘겨주어 이를 처리합니다. 반대로, 학습된 모델은 데이터 탐색 프로세스 전반에 걸쳐 데이터 과학자(예: 기준선)에 의해 사용될 수 있습니다. 따라서 사용 시나리오 및 프로그래밍 언어에서 모델을 사용할 수 있도록 모델 지속성을 지원하는 것이 중요합니다. 여기에 설명된 단계와 함께 XGBoost4J-Spark를 빌드하지만 USE_HDFS(또는 USE_S3 등)를 같은 장소에서 켜놓습니다. 이 방법을 사용하면 “네이티브ModelPath”를 HDFS 경로로 대체하여 위의 코드 예제를 다시 사용할 수 있습니다. Spark는 데이터 집합이 1기반 인덱싱(1을 응시하는 피처 인덱스)을 사용하고 있다고 가정합니다. 그러나 XGBoost의 다른 바인딩(예: XGBoost의 파이썬 API)으로 예측을 수행하는 경우 XGBoost는 데이터 집합이 기본적으로 0기반 인덱싱(0으로 시작하는 기능 인덱스)을 사용하고 있다고 가정합니다. Spark를 사용하여 모델을 학습하지만 XGBoost의 다른 바인딩에서 동일한 형식으로 데이터 집합을 예측하는 사용자에게 는 함정이 됩니다. 해결 방법은 Python API를 사용하여 예측하기 전에 데이터 집합을 0기반 인덱싱으로 변환하거나 DMatirx로 로드할 때 파일 경로에 ?indexing_mode=1을 부호매 두는 것입니다.

파이썬의 예: 다음 예제에서는 교차 유효성 검사 및 다중 클래스분류평가기를 사용하여 두 개의 XGBoost 매개 변수인 max_depth 및 eta의 최적의 조합을 검색하는 코드 조각을 보여 주십니다. (XGBoost 매개 변수 를 참조하십시오.) 다중 클래스분류평가자에 의해 정의된 최대 정확도를 생성하는 모델이 선택되고 테스트 집합에 대한 예측을 생성하는 데 사용됩니다. 현재 알고리즘은 [4]에 게시된 원래 알고리즘보다 훨씬 더 메모리 효율적입니다. 이것은 주로 불연속화 후 입력 매트릭스의 데이터 압축을 통해 달성된다. 예를 들어 피처당 256개의 히스토그램 저장소와 50개의 피처를 사용하는 경우 전체 입력 행렬에는 256*50의 고유 피쳐 값만 있습니다. 비트 압축을 사용하면 log2(256*50)=14비트만 사용하여 각 행렬 요소를 드문 CSR 형식으로 저장할 수 있습니다. 비교를 위해, 순진한 CSR 스토리지 형식은 일반적으로 매트릭스 요소당 최소 64비트의 비용이 듭니다. 이 섹션에서는 Iris 데이터 집합을 예로 들며 Spark를 사용하여 원시 데이터 집합을 변환하고 XGBoost의 데이터 인터페이스에 맞게 만드는 방법을 보여 줍니다. HDFS, S3 등의 바인딩을 사용하여 모델 파일을 전달합니다. 단계(예: HDFS 를 예로 들자면): 많은 사용자가 동일한 클러스터를 공유하는 프로덕션 환경에서는 XGBoost4J-Spark 응용 프로그램이 모든 실행에 대해 요청된 모든 리소스를 얻을 수 있다고 보장하기가 어렵습니다.

기본적으로 XGBoost의 통신 계층은 사용 가능한 리소스가 더 필요한 경우 전체 응용 프로그램을 차단합니다. 이 프로세스는 일반적으로 준비된 리소스를 유지하고 더 많은 리소스를 요구하기 때문에 불필요한 리소스 낭비를 가져옵니다. 또한, 이것은 일반적으로 자동으로 발생 하 고 사용자의 관심을 끌지 않습니다. 예를 들어 평가 메트릭을 최대화하고(true로 최대화_평가_메트릭 설정) num_early_stopping_rounds를 5로 설정해야 합니다. 10번째 반복의 평가 메트릭은 지금까지 최대 값입니다. 다음 반복에서 10번째 반복(최고 값)보다 큰 평가 메트릭이 없는 경우 15번째 반복에서 트래닝이 일찍 중지됩니다.