wise-aiops
WP-Platform(wp-ml)이 쓰는 것과 동일한 저장 규칙(MySQL 메타DB WISE_PROPHET_V1, 데이터셋
파일 경로, MLflow 트래킹/아티팩트 경로)을 따르는 독립 파이썬 패키지다. JupyterHub/notebook에서도
wp-platform 저장소에 모델과 데이터셋을 저장할 수 있도록 wheel로 빌드해 pip install해서 쓰도록
설계되었다.
빌드 및 설치
빌드
cd projects/wise-aiops
pip install build
python -m build # dist/wise_aiops-0.1.0-py3-none-any.whl 생성
설치
pip install wise_aiops
인터넷 없을 때 설치
pip install wise_aiops-0.1.0-py3-none-any.whl
환경변수 설정 (필수)
기존에는 assets/config/app.config.json 파일을 읽었지만, 이 패키지는 환경변수만으로 동작한다.
| 환경변수 | 설명 |
|---|---|
DB_HOST |
META_DB 호스트 |
DB_PORT |
META_DB 포트 |
DB_USER |
META_DB 사용자 |
DB_PASSWORD |
META_DB 비밀번호 — RSA로 암호화된 base64 문자열 그대로 (평문 아님) |
DB_PRIVATE_KEY |
RSA 개인키 — PEM 텍스트를 그대로 넣거나, 마운트된 키 파일의 경로를 지정(값이 존재하는 파일 경로면 파일로, 아니면 PEM 원문으로 자동 판별) |
DB_NAME |
META_DB 스키마명 |
DS_ID |
데이터셋/모델 저장에 쓸 DS_MSTR.DS_ID |
FILE_FORMAT |
데이터셋 파일 포맷 |
JUPYTER_HUB_USER_NO |
플랫폼 숫자 USER_NO (JupyterHub 스포너가 사용자별로 주입) |
PIP_DIR |
servicePackage.install_package()가 쓸 오프라인 패키지 디렉터리(로컬 wheel/sdist 모음). local_dir 인자를 생략했을 때만 사용됨 |
JupyterHub Spawner 설정에서 사용자별 JUPYTER_HUB_USER_NO, 그리고 나머지 DB_*/DS_ID/
FILE_FORMAT 값들을 환경변수로 설정하여 구성한다.
기능 설명
serviceData : 데이터셋 저장, 불러오기, 목록 조회 기능
-
save_dataset(dataset_name, dataframe, user_no=None, ds_id=None): 데이터셋 저장 가능.DS_VIEW_MSTR/DS_VIEW_TBL_MSTR/DS_VIEW_HISTORY에도 등록되어 data-manager UI 목록에서 조회 가능하다. 같은dataset_name으로 다시 저장하면 새 버전(VIEW_IDX)으로 쌓인다.dataset_name: 데이터셋 이름(DS_VIEW_MSTR.DS_VIEW_NM)dataframe: 저장할pandas.DataFrameuser_no: 생략 시JUPYTER_HUB_USER_NO환경변수ds_id: 저장소 연결 ID(DS_MSTR.DS_ID). 생략 시DS_ID환경변수- ex)
serviceData.save_dataset("aiops_sample_dataset", df, user_no=1000)
-
read_dataset(dataset, version=None, user_no=None, ds_id=None): 저장된 데이터셋을pandas.DataFrame으로 읽어온다.dataset: 숫자(DS_VIEW_ID) 또는 문자열(DS_VIEW_NM) 둘 다 가능version: 생략 시 최신 버전- ex)
serviceData.read_dataset("aiops_sample_dataset")또는serviceData.read_dataset(12, version=2)
-
list_datasets(user_no=None): 사용자가 소유한 데이터셋 목록을 조회한다(스토리지 접근 없이 메타DB만 조회).user_no: 생략 시JUPYTER_HUB_USER_NO환경변수- ex)
print(serviceData.list_datasets())
serviceModel : 모델 저장, 불러오기, 목록 조회 기능
-
save_model(model_obj, arg_type, model_name, *, framework_type=None, scaler=None, sample_data=None, metrics=None, params=None, target=None, label_encoder=None, source_model=None, user_no=None, ds_id=None): 학습된 모델을 MLflow에 저장하고DP_MODEL_MSTR/DP_MODEL_CUSTOM_MSTR에 등록한다.model_obj: 학습된 모델 객체, — 필수arg_type: 알고리즘의 종류, 필수 —"Classification"|"Regression"|"Clustering"이 있음model_name: 모델 이름, 필수 — 같은 이름으로 다시 저장하면 새 모델이 아니라 새 버전(MODEL_IDX)으로 저장됨framework_type: 모델 프레임워크 종류. 'Scikit-learn', 'PyTorch', 'ONNX' 총 3종류가 지원되며 생략 시model_obj타입을 보고 자동 판별scaler: 스케일러 객체sample_data: 학습 데이터 예시(pandas.DataFrame이어야 함) — MLflow signature로 컬럼 스키마가 남아 나중에get_input_schema()로 조회 가능label_encoder: Classification일 때classes_를 가진 인코더 또는 라벨 값 리스트를 직접 지정- ex) 파라미터 전부 다 쓸 경우
serviceModel.save_model(my_model, 'Classification', 'my_model_name', scaler = scaler, framework_type = 'Scikit-learn',sample_data=pd.DataFrame(X_train_scaled, columns=X.columns), label_encoder=targetEncoder.classes_) - ex)
serviceModel.save_model(my_model, 'Classification', 'my_model_name')
-
load_model_file(model, model_idx=None, framework_type=None, user_no=None, ds_id=None): 저장된 모델과 스케일러를 불러오는 기능 MLflow에 저장된 모델과 scaler를 함께 불러온다.model: 숫자(MODEL_ID) 또는 문자열(MODEL_NM)로 모델을 검색model_idx: 생략 시 최신 버전, 숫자면framework_type: 생략 시mlflow.pyfunc.load_model사용- 반환값:
(model, scaler)' — scaler를 저장하지 않았다면 scaler는None` 값을 반환 - ex)
model, scaler = serviceModel.load_model_file("my-model")
-
list_models(model_id="", model_type=None, user_no=None): 모델 목록을 조회하는 기능.model_id: 값이 없으면 전체 목록. 숫자면MODEL_ID, 문자열이면MODEL_NM기준으로 검색model_type:None이면 전체,"normal"이면 커스텀 아닌 것만,"custom"이면 커스텀 모델만 목록으로 불러옴- ex)
serviceModel.list_models()— 전체 모델 리스트 불러오기 - ex)
serviceModel.list_models(model_id="my-model", model_type="custom")- my-model 이 이름인 모델을 커스텀 모델 중에서 불러오기
servicePackage : pip 패키지 설치, 목록 조회, 삭제 기능
-
install_package(package, local_dir=None, upgrade=False, extra_args=None): 인터넷 또는 오프라인 로컬 디렉터리에 있는 패키지를 설치하는 기능.package: 패키지명local_dir: 오프라인 설치 경로. 생략하면PIP_DIR환경변수, 그것도 없으면 인터넷(PyPI)에서 패키지명을 찾아 다운로드upgrade:True면--upgrade추가extra_args:pip install에 추가로 넘길 인자 리스트- ex)
servicePackage.install_package("lightgbm==4.1.0")
-
list_packages(): 현재 파이썬 환경에 설치된 pip 패키지 목록을 조회하는 기능- ex)
print(servicePackage.list_packages())
- ex)
-
uninstall_package(package, extra_args=None): pip으로 패키지를 삭제하는 기능.package: 패키지명 또는 리스트extra_args:pip uninstall에 추가로 넘길 인자 리스트- ex)
servicePackage.uninstall_package("lightgbm")
인터넷이 되는 환경에서는 PyPI에서 바로 설치하고, 인터넷이 차단된 환경에서는 로컬 디렉터리(오프라인
wheel/sdist 모음)에서 설치할 수 있다. 로컬 디렉터리는 local_dir 인자로 넘기거나, 생략하면
PIP_DIR 환경변수를 확인한다 — 우선순위는 local_dir 인자 > PIP_DIR 환경변수 > (둘 다 없으면)
인터넷(PyPI) 설치다.
1) 인터넷에서 설치 (local_dir 미지정, PIP_DIR도 없을 때)
servicePackage.install_package("lightgbm==4.1.0")
2) 로컬 디렉터리에서 오프라인 설치 (인자로 직접 경로 지정)
servicePackage.install_package("lightgbm", local_dir="/opt/offline-packages")
3) PIP_DIR 환경변수로 오프라인 경로 지정 (local_dir 인자 생략)
os.environ["PIP_DIR"] = "/opt/offline-packages" 가 이미 설정되어 있다고 가정
servicePackage.install_package("lightgbm")
여러 패키지를 한 번에
servicePackage.install_package(["lightgbm", "catboost==1.2"])
4) 설치된 패키지 목록 조회 (pandas.DataFrame, columns: name, version)
print(servicePackage.list_packages())
5) 패키지 삭제 (역시 문자열 또는 리스트)
servicePackage.uninstall_package("lightgbm")
패키지 구조
wise_aiops/
__init__.py # 공개 API export (serviceData/serviceModel/servicePackage/WiseAiops)
_settings.py # 환경변수 로딩
_crypto.py # 비밀번호 처리
_db.py # MetaDb — MySQL 접속/조회/삽입/갱신 최소 DAO
_storage.py # LOCAL/HDFS 파일 read/write 디스패치
_mlflow_client.py # MLflow 트래킹/아티팩트 클라이언트
serviceData.py # save_dataset / read_dataset / list_datasets
serviceModel.py # save_model / list_models / load_model_file / load_scaler_file
servicePackage.py # install_package / list_packages / uninstall_package
client.py # WiseAiops 파사드 클래스
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wise_aiops-0.0.2.post1-py3-none-any.whl.
File metadata
- Download URL: wise_aiops-0.0.2.post1-py3-none-any.whl
- Upload date:
- Size: 36.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/4.0.2 CPython/3.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d53c6b33570e9049de81ad71e0c454701c264c8b6fe1dbf2f0abfd523e07876a
|
|
| MD5 |
1ba0103266b06799f77b927cc361943a
|
|
| BLAKE2b-256 |
777f3546a56e7679e5c2a28f043e0436a0627cba0f25fd8f64579b93b87cdfdf
|