์ปค์คํ
ํ์ต ๋ชจ๋ธ์์ Vertex Explainable AI๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ค๋ช
์ ์์ฒญํ๋ ค๋ Model
๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ฑฐ๋, ๋ชจ๋ธ์ ๋ฐฐํฌํ๊ฑฐ๋, ๋ฐฐ์น ์ค๋ช
์์
์ ์ ์ถํ ๋ ํน์ ์ต์
์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ด ํ์ด์ง์์๋ ์ด๋ฌํ ์ต์
์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
AutoML ํ ์ด๋ธ ํ์ ๋ชจ๋ธ์์ Vertex Explainable AI๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ ๊ตฌ์ฑ์ ์ํํ ํ์๊ฐ ์์ต๋๋ค. Vertex AI๋ Vertex Explainable AI์ฉ ๋ชจ๋ธ์ ์๋์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค. ์ด ๋ฌธ์๋ฅผ ๊ฑด๋๋ฐ๊ณ ์ค๋ช ๋ฐ๊ธฐ๋ฅผ ์ฝ์ด๋ณด์ธ์.
์ค๋ช ๊ตฌ์ฑ ์์ ๋ฐ ์์น
๋ชจ๋ธ์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ ์ค๋ช ์ ๊ตฌ์ฑํฉ๋๋ค. ์ด์ ์ ์ค๋ช ์ ๊ตฌ์ฑํ์ง ์์๋๋ผ๋ ์ด๋ฏธ ๋ง๋ ๋ชจ๋ธ์ ๋ํ ์ค๋ช ์ ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค.
๋ชจ๋ธ์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ ์ค๋ช ๊ตฌ์ฑ
Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ฌ ๋ Model
์ explanationSpec
ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ค๋ช
์ ๋ํ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค.
๋ค์ ๋ฐฉ๋ฒ์ผ๋ก Vertex AI์์ ์ปค์คํ
ํ์ต Model
์ ๋ง๋ค ์ ์์ต๋๋ค.
Model
์ Vertex AI Model Registry๋ก ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฑ๋กํฉ๋๋ค.Model
์ ๊ฐ์ ธ์ค๋ ์ปค์คํ TrainingPipeline
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค.- BigQuery ML ๋ชจ๋ธ์ ๋ง๋ค๊ณ
CREATE MODEL
๊ตฌ๋ฌธ์์ ์ ํ์ model_registry
์ค์ ์ ์ง์ ํฉ๋๋ค. ์ด ์ค์ ์ ๋ชจ๋ธ์ Vertex AI Model Registry์ ์๋์ผ๋ก ๋ฑ๋กํ๊ณexplanationSpec
์ ๊ตฌ์ฑํฉ๋๋ค.
๋ ๊ฒฝ์ฐ ๋ชจ๋ Vertex Explainable AI๋ฅผ ์ง์ํ๋๋ก Model
์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์์ ์์์์๋ Model
์ ๊ฐ์ ธ์จ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. TrainingPipeline
์ ์ฌ์ฉํ์ฌ ์ปค์คํ
ํ์ต Model
์ ๋ง๋ค ๋ Vertex Explainable AI๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์ด ๋ฌธ์์ TrainingPipeline
์ modelToUpload
ํ๋์ ์ค๋ช
๋ ๊ตฌ์ฑ ์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ธ ๋ฐฐํฌ ๋๋ ์ผ๊ด ์์ธก ์ํ ์ ์ค๋ช ๊ตฌ์ฑ
Model
์ Endpoint
๋ฆฌ์์ค์ ๋ฐฐํฌํ๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ํํ ์ ์์ต๋๋ค.
- ๋ชจ๋ธ์ด ์ด์ ์ ์ค๋ช
์ ์ํด ๊ตฌ์ฑ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ค๋ช
์ ๊ตฌ์ฑํฉ๋๋ค. ์ฒ์์ ์ค๋ช
์ ๊ฐ์ ธ์ฌ ์๋๊ฐ ์์์ง๋ง(๋ชจ๋ธ์ ๋ง๋ค ๋
explanationSpec
ํ๋ ์๋ต) ๋์ค์ ๋ชจ๋ธ์ ๋ํ ์ค๋ช ์ ์ํ๊ฑฐ๋ ์ค๋ช ์ค์ ์ผ๋ถ๋ฅผ ์ฌ์ ์ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. - ์ค๋ช
์ค์ง ๋ชจ๋ธ์ด ์ค๋ช
์ ์ํด ๊ตฌ์ฑ๋์์ง๋ง ์๋ํฌ์ธํธ์์ ์ค๋ช
์ ๊ฐ์ ธ์ฌ ๊ณํ์ด ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. ์๋ํฌ์ธํธ์ ๋ชจ๋ธ์ ๋ฐฐํฌํ ๋ ์ค๋ช
์ ์ค์งํ๋ ค๋ฉด Cloud ์ฝ์์ ์ค๋ช
๊ธฐ๋ฅ ์ต์
์ ์ ํ ํด์ ํ๊ฑฐ๋
DeployedModel.disableExplanations
๋ฅผtrue
๋ก ์ค์ ํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, Model
์์ ์ผ๊ด ์์ธก์ ๊ฐ์ ธ์ฌ ๋ BatchPredictionJob.explanationSpec
ํ๋๋ฅผ ์ฑ์ ์ค๋ช
์ ๊ตฌ์ฑํ๊ฑฐ๋ BatchPredictionJob.generateExplanation
์ false
๋ก ์ค์ ํ์ฌ ์ค์งํ ์ ์์ต๋๋ค.
์จ๋ผ์ธ ์ค๋ช ์ ๊ฐ์ ธ์ฌ ๋ ๊ตฌ์ฑ ์ฌ์ ์
์ค๋ช
์ค์ ์ด ์๋ Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์จ ์ฌ๋ถ์ ๊ด๊ณ์์ด, ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌ ์ค์ ์ค๋ช
์ค์ ์ ๊ตฌ์ฑํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์จ๋ผ์ธ ์ค๋ช
์ ๊ฐ์ ธ์ฌ ๋ Model
์ ์ต์ด ์ค๋ช
์ค์ ์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
Vertex AI์ explain
์์ฒญ์ ๋ณด๋ด๋ฉด ์ด์ ์ Model
๋๋ DeployedModel
์ ์ค์ ํ ์ผ๋ถ ์ค๋ช
๊ตฌ์ฑ์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
explain
์์ฒญ ์ ๋ค์ ํ๋๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
- ๋ชจ๋ ์ปค์คํ ํ์ต ๋ชจ๋ธ์ ์ ๋ ฅ ๊ธฐ์ค
- ์ด๋ฏธ์ง ๋ชจ๋ธ์ ์๊ฐํ ๊ตฌ์ฑ
method
๋ฅผ ์ ์ธํExplanationParameters
์ค๋ช ์์ฒญ์ explanationSpecOverride ํ๋์์ ์ด๋ฌํ ์ค์ ์ ์ฌ์ ์ํฉ๋๋ค.
explanationSpec
ํ๋๋ก ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ
์์ธก์ ๊ฒ์ฌํ๋ ๋ฐ ์ฌ์ ๋น๋๋ ์ปจํ
์ด๋ ๋๋ ์ปค์คํ
์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ExplanationSpec
์ ์ง์ ํ๋ ์ธ๋ถ์ ๋ณด๊ฐ ์ฝ๊ฐ ๋ค๋ฆ
๋๋ค. ์ฌ์ฉ ์ค์ธ ์ปจํ
์ด๋์ ์ผ์นํ๋ ํญ์ ์ ํํฉ๋๋ค.
TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋
Vertex Explainable AI์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ฌ ๋ถ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ๋ฐฉ๋ฒ ๋น๊ต๋ฅผ ์ฝ๊ณ Model
์ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ ํํฉ๋๋ค.
์ํ๋ง๋ Shapley
Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๋๊ตฌ์ ๋ฐ๋ผ ๋ค์ ํญ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์. ์ค๋ช ๊ฐ๋ฅ์ฑ ๋จ๊ณ์ ๋๋ฌํ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ๋ํด ์ํ๋ง๋ ๋ชจ์(ํ ํ์ ๋ชจ๋ธ)์ ์ ํํฉ๋๋ค.
๊ฒฝ๋ก ์๋ฅผ ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์์ด ์๋ก ์ค์ ํฉ๋๋ค. ์ด๋
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ชจ๋ธ์ ๊ฐ ์ ๋ ฅ ํน์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
-
์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
-
ํ์ํ ๊ฒฝ์ฐ ํ๋ ์ด์์ ์ ๋ ฅ ๊ธฐ์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Vertex Explainable AI์์ ๋ชจ๋ ๊ฐ์ด 0์ธ ๊ธฐ๋ณธ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํ๋ฉฐ ์ด ๊ธฐ์ค์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ๊ฒ์์ ์ด๋ฏธ์ง์ ๋๋ค.
-
TensorFlow ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ๋ ฅ ํ๋๊ฐ ์์ต๋๋ค.
์ ๋ ฅ ํ ์ ์ด๋ฆ์ ์์ฑํฉ๋๋ค.
ํด๋น๋๋ ๊ฒฝ์ฐ ์์ธ ํ ์ ์ด๋ฆ ๋๋ ๋ฐ๋ ํํ ํ ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ชจ๋ฌ๋ฆฌํฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ํ ์ด๋ธ ํ์ ๋ชจ๋ธ์ ๊ฒฝ์ฐ
NUMERIC
, ์ด๋ฏธ์ง ๋ชจ๋ธ์ ๊ฒฝ์ฐIMAGE
๋ก ์๋ ์ค์ ๋ฉ๋๋ค.ํด๋นํ๋ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค. ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์
IDENTITY
์ ๋๋ค.ํด๋นํ๋ ๊ฒฝ์ฐ ๊ทธ๋ฃน ์ด๋ฆ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค.
-
TensorFlow ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ถ๋ ฅ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
- ํน์ฑ์ ์ถ๋ ฅ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ํน์ฑ์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ํด๋นํ๋ ๊ฒฝ์ฐ ์์ธ ํ์ ์ด๋ฆ ๋งคํ์ ์ค์ ํฉ๋๋ค.
- ํด๋นํ๋ ๊ฒฝ์ฐ ํ์ ์ด๋ฆ ๋งคํ ํค๋ฅผ ์ค์ ํฉ๋๋ค.
์ค๋ช ๊ธฐ๋ฅ ์ค์ ๊ตฌ์ฑ์ ์๋ฃํ์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
gcloud
TensorFlow 2์ ๊ฒฝ์ฐ
ExplanationMetadata
๋ ์ ํ์ฌํญ์ ๋๋ค.๋ค์
ExplanationMetadata
๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ JSON ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ค์ํ์ง ์์ง๋ง ์ด ์์์์๋ ํ์ผ ์ด๋ฆ์explanation-metadata.json
์ผ๋ก ์ง์ ํฉ๋๋ค.explanation-metadata.json
{ "inputs": { "FEATURE_NAME": { "inputTensorName": "INPUT_TENSOR_NAME", } }, "outputs": { "OUTPUT_NAME": { "outputTensorName": "OUTPUT_TENSOR_NAME" } } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- INPUT_TENSOR_NAME: TensorFlow์ ์ ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
- OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_TENSOR_NAME: TensorFlow์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์ ๋ ฅ ๊ธฐ์ค์
ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐModel
์ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Vertex Explainable AI๋ฅผ ์ง์ํ๋
Model
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. Vertex Explainable AI์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ํ๋๊ทธ๊ฐ ๊ฐ์กฐํ์๋ฉ๋๋ค.gcloud ai models upload \ --region=LOCATION \ --display-name=MODEL_NAME \ --container-image-uri=IMAGE_URI \ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \ --explanation-method=sampled-shapley \ --explanation-path-count=PATH_COUNT \ --explanation-metadata-file=explanation-metadata.json
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
PATH_COUNT: ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์นํ ๊ฐ์์ ๋๋ค.
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด
upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
PATH_COUNT: ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์นํ ๊ฐ์์ ๋๋ค.
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค. - FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- INPUT_TENSOR_NAME: TensorFlow์ ์ ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
- OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_TENSOR_NAME: TensorFlow์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์
๋ ฅ ๊ธฐ์ค์ ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐ Model
์ ์
๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.
TensorFlow 2 ๋ชจ๋ธ์ ๊ฒฝ์ฐ metadata
ํ๋๋ ์ ํ์ฌํญ์
๋๋ค. ์๋ตํ๋ฉด Vertex AI๊ฐ ๋ชจ๋ธ์์ inputs
๋ฐ outputs
๋ฅผ ์๋์ผ๋ก ์ถ๋ก ํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "model": { "displayName": "MODEL_NAME", "containerSpec": { "imageUri": "IMAGE_URI" }, "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY", "explanationSpec": { "parameters": { "sampledShapleyAttribution": { "pathCount": PATH_COUNT } }, "metadata": { "inputs": { "FEATURE_NAME": { "inputTensorName": "INPUT_TENSOR_NAME", } }, "outputs": { "OUTPUT_NAME": { "outputTensorName": "OUTPUT_TENSOR_NAME" } } } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content
์ ๋ถ ๊ฒฝ์ฌ
Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๋๊ตฌ์ ๋ฐ๋ผ ๋ค์ ํญ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์. ์ค๋ช ๊ฐ๋ฅ์ฑ ๋จ๊ณ์ ๋๋ฌํ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์์๋ ํตํฉ ๊ทธ๋๋์ธํธ(ํ ํ์ ๋ชจ๋ธ์ฉ) ๋๋ ํตํฉ ๊ทธ๋๋์ธํธ(์ด๋ฏธ์ง ๋ถ๋ฅ ๋ชจ๋ธ์ฉ) ์ค์์ ๋ชจ๋ธ์ ์ ์ ํ ๊ฒ์ ์ ํํฉ๋๋ค.
์ด๋ฏธ์ง ๋ถ๋ฅ ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ๋ค์์ ์ํํฉ๋๋ค.
์๊ฐํ ์ ํ ๋ฐ ์์ ์ฒ๋๋ฅผ ์ค์ ํฉ๋๋ค.
์๋ ํด๋ฆฝ, ์ ํด๋ฆฝ, ์ค๋ฒ๋ ์ด ์ ํ, ์ ๋ถ ๋จ๊ณ ์๋ ๊ธฐ๋ณธ ์ค์ ๊ทธ๋๋ก ๋์ด๋ ๋ฉ๋๋ค.
์๊ฐํ ์ค์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ์ ๊ฒฝ๋ก ์ ๋ถ์ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋จ๊ณ ์๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๋
[1, 100]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
50
๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ชจ๋ธ์ ๊ฐ ์ ๋ ฅ ํน์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
-
์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
-
ํ์ํ ๊ฒฝ์ฐ ํ๋ ์ด์์ ์ ๋ ฅ ๊ธฐ์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Vertex Explainable AI์์ ๋ชจ๋ ๊ฐ์ด 0์ธ ๊ธฐ๋ณธ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํ๋ฉฐ ์ด ๊ธฐ์ค์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ๊ฒ์์ ์ด๋ฏธ์ง์ ๋๋ค.
-
TensorFlow ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ๋ ฅ ํ๋๊ฐ ์์ต๋๋ค.
์ ๋ ฅ ํ ์ ์ด๋ฆ์ ์์ฑํฉ๋๋ค.
ํด๋น๋๋ ๊ฒฝ์ฐ ์์ธ ํ ์ ์ด๋ฆ ๋๋ ๋ฐ๋ ํํ ํ ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ชจ๋ฌ๋ฆฌํฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ํ ์ด๋ธ ํ์ ๋ชจ๋ธ์ ๊ฒฝ์ฐ
NUMERIC
, ์ด๋ฏธ์ง ๋ชจ๋ธ์ ๊ฒฝ์ฐIMAGE
๋ก ์๋ ์ค์ ๋ฉ๋๋ค.ํด๋นํ๋ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค. ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์
IDENTITY
์ ๋๋ค.ํด๋นํ๋ ๊ฒฝ์ฐ ๊ทธ๋ฃน ์ด๋ฆ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค.
-
TensorFlow ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ถ๋ ฅ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
- ํน์ฑ์ ์ถ๋ ฅ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ํน์ฑ์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ํด๋นํ๋ ๊ฒฝ์ฐ ์์ธ ํ์ ์ด๋ฆ ๋งคํ์ ์ค์ ํฉ๋๋ค.
- ํด๋นํ๋ ๊ฒฝ์ฐ ํ์ ์ด๋ฆ ๋งคํ ํค๋ฅผ ์ค์ ํฉ๋๋ค.
์ค๋ช ๊ธฐ๋ฅ ์ค์ ๊ตฌ์ฑ์ ์๋ฃํ์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
gcloud
TensorFlow 2์ ๊ฒฝ์ฐ
ExplanationMetadata
๋ ์ ํ์ฌํญ์ ๋๋ค.๋ค์
ExplanationMetadata
๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ JSON ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ค์ํ์ง ์์ง๋ง ์ด ์์์์๋ ํ์ผ ์ด๋ฆ์explanation-metadata.json
์ผ๋ก ์ง์ ํฉ๋๋ค.explanation-metadata.json
{ "inputs": { "FEATURE_NAME": { "inputTensorName": "INPUT_TENSOR_NAME", "modality": "MODALITY", "visualization": VISUALIZATION_SETTINGS } }, "outputs": { "OUTPUT_NAME": { "outputTensorName": "OUTPUT_TENSOR_NAME" } } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- INPUT_TENSOR_NAME: TensorFlow์ ์ ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
-
MODALITY:
Model
์์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฉํ๋ ๊ฒฝ์ฐimage
,Model
์์ ํ ์ด๋ธ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฉํ๋ ๊ฒฝ์ฐnumeric
์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์numeric
์ ๋๋ค. -
VIZUALIZATION_OPTIONS: ์ค๋ช ์ ์๊ฐํํ๊ธฐ ์ํ ์ต์ ์ ๋๋ค. ์ด ํ๋๋ฅผ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์๊ฐํ ์ค์ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
modality
ํ๋๋ฅผ ์๋ตํ๊ฑฐ๋modality
ํ๋๋ฅผnumeric
์ผ๋ก ์ค์ ํ๊ณvisualization
ํ๋๋ฅผ ์์ ํ ์๋ตํฉ๋๋ค. - OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_TENSOR_NAME: TensorFlow์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์ ๋ ฅ ๊ธฐ์ค์
ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐModel
์ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Vertex Explainable AI๋ฅผ ์ง์ํ๋
Model
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. Vertex Explainable AI์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ํ๋๊ทธ๊ฐ ๊ฐ์กฐํ์๋ฉ๋๋ค.gcloud ai models upload \ --region=LOCATION \ --display-name=MODEL_NAME \ --container-image-uri=IMAGE_URI \ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \ --explanation-method=integrated-gradients \ --explanation-step-count=STEP_COUNT \ --explanation-metadata-file=explanation-metadata.json
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
STEP_COUNT: ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ์ ๊ฒฝ๋ก ์ ๋ถ์ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋จ๊ณ ์์
๋๋ค.
[1, 100]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
50
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด
upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.ํ์์ ๋ฐ๋ผ ๊ฒฝ์ฌ์ SmoothGrad ๊ทผ์ฌ๊ฐ์ ๊ตฌ์ฑํ๋ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
STEP_COUNT: ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ์ ๊ฒฝ๋ก ์ ๋ถ์ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋จ๊ณ ์์
๋๋ค.
[1, 100]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
50
๋ฅผ ์ฌ์ฉํฉ๋๋ค. - FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- INPUT_TENSOR_NAME: TensorFlow์ ์ ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
-
MODALITY:
Model
์์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฉํ๋ ๊ฒฝ์ฐimage
,Model
์์ ํ ์ด๋ธ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ํ์ฉํ๋ ๊ฒฝ์ฐnumeric
์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์numeric
์ ๋๋ค. -
VIZUALIZATION_OPTIONS: ์ค๋ช ์ ์๊ฐํํ๊ธฐ ์ํ ์ต์ ์ ๋๋ค. ์ด ํ๋๋ฅผ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์๊ฐํ ์ค์ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
modality
ํ๋๋ฅผ ์๋ตํ๊ฑฐ๋modality
ํ๋๋ฅผnumeric
์ผ๋ก ์ค์ ํ๊ณvisualization
ํ๋๋ฅผ ์์ ํ ์๋ตํฉ๋๋ค. - OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_TENSOR_NAME: TensorFlow์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์
๋ ฅ ๊ธฐ์ค์ ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐ Model
์ ์
๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.
์ํ๋ ๊ฒฝ์ฐ ExplanationParameters
์ ๊ฒฝ์ฌ์ SmoothGrad ๊ทผ์ฌ๊ฐ์ ๊ตฌ์ฑํ๋ ํ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
TensorFlow 2 ๋ชจ๋ธ์ ๊ฒฝ์ฐ metadata
ํ๋๋ ์ ํ์ฌํญ์
๋๋ค. ์๋ตํ๋ฉด Vertex AI๊ฐ ๋ชจ๋ธ์์ inputs
๋ฐ outputs
๋ฅผ ์๋์ผ๋ก ์ถ๋ก ํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "model": { "displayName": "MODEL_NAME", "containerSpec": { "imageUri": "IMAGE_URI" }, "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY", "explanationSpec": { "parameters": { "integratedGradientsAttribution": { "stepCount": STEP_COUNT } }, "metadata": { "inputs": { "FEATURE_NAME": { "inputTensorName": "INPUT_TENSOR_NAME", "modality": "MODALITY", "visualization": VISUALIZATION_SETTINGS } }, "outputs": { "OUTPUT_NAME": { "outputTensorName": "OUTPUT_TENSOR_NAME" } } } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content
XRAI
Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๋๊ตฌ์ ๋ฐ๋ผ ๋ค์ ํญ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์. ์ค๋ช ๊ฐ๋ฅ์ฑ ๋จ๊ณ์ ๋๋ฌํ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ๊ฒฝ์ฐ XRAI(์ด๋ฏธ์ง ๋ถ๋ฅ ๋ชจ๋ธ์ฉ)๋ฅผ ์ ํํฉ๋๋ค.
๋ค์ ์๊ฐํ ์ต์ ์ ์ค์ ํฉ๋๋ค.
์์ ์ฒ๋๋ฅผ ์ค์ ํฉ๋๋ค.
์๋ ํด๋ฆฝ, ์ ํด๋ฆฝ, ์ค๋ฒ๋ ์ด ์ ํ, ์ ๋ถ ๋จ๊ณ ์๋ ๊ธฐ๋ณธ ์ค์ ๊ทธ๋๋ก ๋์ด๋ ๋ฉ๋๋ค.
์๊ฐํ ์ค์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ์ ๊ฒฝ๋ก ์ ๋ถ์ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋จ๊ณ ์๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๋
[1, 100]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
50
๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ชจ๋ธ์ ๊ฐ ์ ๋ ฅ ํน์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
-
์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
-
ํ์ํ ๊ฒฝ์ฐ ํ๋ ์ด์์ ์ ๋ ฅ ๊ธฐ์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Vertex Explainable AI์์ ๋ชจ๋ ๊ฐ์ด 0์ธ ๊ธฐ๋ณธ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํ๋ฉฐ ์ด ๊ธฐ์ค์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ๊ฒ์์ ์ด๋ฏธ์ง์ ๋๋ค.
-
TensorFlow ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ๋ ฅ ํ๋๊ฐ ์์ต๋๋ค.
์ ๋ ฅ ํ ์ ์ด๋ฆ์ ์์ฑํฉ๋๋ค.
ํด๋น๋๋ ๊ฒฝ์ฐ ์์ธ ํ ์ ์ด๋ฆ ๋๋ ๋ฐ๋ ํํ ํ ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ชจ๋ฌ๋ฆฌํฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ํ ์ด๋ธ ํ์ ๋ชจ๋ธ์ ๊ฒฝ์ฐ
NUMERIC
, ์ด๋ฏธ์ง ๋ชจ๋ธ์ ๊ฒฝ์ฐIMAGE
๋ก ์๋ ์ค์ ๋ฉ๋๋ค.ํด๋นํ๋ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค. ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์
IDENTITY
์ ๋๋ค.ํด๋นํ๋ ๊ฒฝ์ฐ ๊ทธ๋ฃน ์ด๋ฆ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค.
-
TensorFlow ๋ชจ๋ธ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ถ๋ ฅ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
- ํน์ฑ์ ์ถ๋ ฅ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ํน์ฑ์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ํด๋นํ๋ ๊ฒฝ์ฐ ์์ธ ํ์ ์ด๋ฆ ๋งคํ์ ์ค์ ํฉ๋๋ค.
- ํด๋นํ๋ ๊ฒฝ์ฐ ํ์ ์ด๋ฆ ๋งคํ ํค๋ฅผ ์ค์ ํฉ๋๋ค.
์ค๋ช ๊ธฐ๋ฅ ์ค์ ๊ตฌ์ฑ์ ์๋ฃํ์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
gcloud
TensorFlow 2์ ๊ฒฝ์ฐ
ExplanationMetadata
๋ ์ ํ์ฌํญ์ ๋๋ค.๋ค์
ExplanationMetadata
๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ JSON ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ค์ํ์ง ์์ง๋ง ์ด ์์์์๋ ํ์ผ ์ด๋ฆ์explanation-metadata.json
์ผ๋ก ์ง์ ํฉ๋๋ค.explanation-metadata.json
{ "inputs": { "FEATURE_NAME": { "inputTensorName": "INPUT_TENSOR_NAME", "modality": "image", "visualization": VISUALIZATION_SETTINGS } }, "outputs": { "OUTPUT_NAME": { "outputTensorName": "OUTPUT_TENSOR_NAME" } } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- INPUT_TENSOR_NAME: TensorFlow์ ์ ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
- VIZUALIZATION_OPTIONS: ์ค๋ช ์ ์๊ฐํํ๊ธฐ ์ํ ์ต์ ์ ๋๋ค. ์ด ํ๋๋ฅผ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์๊ฐํ ์ค์ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
- OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_TENSOR_NAME: TensorFlow์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์ ๋ ฅ ๊ธฐ์ค์
ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐModel
์ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Vertex Explainable AI๋ฅผ ์ง์ํ๋
Model
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. Vertex Explainable AI์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ํ๋๊ทธ๊ฐ ๊ฐ์กฐํ์๋ฉ๋๋ค.gcloud ai models upload \ --region=LOCATION \ --display-name=MODEL_NAME \ --container-image-uri=IMAGE_URI \ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \ --explanation-method=xrai \ --explanation-step-count=STEP_COUNT \ --explanation-metadata-file=explanation-metadata.json
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
STEP_COUNT: ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ์ ๊ฒฝ๋ก ์ ๋ถ์ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋จ๊ณ ์์
๋๋ค.
[1, 100]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
50
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด
upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.ํ์์ ๋ฐ๋ผ ๊ฒฝ์ฌ์ SmoothGrad ๊ทผ์ฌ๊ฐ์ ๊ตฌ์ฑํ๋ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ TensorFlow ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
STEP_COUNT: ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ์ ๊ฒฝ๋ก ์ ๋ถ์ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋จ๊ณ ์์
๋๋ค.
[1, 100]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
50
๋ฅผ ์ฌ์ฉํฉ๋๋ค. - FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- INPUT_TENSOR_NAME: TensorFlow์ ์ ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
- VIZUALIZATION_OPTIONS: ์ค๋ช ์ ์๊ฐํํ๊ธฐ ์ํ ์ต์ ์ ๋๋ค. ์ด ํ๋๋ฅผ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์๊ฐํ ์ค์ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
- OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_TENSOR_NAME: TensorFlow์ ์ถ๋ ฅ ํ ์ ์ด๋ฆ์ ๋๋ค. ์ด ํ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Vertex Explainable AI์์ TensorFlow ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์
๋ ฅ ๊ธฐ์ค์ ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐ Model
์ ์
๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.
์ํ๋ ๊ฒฝ์ฐ ExplanationParameters
์ ๊ฒฝ์ฌ์ SmoothGrad ๊ทผ์ฌ๊ฐ์ ๊ตฌ์ฑํ๋ ํ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
TensorFlow 2 ๋ชจ๋ธ์ ๊ฒฝ์ฐ metadata
ํ๋๋ ์ ํ์ฌํญ์
๋๋ค. ์๋ตํ๋ฉด Vertex AI๊ฐ ๋ชจ๋ธ์์ inputs
๋ฐ outputs
๋ฅผ ์๋์ผ๋ก ์ถ๋ก ํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "model": { "displayName": "MODEL_NAME", "containerSpec": { "imageUri": "IMAGE_URI" }, "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY", "explanationSpec": { "parameters": { "xraiAttribution": { "stepCount": STEP_COUNT } }, "metadata": { "inputs": { "FEATURE_NAME": { "inputTensorName": "INPUT_TENSOR_NAME", "modality": "image", "visualization": VISUALIZATION_SETTINGS } }, "outputs": { "OUTPUT_NAME": { "outputTensorName": "OUTPUT_TENSOR_NAME" } } } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content
scikit-learn ๋ฐ XGBoost์ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋
Model
์ด ํ
์ด๋ธ ํ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ๊ณ ์ฌ์ ๋น๋๋ scikit-learn ๋๋ XGBoost์ ์ปจํ
์ด๋ ์์ธก์ ์ฌ์ฉํ์ฌ ์์ธก์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ ์ค๋ช
์ ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๋๊ตฌ์ ๋ฐ๋ผ ๋ค์ ํญ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์. ์ค๋ช ๊ฐ๋ฅ์ฑ ๋จ๊ณ์ ๋๋ฌํ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ๋ํด ์ํ๋ง๋ ๋ชจ์(ํ ํ์ ๋ชจ๋ธ)์ ์ ํํฉ๋๋ค.
๊ฒฝ๋ก ์๋ฅผ ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์์ด ์๋ก ์ค์ ํฉ๋๋ค. ์ด๋
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ชจ๋ธ์ ๊ฐ ์ ๋ ฅ ํน์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
๋ชจ๋ธ ์ํฐํฉํธ์ ํน์ฑ ์ด๋ฆ์ด ์์ผ๋ฉด Vertex AI๊ฐ ์ง์ ๋ ์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ๋ชจ๋ธ์ ๋งคํํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ
input_features
์ ๊ฐ์ด ์ฌ์ฉ์ ์นํ์ ์ธ ์์์ ์ด๋ฆ์ ๊ฐ์ง ์ ๋ ฅ ํน์ฑ ํ๋๋ง ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ค๋ช ์๋ต์์ ๊ธฐ์ฌ ๋ถ์์ N์ฐจ์ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ์ฌ๊ธฐ์ N์ ๋ชจ๋ธ์ ํน์ฑ ์์ด๊ณ ๋ชฉ๋ก์ ์์๋ ํ์ต ๋ฐ์ดํฐ ์ธํธ์ ๋์ผํ ์์๋ก ํ์๋ฉ๋๋ค.ํ์ํ ๊ฒฝ์ฐ ํ๋ ์ด์์ ์ ๋ ฅ ๊ธฐ์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Vertex Explainable AI์์ ๋ชจ๋ ๊ฐ์ด 0์ธ ๊ธฐ๋ณธ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํ๋ฉฐ ์ด ๊ธฐ์ค์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ๊ฒ์์ ์ด๋ฏธ์ง์ ๋๋ค.
ํน์ฑ์ ์ถ๋ ฅ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
์ค๋ช ๊ธฐ๋ฅ ์ค์ ๊ตฌ์ฑ์ ์๋ฃํ์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์
ExplanationMetadata
๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ JSON ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ค์ํ์ง ์์ง๋ง ์ด ์์์์๋ ํ์ผ ์ด๋ฆ์explanation-metadata.json
์ผ๋ก ์ง์ ํฉ๋๋ค.explanation-metadata.json
{ "inputs": { "FEATURE_NAME": { } }, "outputs": { "OUTPUT_NAME": { } } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
์ ๋ ฅ ๊ธฐ์ค์ ์ง์ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ธ์ ์ ๋ ฅ(์ผ๋ฐ์ ์ผ๋ก 2-D ํ๋ ฌ ๋ชฉ๋ก)๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ๋ ฅ ๊ธฐ์ค์ ๊ธฐ๋ณธ๊ฐ์ ์ ๋ ฅ ํํ์ 0 ๊ฐ 2-D ํ๋ ฌ์ ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Vertex Explainable AI๋ฅผ ์ง์ํ๋
Model
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. Vertex Explainable AI์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ํ๋๊ทธ๊ฐ ๊ฐ์กฐํ์๋ฉ๋๋ค.gcloud ai models upload \ --region=LOCATION \ --display-name=MODEL_NAME \ --container-image-uri=IMAGE_URI \ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \ --explanation-method=sampled-shapley \ --explanation-path-count=PATH_COUNT \ --explanation-metadata-file=explanation-metadata.json
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
PATH_COUNT: ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์นํ ๊ฐ์์ ๋๋ค.
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด
upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- IMAGE_URI: ์์ธก ์ ๊ณต์ ์ํ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ URI์ ๋๋ค.
-
PATH_COUNT: ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์นํ ๊ฐ์์ ๋๋ค.
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค. - FEATURE_NAME: ์ ๋ ฅ ํน์ฑ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
- OUTPUT_NAME: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ๋ ฅ ๊ธฐ์ค์ ์ง์ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ธ์ ์ ๋ ฅ(์ผ๋ฐ์ ์ผ๋ก 2-D ํ๋ ฌ ๋ชฉ๋ก)๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ๋ ฅ ๊ธฐ์ค์ ๊ธฐ๋ณธ๊ฐ์ ์ ๋ ฅ ํํ์ 0 ๊ฐ 2-D ํ๋ ฌ์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "model": { "displayName": "MODEL_NAME", "containerSpec": { "imageUri": "IMAGE_URI" }, "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY", "explanationSpec": { "parameters": { "sampledShapleyAttribution": { "pathCount": PATH_COUNT } }, "metadata": { "inputs": { "FEATURE_NAME": { } }, "outputs": { "OUTPUT_NAME": { } } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content
์ปค์คํ ์ปจํ ์ด๋
Model
์ด ํ
์ด๋ธ ํ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ์ผ๋ก ํ์ฉํ๊ณ ์ปค์คํ
์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ธก์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ, ์ค๋ช
์ ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ ๋ฐ ์ถ๋ ฅ ์ด๋ฆ ํ์ธ
๋ค์ ๋จ๊ณ์์๋ Model
์ด ์
๋ ฅ์ผ๋ก ์์ํ๋ ํน์ฑ ์ด๋ฆ์ Vertex AI์ ์ ๊ณตํด์ผ ํฉ๋๋ค. Model
์ ์์ธก์์ ์ถ๋ ฅ์ ์ฌ์ฉ๋๋ ํค๋ ์ง์ ํด์ผ ํฉ๋๋ค.
ํน์ฑ ์ด๋ฆ ๊ฒฐ์
Model
์ด ๊ฐ ์
๋ ฅ ์ธ์คํด์ค์ ํน์ ํ ์ต์์ ํค๊ฐ ์์ ๊ฒ์ ์์ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ํค๋ ํน์ฑ ์ด๋ฆ์
๋๋ค.
์๋ฅผ ๋ค์ด Model
์ด ๊ฐ ์
๋ ฅ ์ธ์คํด์ค์ ํ์์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ผ๋ก ์์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
{
"length": <value>,
"width": <value>
}
์ด ๊ฒฝ์ฐ ํน์ฑ ์ด๋ฆ์ length
๋ฐ width
์
๋๋ค. ์ด ํ๋์ ๊ฐ์ ์ค์ฒฉ๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ฒด๊ฐ ํฌํจ๋์ด ์๋๋ผ๋ length
๋ฐ width
๊ฐ ๋ค์ ๋จ๊ณ์ ํ์ํ ์ ์ผํ ํค์
๋๋ค. ์ค๋ช
์ ์์ฒญํ๋ฉด Vertex Explainable AI๋ ํน์ฑ์ ๊ฐ ์ค์ฒฉ๋ ์์์ ๋ํ ๊ธฐ์ฌ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
Model
์ ํค๊ฐ ์๋ ์
๋ ฅ์ด ์์๋๋ ๊ฒฝ์ฐ Vertex Explainable AI๋ Model
์ ๋จ์ผ ํน์ฑ์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. ํน์ฑ ์ด๋ฆ์ผ๋ก ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด Model
์ด ๊ฐ ์
๋ ฅ ์ธ์คํด์ค์ ํ์์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ผ๋ก ์์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
[
<value>,
<value>
]
์ด ๊ฒฝ์ฐ Vertex Explainable AI์ dimensions
์ ๊ฐ์ด ์ํ๋ ๋จ์ผ ํน์ฑ ์ด๋ฆ์ ์ ๊ณตํฉ๋๋ค.
์ถ๋ ฅ ์ด๋ฆ ๊ฒฐ์
Model
์ด ํค๊ฐ ์ง์ ๋ ์ถ๋ ฅ์ด ์๋ ๊ฐ ์จ๋ผ์ธ ์์ธก ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ ์ด ํค๋ ์ถ๋ ฅ ์ด๋ฆ์
๋๋ค.
์๋ฅผ ๋ค์ด Model
์ด ๊ฐ ์์ธก์ ๋ค์ ํ์์ผ๋ก ๋ฐํํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
{
"scores": <value>
}
์ด ๊ฒฝ์ฐ ์ถ๋ ฅ ์ด๋ฆ์ scores
์
๋๋ค. scores
ํ๋ ๊ฐ์ด ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ์ค๋ช
์ ๊ฐ์ ธ์ค๋ฉด Vertex Explainable AI๊ฐ ๊ฐ ์์ธก์์ ๊ฐ์ฅ ๋์ ๊ฐ์ ๊ฐ์ง ์์์ ํน์ฑ ๊ธฐ์ฌ ๋ถ์์ ๋ฐํํฉ๋๋ค. ์ถ๋ ฅ ํ๋์ ์ถ๊ฐ ์์์ ํน์ฑ ๊ธฐ์ฌ ๋ถ์์ ์ ๊ณตํ๋๋ก Vertex Explainable AI๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ExplanationParameters
์ topK
๋๋outputIndices
ํ๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ๋ฌธ์์ ์์์์๋ ์ด๋ฌํ ์ต์
์ ๋ณด์ฌ์ฃผ์ง ์์ต๋๋ค.
Model
์ด ํค๊ฐ ์ง์ ๋์ง ์์ ์์ธก์ ๋ฐํํ๋ฉด ์ถ๋ ฅ ์ด๋ฆ์ ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ Model
์ด ๊ฐ ์์ธก์ ๋ํด ๋ฐฐ์ด ๋๋ ์ค์นผ๋ผ๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ ์ ์ฉ๋ฉ๋๋ค.
Model
๋ง๋ค๊ธฐ
Model
์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉํ ๋๊ตฌ์ ๋ฐ๋ผ ๋ค์ ํญ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์. ์ค๋ช ๊ฐ๋ฅ์ฑ ๋จ๊ณ์ ๋๋ฌํ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
ํน์ฑ ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ๋ํด ์ํ๋ง๋ ๋ชจ์(ํ ํ์ ๋ชจ๋ธ)์ ์ ํํฉ๋๋ค.
๊ฒฝ๋ก ์๋ฅผ ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์์ด ์๋ก ์ค์ ํฉ๋๋ค. ์ด๋
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ชจ๋ธ์ ๊ฐ ์ ๋ ฅ ํน์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
๋ชจ๋ธ ์ํฐํฉํธ์ ํน์ฑ ์ด๋ฆ์ด ์์ผ๋ฉด Vertex AI๊ฐ ์ง์ ๋ ์ ๋ ฅ ํน์ฑ ์ด๋ฆ์ ๋ชจ๋ธ์ ๋งคํํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ
input_features
์ ๊ฐ์ด ์ฌ์ฉ์ ์นํ์ ์ธ ์์์ ์ด๋ฆ์ ๊ฐ์ง ์ ๋ ฅ ํน์ฑ ํ๋๋ง ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ค๋ช ์๋ต์์ ๊ธฐ์ฌ ๋ถ์์ N์ฐจ์ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ์ฌ๊ธฐ์ N์ ๋ชจ๋ธ์ ํน์ฑ ์์ด๊ณ ๋ชฉ๋ก์ ์์๋ ํ์ต ๋ฐ์ดํฐ ์ธํธ์ ๋์ผํ ์์๋ก ํ์๋ฉ๋๋ค.ํ์ํ ๊ฒฝ์ฐ ํ๋ ์ด์์ ์ ๋ ฅ ๊ธฐ์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Vertex Explainable AI์์ ๋ชจ๋ ๊ฐ์ด 0์ธ ๊ธฐ๋ณธ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํ๋ฉฐ ์ด ๊ธฐ์ค์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ๊ฒ์์ ์ด๋ฏธ์ง์ ๋๋ค.
ํน์ฑ์ ์ถ๋ ฅ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
์ค๋ช ๊ธฐ๋ฅ ์ค์ ๊ตฌ์ฑ์ ์๋ฃํ์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ค์
ExplanationMetadata
๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ JSON ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ด๋ฆ์ ์ค์ํ์ง ์์ง๋ง ์ด ์์์์๋ ํ์ผ ์ด๋ฆ์explanation-metadata.json
์ผ๋ก ์ง์ ํฉ๋๋ค.explanation-metadata.json
{ "inputs": { "FEATURE_NAME": {} }, "outputs": { "OUTPUT_NAME": {} } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- FEATURE_NAME: ์ด ๋ฌธ์์ 'ํน์ฑ ์ด๋ฆ ๊ฒฐ์ ' ์น์ ์ ์ค๋ช ๋ ํน์ฑ ์ด๋ฆ์ ๋๋ค.
- OUTPUT_NAME: ์ด ๋ฌธ์์ '์ถ๋ ฅ ์ด๋ฆ ๊ฒฐ์ ' ์น์ ์ ์ค๋ช ๋ ์ถ๋ ฅ ์ด๋ฆ์ ๋๋ค.
์ ํ์ฌํญ์ผ๋ก ์ ๋ ฅ ๊ธฐ์ค์
ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐModel
์ ์ ๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.์ ๋ ฅ ๊ธฐ์ค์ ์ง์ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ธ์ ์ ๋ ฅ(์ผ๋ฐ์ ์ผ๋ก 2-D ํ๋ ฌ ๋ชฉ๋ก)๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ๋ ฅ ๊ธฐ์ค์ ๊ธฐ๋ณธ๊ฐ์ ์ ๋ ฅ ํํ์ 0 ๊ฐ 2-D ํ๋ ฌ์ ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Vertex Explainable AI๋ฅผ ์ง์ํ๋
Model
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. Vertex Explainable AI์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ํ๋๊ทธ๊ฐ ๊ฐ์กฐํ์๋ฉ๋๋ค.gcloud ai models upload \ --region=LOCATION \ --display-name=MODEL_NAME \ --container-image-uri=IMAGE_URI \ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY \ --explanation-method=sampled-shapley \ --explanation-path-count=PATH_COUNT \ --explanation-metadata-file=explanation-metadata.json
๋ค์์ ๋ฐ๊ฟ๋๋ค.
-
PATH_COUNT: ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์นํ ๊ฐ์์ ๋๋ค.
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด
upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.-
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
-
PATH_COUNT: ์ํ๋ง๋ Shapley ๊ธฐ์ฌ ๋ถ์ ๋ฉ์๋์ ์ฌ์ฉํ ํน์ฑ ์นํ ๊ฐ์์ ๋๋ค.
[1, 50]
๋ฒ์์ ์ ์์ฌ์ผ ํฉ๋๋ค.๊ฐ์ด ๋์์๋ก ๊ทผ์ฌ์น ์ค๋ฅ๊ฐ ๊ฐ์ํ ์ ์์ง๋ง ๊ณ์ฐ๋์ด ๋ ๋ง์ต๋๋ค. ์ด๋ค ๊ฐ์ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ
25
๋ฅผ ์ฌ์ฉํฉ๋๋ค. - FEATURE_NAME: ์ด ๋ฌธ์์ 'ํน์ฑ ์ด๋ฆ ๊ฒฐ์ ' ์น์ ์ ์ค๋ช ๋ ํน์ฑ ์ด๋ฆ์ ๋๋ค.
- OUTPUT_NAME: ์ด ๋ฌธ์์ '์ถ๋ ฅ ์ด๋ฆ ๊ฒฐ์ ' ์น์ ์ ์ค๋ช ๋ ์ถ๋ ฅ ์ด๋ฆ์ ๋๋ค.
๋ค๋ฅธ ์๋ฆฌํ์์์ ์ ํฉํ ๊ฐ์ ์์๋ณด๋ ค๋ฉด upload
๋ฐ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ์ผ๋ก ์
๋ ฅ ๊ธฐ์ค์ ExplanationMetadata
์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Vertex AI๊ฐ Model
์ ์
๋ ฅ ๊ธฐ์ค์ ์ ํํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "model": { "displayName": "MODEL_NAME", "containerSpec": { "imageUri": "IMAGE_URI" }, "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY", "explanationSpec": { "parameters": { "sampledShapleyAttribution": { "pathCount": PATH_COUNT } }, "metadata": { "inputs": { "FEATURE_NAME": {} }, "outputs": { "OUTPUT_NAME": {} } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content