중요합니다
- 이 설명서는 사용 중지되었으며 업데이트되지 않을 수 있습니다.
- Databricks는 Unity 카탈로그
기능 엔지니어링을 사용하여 작업 영역에서 기능 테이블을 공유하는 것이 좋습니다. 이 문서의 접근 방식은 더 이상 사용되지 않습니다.
Azure Databricks는 여러 작업 영역에서 기능 테이블 공유를 지원합니다. 예를 들어 사용자 고유의 작업 영역에서 중앙 집중식 기능 저장소의 기능 테이블에서 만들거나 쓰거나 읽을 수 있습니다. 이는 여러 팀이 기능 테이블에 대한 액세스를 공유하거나 조직에 다양한 개발 단계를 처리할 수 있는 여러 작업 영역이 있는 경우에 유용합니다.
중앙 집중식 기능 저장소의 경우 Databricks에서 모든 기능 저장소의 메타데이터를 저장하고, 기능 저장소에 액세스해야 하는 각 사용자의 계정을 만들 수 있는 단일 작업 영역을 지정할 것을 권장합니다.
팀이 모델을 작업 영역 간에 공유하는 경우, 기능 테이블과 모델 모두에 대해 동일한 중앙 집중식 작업 영역을 사용하도록 선택하거나,각각에 대해 서로 다른 중앙 집중식 작업 영역을 지정할 수 있습니다.
중앙 집중식 기능 저장소에 대한 액세스는 토큰으로 제어됩니다. 액세스가 필요한 각 사용자 또는 스크립트는 중앙 집중식 기능 저장소에서 개인용 액세스 토큰을 만들고 로컬 작업 영역의 비밀 관리자에 해당 토큰을 복사합니다. 중앙 집중식 기능 저장소 작업 영역으로 전송되는 각 API 요청에는 액세스 토큰이 포함되어야 합니다. 기능 저장소 클라이언트에서는 작업 영역 간 작업을 수행할 때 사용할 비밀을 지정하는 간단한 메커니즘을 제공합니다.
참고 항목
보안 모범 사례로, 자동화된 도구, 시스템, 스크립트, 앱을 사용하여 인증할 때 Databricks는 작업 영역 사용자 대신 서비스 주체에 속한 개인용 액세스 토큰을 사용하는 것을 권장합니다. 서비스 주체에 대한 토큰을 만들려면 서비스 주체에 대한 토큰 관리를 참조하세요.
요구 사항
작업 영역에서 기능 저장소를 사용하려면 다음이 필요합니다.
- Feature Store 클라이언트 v0.3.6 이상
- 두 작업 영역에서 모두 원시 기능 데이터에 액세스할 수 있어야 합니다. 동일한 외부 Hive 메타스토어를 공유하고 동일한 DBFS 스토리지에 액세스할 수 있어야 합니다.
- IP 액세스 목록을 사용하는 경우 작업 영역 IP 주소가 액세스 목록에 있어야 합니다.
원격 레지스트리에 대한 API 토큰 설정
이 섹션에서 "작업 영역 B"는 중앙 집중식 또는 원격 기능 저장소 작업 영역을 나타냅니다.
작업 영역 B에서 액세스 토큰을 만듭니다.
로컬 작업 공간에서 작업 공간 B에 대한 액세스 토큰 및 정보를 저장할 비밀을 만듭니다 .
비밀 범위를 만듭니다(
databricks secrets create-scope --scope <scope>).여기에
<prefix>표시된 작업 영역 B에 대한 고유 식별자를 선택합니다. 그런 다음, 지정된 키 이름을 사용하여 세 개의 시크릿을 생성합니다 .databricks secrets put --scope <scope> --key <prefix>-host: 작업 영역 B의 호스트 이름을 입력합니다. 다음 Python 명령을 사용하여 작업 영역의 호스트 이름을 가져옵니다.import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_urldatabricks secrets put --scope <scope> --key <prefix>-token: 작업 영역 B에서 액세스 토큰을 입력합니다.databricks secrets put --scope <scope> --key <prefix>-workspace-id: 모든 페이지의 URL에서 찾을 수 있는 작업 영역 B의 작업 영역 ID를 입력합니다.
참고 항목
작업 영역별 비밀 범위 수에
원격 기능 저장소 지정
원격 기능 저장소 작업 영역에 대해 만든 비밀 범위와 이름 접두사를 기준으로 양식의 기능 저장소 URI를 생성할 수 있습니다.
feature_store_uri = f'databricks://<scope>:<prefix>'
그런 다음, FeatureStoreClient를 인스턴스화할 때 URI를 명시적으로 지정합니다.
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
공유 DBFS 위치에 기능 테이블에 대한 데이터베이스 만들기
원격 기능 저장소에서 기능 테이블을 만들기 전에 이를 저장할 데이터베이스를 만들어야 합니다. 데이터베이스는 공유 DBFS 위치에 있어야 합니다.
예를 들어 공유 위치 recommender에 /mnt/shared 데이터베이스를 만들려면 다음 명령을 사용합니다.
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
원격 기능 저장소에서 기능 테이블 만들기
원격 기능 저장소에서 기능 테이블을 만드는 API는 사용 중인 Databricks 런타임 버전에 따라 달라집니다.
V0.3.6 이상
FeatureStoreClient.create_table API 사용:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_table(
name='recommender.customer_features',
primary_keys='customer_id',
schema=customer_features_df.schema,
description='Customer-keyed features'
)
V0.3.5 이하
FeatureStoreClient.create_feature_table API 사용:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_feature_table(
name='recommender.customer_features',
keys='customer_id',
schema=customer_features_df.schema,
description='Customer-keyed features'
)
다른 기능 저장소 방법의 예제는 Notebook 예제를 참조하세요.작업 영역에서 기능 테이블을 공유합니다.
원격 기능 저장소에서 기능 테이블 사용
먼저 FeatureStoreClient.read_table설정하여 feature_store_uri 메서드를 사용하여 원격 기능 저장소의 기능 테이블을 읽을 수 있습니다.
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
기능 테이블에 액세스하기 위한 다른 도우미 메서드도 지원됩니다.
fs.read_table()
fs.get_feature_table() # in v0.3.5 and below
fs.get_table() # in v0.3.6 and above
fs.write_table()
fs.publish_table()
fs.create_training_set()
원격 모델 레지스트리 사용
원격 기능 저장소 URI를 지정하는 것뿐만 아니라 작업 영역에서 모델을 공유할 원격 모델 레지스트리 URI도 지정할 수 있습니다.
모델 로깅 또는 채점용 원격 모델 레지스트리를 지정하려면 모델 레지스트리 URI를 사용하여 FeatureStoreClient를 인스턴스화하면 됩니다.
fs = FeatureStoreClient(model_registry_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.log_model(
model,
"recommendation_model",
flavor=mlflow.sklearn,
training_set=training_set,
registered_model_name="recommendation_model"
)
feature_store_uri 및 model_registry_uri사용하여 로컬 또는 원격 기능 테이블을 사용하여 모델을 학습한 다음 로컬 또는 원격 모델 레지스트리에 모델을 등록할 수 있습니다.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Notebook 예제: 여러 작업 영역 간에 기능 테이블 공유
다음 Notebook에서는 중앙 집중식 기능 저장소를 사용하는 방법을 보여줍니다.
중앙 집중식 기능 저장소 예제 Notebook
노트북 가져오기