ํ์ต ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๋ฉด ์ปค์คํ
๋จธ์ ๋ฌ๋(ML) ํ์ต์ ์ํํ๊ณ ํ์ต ์ถ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก Model
๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
ํ์ดํ๋ผ์ธ์ ๋ง๋ค๊ธฐ ์ ์
Vertex AI์์ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค๊ธฐ ์ ์ Python ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์ปค์คํ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์ด Vertex AI์์ ์คํํ๊ณ ์ ํ๋ ํ์ต ์ฝ๋์ ์ข ์ ํญ๋ชฉ์ ์ ์ํด์ผ ํฉ๋๋ค. TensorFlow, scikit-learn ๋๋ XGBoost๋ฅผ ์ฌ์ฉํ์ฌ Python ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๋ค ์ต์ ์ ์ ํํด์ผ ํ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ํ์ต ์ฝ๋ ์๊ตฌ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
ํ์ต ํ์ดํ๋ผ์ธ ์ต์
ํ์ต ํ์ดํ๋ผ์ธ์ ์ถ๊ฐ ๋จ๊ณ๋ก ํ์ต ์์ ์ ์บก์ํํฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ ๋ ๊ฐ์ง ํ์ต ํ์ดํ๋ผ์ธ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
CustomJob
์ ์คํํ๊ณ ๊ฒฐ๊ณผ ๋ชจ๋ธ์ Vertex AI์ ์ ๋ก๋ํฉ๋๋ค.- ์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์ ์ ์คํํ๊ณ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ Vertex AI์ ์ ๋ก๋ํฉ๋๋ค.
๋ํ ํ์ต ํ์ดํ๋ผ์ธ์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ต ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ ์์ธํ ์์๋ณด๊ธฐ
CustomJob
์ ํฌํจ๋ ํญ๋ชฉ
์ปค์คํ ์์ ์ ๋ง๋ค ๋๋ Vertex AI๊ฐ ๋ค์๊ณผ ๊ฐ์ ํ์ต ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ค์ ์ ์ง์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค.
- ๋จ์ผ ๋
ธ๋ ํ์ต์ ์ํ ์์
์ ํ ํ๋(
WorkerPoolSpec
) ๋๋ ๋ถ์ฐํ ํ์ต์ ์ํ ์ฌ๋ฌ ์์ ์ ํ - (์ ํ ์ฌํญ) ์์
์์ฝ ๊ตฌ์ฑ์ ์ํ ์ค์ (
Scheduling
), ํ์ต ์ฝ๋๋ฅผ ์ํ ํน์ ํ๊ฒฝ ๋ณ์ ์ค์ , ์๋น์ค ๊ณ์ ์ฌ์ฉ, VPC ๋คํธ์ํฌ ํผ์ด๋ง ์ฌ์ฉ
์์ ์ ํ ๋ด์์ ๋ค์ ์ค์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ๋จธ์ ์ ํ ๋ฐ ๊ฐ์๊ธฐ
- ์์
์ ํ์ด ์คํํ๋ ํ์ต ์ฝ๋ ์ ํ์ ๊ตฌ์ฑ: Python ํ์ต ์ ํ๋ฆฌ์ผ์ด์
(
PythonPackageSpec
) ๋๋ ์ปค์คํ ์ปจํ ์ด๋(ContainerSpec
)
Vertex AI Training ํ์ดํ๋ผ์ธ ์ธ๋ถ์์ ๋ ๋ฆฝํ ์ปค์คํ ์์ ์ ๋ง๋ค๋ ค๋ฉด ์ปค์คํ ์์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
ํ์ต ํ์ดํ๋ผ์ธ ๋ด์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋๋ก ์ปค์คํ ํ์ต ์์ ๋๋ ์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ชจ๋ธ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
ํ์ต ํ์ดํ๋ผ์ธ์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ญ๋๋ค.
- ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Vertex AI๊ฐ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ธ์.
ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค ๋ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ง์ ํ์ธ์. ์๋ฅผ ๋ค์ด REST API๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋๋ ๊ฒฝ์ฐ
inputDataConfig
์น์ ์์ ๋ฐ์ดํฐ ์ธํธ ์ค์ ์ ์ง์ ํฉ๋๋ค.๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ ๋ฆฌ์ ๊ณผ ๋์ผํ ๋ฆฌ์ ์ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ TrainingPipeline
์ API ์ฐธ์กฐ๋ฅผ ํ์ธํ์ธ์.
๋ถ์ฐ ํ์ต ๊ตฌ์ฑ
ํ์ต ํ์ดํ๋ผ์ธ ๋ด์์ ์ฌ๋ฌ ์์ ์ ํ์ ์ง์ ํ์ฌ ๋ถ์ฐํ ํ์ต์ ์ปค์คํ ํ์ต ์์ ๋๋ ์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ด ํ์ด์ง์ ๋ชจ๋ ์์์์๋ ํ๋์ ์์ ์ ํ์ด ์๋ ๋จ์ผ ๋ณต์ ๋ณธ ํ์ต ์์ ์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ถ์ฐํ ํ์ต์ ์ํด ์์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ์ฒซ ๋ฒ์งธ ์์ ์ ํ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋ณต์ ๋ณธ์ ๊ตฌ์ฑํ๊ณ ๋ณต์ ๋ณธ ์นด์ดํธ๋ฅผ 1๋ก ์ค์ ํฉ๋๋ค.
- ๋จธ์ ๋ฌ๋ ํ๋ ์์ํฌ๊ฐ ๋ถ์ฐํ ํ์ต์ ์ด๋ฌํ ์ถ๊ฐ ํด๋ฌ์คํฐ ์์ ์ ์ง์ํ๋ ๊ฒฝ์ฐ ์์ ์ ๋ณต์ ๋ณธ, ๋งค๊ฐ๋ณ์ ์๋ฒ ๋ณต์ ๋ณธ ๋๋ ํ๊ฐ์ ๋ณต์ ๋ณธ์ ๊ตฌ์ฑํ๋ ์์ ์ ํ์ ์ถ๊ฐํฉ๋๋ค.
๋ถ์ฐํ ํ์ต ์ฌ์ฉ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
CustomJob ๋ฐ ๋ชจ๋ธ ์ ๋ก๋
์ด ํ์ต ํ์ดํ๋ผ์ธ์ ํ์ต ํ์ ๋ชจ๋ธ์ Vertex AI์ ๋ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๊ฒ ํด์ฃผ๋ ํธ๋ฆฌํ ๋จ๊ณ์ ํจ๊ป ์ปค์คํ ์์ ์ ์บก์ํํฉ๋๋ค. ์ด ํ์ต ํ์ดํ๋ผ์ธ์ ๋ค์ ๋ ๊ฐ์ง ์ฃผ์ ์์ ์ ์ํํฉ๋๋ค.
ํ์ต ํ์ดํ๋ผ์ธ์์
CustomJob
๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ปค์คํ ์์ ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํฉ๋๋ค.์ปค์คํ ์์ ์ด ์๋ฃ๋๋ฉด ํ์ต ํ์ดํ๋ผ์ธ์ ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ด Cloud Storage ๋ฒํท์ ์ง์ ํ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ์์ ์์ฑํ ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ์ฐพ์ต๋๋ค. ์ด๋ฌํ ์ํฐํฉํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ์ด ๋ฆฌ์์ค๋ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ค์ ํฉ๋๋ค.
๋ชจ๋ธ ์ํฐํฉํธ ์์น๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
ํ์ต ์์ ์
baseOutputDirectory
๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ ํ์ต ์ฝ๋๊ฐ Vertex AI์์ ์ค์ ํ$AIP_MODEL_DIR
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์์น์ ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ์ ์ฅํ๋์ง ํ์ธํฉ๋๋ค. ํ์ต ์์ ์ด ์๋ฃ๋๋ฉด Vertex AI๊ฐgs://BASE_OUTPUT_DIRECTORY/model
์์ ๋ชจ๋ธ ์ํฐํฉํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํฉ๋๋ค.modelToUpload.artifactUri
ํ๋๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ ํ์ต ํ์ดํ๋ผ์ธ์ ํด๋น URI์์ ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ์ ๋ก๋ํฉ๋๋ค.baseOutputDirectory
๋ฅผ ์ค์ ํ์ง ์์๋ค๋ฉด ์ด ํ๋๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
baseOutputDirectory
๋ฐ modelToUpload.artifactUri
๋ฅผ ๋ชจ๋ ์ง์ ํ๋ฉด Vertex AI์ modelToUpload.artifactUri
๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด ์ ํ์ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์ Vertex AI ์น์ ์์ ํ์ต ํ์ดํ๋ผ์ธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ์ ๋ชจ๋ธ ํ์ต ์ฐฝ์ ์ฝ๋๋ค.
ํ์ต ๋ฐฉ๋ฒ ๋จ๊ณ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
ํ์ต์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ์ดํฐ ์ธํธ ๋ฐ ์ฃผ์ ์ธํธ๋ฅผ ์ง์ ํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ์ธํธ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ ์ธํธ ์์์ ์ ํํฉ๋๋ค.
์ปค์คํ ํ์ต(๊ณ ๊ธ)์ ์ ํํฉ๋๋ค.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๋ชจ๋ธ ์ธ๋ถ์ ๋ณด ๋จ๊ณ์์ ์ ๋ชจ๋ธ ํ์ต ๋๋ ์ ๋ฒ์ ํ์ต์ ์ ํํฉ๋๋ค. ์ ๋ชจ๋ธ ํ์ต์ ์ ํํ ๊ฒฝ์ฐ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ด๋ฆ(MODEL_NAME)์ ์ ๋ ฅํฉ๋๋ค. ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
ํ์ต ์ปจํ ์ด๋ ๋จ๊ณ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
ํ์ต์ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ง ์ปค์คํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ง ์ ํํฉ๋๋ค.
์ ํ์ ๋ฐ๋ผ ๋ค์ ์ค ํ๋๋ฅผ ์คํํฉ๋๋ค.
์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ํ์ต์ ์ฌ์ฉํ๋ ค๋ฉด Cloud Storage์ ์ ๋ก๋ํ ํ์ต ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ Vertex AI์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ธ ํ๋ ์์ํฌ ๋ฐ ๋ชจ๋ธ ํ๋ ์์ํฌ ๋ฒ์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์ ์ฌ์ฉํ์ฌ ์ฌ์ฉํ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ง์ ํฉ๋๋ค.
ํจํค์ง ์์น ํ๋์ ๋ง๋ค์ด ์ ๋ก๋ํ Python ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ Cloud Storage URI๋ฅผ ์ง์ ํฉ๋๋ค. ์ด ํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก
.tar.gz
๋ก ๋๋ฉ๋๋ค.Python ๋ชจ๋ ํ๋์ ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ง์ ์ ์ ๋ชจ๋ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
ํ์ต์ฉ ์ปค์คํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ปจํ ์ด๋ ์ด๋ฏธ์ง ํ๋์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ Artifact Registry ๋๋ Docker Hub URI๋ฅผ ์ง์ ํฉ๋๋ค.
๋ชจ๋ธ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ ํ๋์์ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ฒํท์ ์๋ ๋๋ ํฐ๋ฆฌ์ Cloud Storage URI๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์์ง ๋๋ ํฐ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์์๋ ๋ฉ๋๋ค.
์ด ๊ฐ์
baseOutputDirectory
API ํ๋์ Vertex AI๋ก ์ ๋ฌ๋์ด ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ฉด ์ก์ธ์คํ ์ ์๋ ์ฌ๋ฌ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.ํ์ต์ด ๋๋๋ฉด Vertex AI๋
Model
์ ๋ง๋ค๊ธฐ ์ํด ์ด URI์ ํ์ ๋๋ ํฐ๋ฆฌ์์ ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ์ฐพ์ต๋๋ค. ์ด ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ต ์ฝ๋์AIP_MODEL_DIR
ํ๊ฒฝ ๋ณ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ Vertex AI๋
BASE_OUTPUT_DIRECTORY/model/
์์ ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ์ฐพ์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.์ ํ์ฌํญ: ์ธ์ ํ๋์์ ํ์ต ์ฝ๋ ์คํ์ ์์ํ ๋ ์ฌ์ฉํ Vertex AI์ ์ธ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฒฐํฉ๋ ๋ชจ๋ ์ธ์์ ์ต๋ ๊ธธ์ด๋ 100,000์์ ๋๋ค. ์ด ์ธ์์ ๋์์ ์ฌ์ฉํ๋ ์ปจํ ์ด๋ ์ ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Vertex AI๊ฐ ์ธ์๋ฅผ Python ๋ชจ๋์ ๋ช ๋ น์ค ํ๋๊ทธ๋ก ์ ๋ฌํฉ๋๋ค.
์ปค์คํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Vertex AI๋ ์ธ์์
CMD
๋ช ๋ น์ด๋ฅผ ์ธ์๋ก ์ฌ์ ์ํฉ๋๋ค.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ๋จ๊ณ์์ ์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์ฌ์ฉ ์ฒดํฌ๋ฐ์ค๊ฐ ํด์ ๋ ๊ฒ์ ํ์ธํฉ๋๋ค. ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
์ปดํจํ ๋ฐ ๊ฐ๊ฒฉ ์ฑ ์ ๋จ๊ณ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
๋ฆฌ์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ "์ปค์คํ ํ์ต์ ์ง์ํ๋ ๋ฆฌ์ "์ ์ ํํฉ๋๋ค.
์์ ์ ํ 0 ์น์ ์์ ํ์ต์ ์ฌ์ฉํ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ์ง์ ํฉ๋๋ค.
๊ฐ์๊ธฐ๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ ํํ ๊ฐ์๊ธฐ๋ฅผ ์ ํํ ๋ฆฌ์ ์์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
๋ถ์ฐํ ํ์ต์ ์ํํ๋ ค๋ฉด ์์ ์ ํ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ ์ํ๋ ๊ฐ ์ถ๊ฐ ์์ ์ ํ์ ๋ํด ์ปดํจํ ๋ฆฌ์์ค ์ธํธ๋ฅผ ์ถ๊ฐ๋ก ์ง์ ํฉ๋๋ค.
๊ณ์์ ํด๋ฆญํฉ๋๋ค.
์์ธก ์ปจํ ์ด๋ ๋จ๊ณ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
ํ์ต๋ ๋ชจ๋ธ์์ ์์ธก์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ง ์๋๋ฉด ์ปค์คํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ง ์ ํํฉ๋๋ค.
์ ํ์ ๋ฐ๋ผ ๋ค์ ์ค ํ๋๋ฅผ ์คํํฉ๋๋ค.
์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ธก์ ์ ๊ณตํ๋ ค๋ฉด ๋ชจ๋ธ ํ๋ ์์ํฌ, ๋ชจ๋ธ ํ๋ ์์ํฌ ๋ฒ์ , ๊ฐ์๊ธฐ ์ ํ ํ๋๋ฅผ ์ฌ์ฉํด ์์ธก์ ์ฌ์ฉํ ์ฌ์ ๋น๋๋ ์์ธก ์ปจํ ์ด๋๋ฅผ ์ ํํฉ๋๋ค.
ํ์ต์ ์ฌ์ฉํ ๋จธ์ ๋ฌ๋ ํ๋ ์์ํฌ์ ๋ชจ๋ธ ํ๋ ์์ํฌ ๋ฐ ๋ชจ๋ธ ํ๋ ์์ํฌ ๋ฒ์ ์ ์ผ์น์ํต๋๋ค. ๊ฐ์๊ธฐ ์ ํ์ ๋์ค์ ์จ๋ผ์ธ ๋๋ ์ผ๊ด ์์ธก์ GPU๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ์ง์ ํ์ธ์.
์ปค์คํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ธก์ ์ ๊ณตํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ปจํ ์ด๋ ์ด๋ฏธ์ง ํ๋์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ Artifact Registry URI๋ฅผ ์ง์ ํฉ๋๋ค.
์ ํ ์ฌํญ์ผ๋ก ์ปจํ ์ด๋์
ENTRYPOINT
์๋ด๋ฅผ ์ฌ์ ์ํ๋ ๋ช ๋ น์ด๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
๋ชจ๋ธ ๋๋ ํฐ๋ฆฌ ํ๋์๋ ์ด์ ์ ํ์ต ์ปจํ ์ด๋ ๋จ๊ณ์ ๋ชจ๋ธ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ ํ๋์์ ์ค์ ํ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ํ๋ ์ค ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋์ผํ ํจ๊ณผ๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์ด ํ๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ด์ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
์คํค๋ง ์์ธก ์น์ ์ ํ๋๋ ๋น์ ๋ก๋๋ค.
ํ์ต ์์์ ํด๋ฆญํ์ฌ ์ปค์คํ ํ์ต ํ์ดํ๋ผ์ธ์ ์์ํฉ๋๋ค.
REST
๋ค์ ์ฝ๋ ์ํ์ ์ฌ์ฉํ์ฌ trainingPipeline
๋ฆฌ์์ค์ create
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ญ๋๋ค.
์ฐธ๊ณ : ์ ๋ชจ๋ธ ๋ฒ์ ์ ๋ง๋ค๋๋ก ์ด ํ์ดํ๋ผ์ธ์ ์ค์ ํ๋ ค๋ฉด ์ ํ์ ์ผ๋ก trainingPipeline
ํ๋์์ PARENT_MODEL
์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Vertex AI Model Registry๋ฅผ ์ฌ์ฉํ ๋ชจ๋ธ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- LOCATION_ID: ํ์ต ์ฝ๋๊ฐ ์คํ๋๊ณ
Model
์ด ์ ์ฅ๋ ๋ฆฌ์ ์ ๋๋ค. - PROJECT_ID: ํ๋ก์ ํธ ID์ ๋๋ค.
- TRAINING_PIPELINE_NAME: ํ์. trainingPipeline์ ํ์ ์ด๋ฆ์ ๋๋ค.
- ํ์ต ์ ํ๋ฆฌ์ผ์ด์
์ด Vertex AI ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ง์ ํฉ๋๋ค.
- DATASET_ID: ๋ฐ์ดํฐ ์ธํธ ID์ ๋๋ค.
- ANNOTATIONS_FILTER: ์ง์ ํ ์ฃผ์์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- ANNOTATION_SCHEMA_URI: ์ง์ ๋ ์ฃผ์ ์คํค๋ง URI๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
-
๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํญ๋ชฉ์ด ํ์ต, ์ ํจ์ฑ ๊ฒ์ฌ, ํ
์คํธ ์ธํธ๋ก ๋ถํ ๋๋ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค.
- ๊ฐ ์ธํธ์ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ ๋น์จ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- TRAINING_FRACTION: ๋ชจ๋ธ์ ํ์ต์ํค๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- VALIDATION_FRACTION: ๋ชจ๋ธ ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TEST_FRACTION: ๋ชจ๋ธ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- ํํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- TRAINING_FILTER: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ต์ํค๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ํญ๋ชฉ์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- VALIDATION_FILTER: ๋ชจ๋ธ ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- TEST_FILTER: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- ์ฌ์ ์ ์๋ ๋ถํ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- PREDEFINED_SPLIT_KEY: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ๋ฐ ์ฌ์ฉํ ์ด์ ์ด๋ฆ์ ๋๋ค. ์ด ์ด์ ๊ฐ์ 'training`, `validation`, `test`์ ๋๋ค.
-
๋ฐ์ดํฐ ํญ๋ชฉ์ ํ์์คํฌํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- TIMESTAMP_TRAINING_FRACTION: ๋ชจ๋ธ ํ์ต์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TIMESTAMP_VALIDATION_FRACTION: ๋ชจ๋ธ ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TIMESTAMP_TEST_FRACTION: ๋ชจ๋ธ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TIMESTAMP_SPLIT_KEY: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ๋ฐ ์ฌ์ฉํ ํ์์คํฌํ ์ด์ ์ด๋ฆ์ ๋๋ค.
- ๊ฐ ์ธํธ์ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ ๋น์จ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- OUTPUT_URI_PREFIX: ํ์ต, ๊ฒ์ฆ, ํ ์คํธ ์ธํธ๋ก ๋ถํ ๋ ๊ฒฝ์ฐ Vertex AI๊ฐ ํ์ต ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ด๋ณด๋ด๋ Cloud Storage ์์น์ ๋๋ค.
- ์ปค์คํ
ํ์ต ์์
์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
- MACHINE_TYPE: ๋จธ์ ์ ํ์ ๋๋ค. ํ์ต์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋จธ์ ์ ํ์ ์ฐธ์กฐํ์ธ์.
- ACCELERATOR_TYPE: (์ ํ์ฌํญ) ๊ฐ ์๋์ ์ฐ๊ฒฐํ ๊ฐ์๊ธฐ ์ ํ์ ๋๋ค.
- ACCELERATOR_COUNT: (์ ํ์ฌํญ) ๊ฐ ์๋์ ์ฐ๊ฒฐํ ๊ฐ์๊ธฐ ์์ ๋๋ค.
- REPLICA_COUNT: ๊ฐ ์๋์์ ์ฌ์ฉํ ์์ ์ ๋ณต์ ๋ณธ ์์ ๋๋ค.
- ํ์ต ์ ํ๋ฆฌ์ผ์ด์
์ด ์ปค์คํ
์ปจํ
์ด๋์์ ์คํ๋๋ ๊ฒฝ์ฐ ๋ค์์ ์ง์ ํฉ๋๋ค.
- CUSTOM_CONTAINER_IMAGE_URI: ๊ฐ ์์ ์ ๋ณต์ ๋ณธ์์ ์คํ๋ Artifact Registry ๋๋ Docker Hub์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง URI์ ๋๋ค.
- CUSTOM_CONTAINER_COMMAND: (์ ํ์ฌํญ) ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ํธ์ถ๋๋ ๋ช ๋ น์ด์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ ์ปจํ ์ด๋์ ๊ธฐ๋ณธ ์ง์ ์ ์ ์ฌ์ ์ํฉ๋๋ค.
- CUSTOM_CONTAINER_ARGS: (์ ํ์ฌํญ) ์ปจํ ์ด๋ ์์ ์ ์ ๋ฌ๋ ์ธ์์ ๋๋ค. ๊ฒฐํฉ๋ ๋ชจ๋ ์ธ์์ ์ต๋ ๊ธธ์ด๋ 100,000์์ ๋๋ค.
- ํ์ต ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฌ์ ๋น๋๋ ์ปจํ
์ด๋์์ ์คํ๋๋ Python ํจํค์ง์ธ ๊ฒฝ์ฐ ๋ค์์ ์ง์ ํฉ๋๋ค.
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: ์ ๊ณต๋ Python ํจํค์ง๋ฅผ ์คํํ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ URI์ ๋๋ค. ํ์ต์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- PYTHON_PACKAGE_URIS: ํ์ต ํ๋ก๊ทธ๋จ ๋ฐ ์ข ์ ํจํค์ง์ธ Python ํจํค์ง ํ์ผ์ Cloud Storage ์์น์ ๋๋ค. ํจํค์ง URI์ ์ต๋ ๊ฐ์๋ 100๊ฐ์ ๋๋ค.
- PYTHON_MODULE: ํจํค์ง๋ฅผ ์ค์นํ ํ ์คํํ Python ๋ชจ๋ ์ด๋ฆ์ ๋๋ค.
- PYTHON_PACKAGE_ARGS: (์ ํ์ฌํญ) Python ๋ชจ๋๋ก ์ ๋ฌํ ๋ช ๋ น์ค ์ธ์์ ๋๋ค. ๊ฒฐํฉ๋ ๋ชจ๋ ์ธ์์ ์ต๋ ๊ธธ์ด๋ 100,000์์ ๋๋ค.
- TIMEOUT: (์ ํ์ฌํญ) ์์ ์ ์ต๋ ์คํ ์๊ฐ์ ๋๋ค.
- MODEL_NAME: TrainingPipeline์์ ์ ๋ก๋(์์ฑ)ํ ๋ชจ๋ธ์ ํ์ ์ด๋ฆ์ ๋๋ค.
- MODEL_DESCRIPTION: ๋ชจ๋ธ์ ๋ํ ์ค๋ช ์ ๋๋ค.
- IMAGE_URI: ์์ธก ์คํ์ ์ฌ์ฉํ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ URI์
๋๋ค. ์๋ฅผ ๋ค๋ฉด
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest
์ ๋๋ค. ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ ์ปค์คํ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. - modelToUpload.labels: ๋ชจ๋ธ์ ๊ตฌ์ฑํ ๋ชจ๋ ํค-๊ฐ ์ ์ธํธ์
๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- "env": "prod"
- "tier": "backend"
- ํ์ต ํ์ดํ๋ผ์ธ์ ์ ์ฉํ ๋ผ๋ฒจ์ LABEL_NAME ๋ฐ LABEL_VALUE๋ฅผ ์ง์ ํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml", "trainingTaskInputs": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } } }, "modelToUpload": { "displayName": "MODEL_NAME", "predictSchemata": {}, "containerSpec": { "imageUri": "IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
์๋ต์๋ ์ฌ์ ๋ฐ TRAININGPIPELINE_ID์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
Vertex AI SDK for Python์ ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ Vertex AI SDK for Python ์ค์น๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
๋ค์ ์์์์๋ Python์ฉ Vertex AI SDK๋ฅผ ์ฌ์ฉํ์ฌ ์ปค์คํ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ํ์ต์ ์ปค์คํ ์ปจํ ์ด๋ ๋๋ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ง ์ ํํฉ๋๋ค.
์ฌ์ ๋น๋๋ ์ปจํ ์ด๋
Python์ฉ Vertex AI SDK๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์์ Python ์ฝ๋๋ฅผ ์คํํ๋ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค๋ฉด ๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ํ์ต ์ฝ๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
Cloud Storage์ ์๋ Python ์์ค ๋ฐฐํฌ ํจํค์ง์ URI๋ฅผ ์ง์ ํฉ๋๋ค.
Python์ฉ Vertex AI SDK๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค ๋๋ ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ก์ปฌ ๋จธ์ ์์ Python ์คํฌ๋ฆฝํธ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. Python์ฉ Vertex AI SDK๋ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ค๊ธฐ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ค ๋ฐฐํฌ๋ก ํจํค์งํ๊ณ ์ํ๋ Cloud Storage ๋ฒํท์ ์ ๋ก๋ํฉ๋๋ค.
Python์ฉ Vertex AI SDK๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ฐ ์ต์ ์ ์ฝ๋ ์ํ์ ๋ณด๋ ค๋ฉด ํด๋น ํญ์ ์ ํํฉ๋๋ค.
ํจํค์ง
๋ค์ ์ํ์์๋ CustomPythonPackageTrainingJob
ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์คํฌ๋ฆฝํธ
๋ค์ ์ํ์์๋ CustomTrainingJob
ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ปค์คํ ์ปจํ ์ด๋
๋ค์ ์ํ์์๋ CustomContainerTrainingJob
ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์ ๋ฐ ๋ชจ๋ธ ์ ๋ก๋
์ด ํ์ต ํ์ดํ๋ผ์ธ์ ํ์ต ํ์ ๋ชจ๋ธ์ Vertex AI์ ๋ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๊ฒ ํด์ฃผ๋ ํธ๋ฆฌํ ๋จ๊ณ์ ํจ๊ป ์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์ ์ ์บก์ํํฉ๋๋ค. ์ด ํ์ต ํ์ดํ๋ผ์ธ์ ๋ค์ ๋ ๊ฐ์ง ์ฃผ์ ์์ ์ ์ํํฉ๋๋ค.
ํ์ต ํ์ดํ๋ผ์ธ์ ์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์ ์ ์ฌ๋ฌ ์๋๋ฅผ ๋ง๋ญ๋๋ค. ๊ฐ ์๋์์ ์ปค์คํ ์์ ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ ์ปดํจํ ๋ฆฌ์์ค์ ์ด๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํฉ๋๋ค.
์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์ ์ด ์๋ฃ๋๋ฉด ํ์ต ํ์ดํ๋ผ์ธ์ Cloud Storage ๋ฒํท์ ์ง์ ํ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ(
baseOutputDirectory
) ๋ด์์ ์ต์ ์ ์๋๋ฅผ ํตํด ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ์ฐพ์ต๋๋ค. ํ์ต ํ์ดํ๋ผ์ธ์ ์ด๋ฌํ ์ํฐํฉํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ , ์ด ๋ฆฌ์์ค๋ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ค์ ํฉ๋๋ค.
์ด ํ์ต ํ์ดํ๋ผ์ธ์ ๊ฒฝ์ฐ Vertex AI๊ฐ ์ต์ ์ ์๋์์ ๋ชจ๋ธ ์ํฐํฉํธ๋ฅผ ๊ฒ์ํ๋ baseOutputDirectory
๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์
์๋ ๊ตฌ์ฑํ ์ถ๊ฐ ์ค์ ์ด ์์ต๋๋ค. HyperparameterTuningJob
์ค์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
REST
๋ค์ ์ฝ๋ ์ํ์ ์ฌ์ฉํ์ฌ trainingPipeline
๋ฆฌ์์ค์ create
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ํ์ดํ๋ผ์ธ์ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- LOCATION_ID: ํ๋ก์ ํธ์ ๋ฆฌ์ ์ ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ ID์ ๋๋ค.
- TRAINING_PIPELINE_NAME: ํ์. trainingPipeline์ ํ์ ์ด๋ฆ์ ๋๋ค.
- ํ์ต ์ ํ๋ฆฌ์ผ์ด์
์ด Vertex AI ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ง์ ํฉ๋๋ค.
- DATASET_ID: ๋ฐ์ดํฐ ์ธํธ ID์ ๋๋ค.
- ANNOTATIONS_FILTER: ์ง์ ํ ์ฃผ์์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- ANNOTATION_SCHEMA_URI: ์ง์ ๋ ์ฃผ์ ์คํค๋ง URI๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
-
๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํญ๋ชฉ์ด ํ์ต, ์ ํจ์ฑ ๊ฒ์ฌ, ํ
์คํธ ์ธํธ๋ก ๋ถํ ๋๋ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค.
- ๊ฐ ์ธํธ์ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ ๋น์จ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- TRAINING_FRACTION: ๋ชจ๋ธ์ ํ์ต์ํค๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- VALIDATION_FRACTION: ๋ชจ๋ธ ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TEST_FRACTION: ๋ชจ๋ธ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- ํํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- TRAINING_FILTER: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ต์ํค๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ํญ๋ชฉ์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- VALIDATION_FILTER: ๋ชจ๋ธ ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- TEST_FILTER: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํฉ๋๋ค.
- ์ฌ์ ์ ์๋ ๋ถํ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- PREDEFINED_SPLIT_KEY: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ๋ฐ ์ฌ์ฉํ ์ด์ ์ด๋ฆ์ ๋๋ค. ์ด ์ด์ ๊ฐ์ 'training`, `validation`, `test`์ ๋๋ค.
-
๋ฐ์ดํฐ ํญ๋ชฉ์ ํ์์คํฌํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- TIMESTAMP_TRAINING_FRACTION: ๋ชจ๋ธ ํ์ต์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TIMESTAMP_VALIDATION_FRACTION: ๋ชจ๋ธ ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TIMESTAMP_TEST_FRACTION: ๋ชจ๋ธ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ธํธ์ ๋น์จ์ ๋๋ค.
- TIMESTAMP_SPLIT_KEY: ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ๋ฐ ์ฌ์ฉํ ํ์์คํฌํ ์ด์ ์ด๋ฆ์ ๋๋ค.
- ๊ฐ ์ธํธ์ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ ๋น์จ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ถํ ํ๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
- OUTPUT_URI_PREFIX: ํ์ต, ๊ฒ์ฆ, ํ ์คํธ ์ธํธ๋ก ๋ถํ ๋ ๊ฒฝ์ฐ Vertex AI๊ฐ ํ์ต ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ด๋ณด๋ด๋ Cloud Storage ์์น์ ๋๋ค.
- ์ด๋งค๊ฐ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์์
์ ์ง์ ํฉ๋๋ค.
- ์ธก์ ํญ๋ชฉ์ ์ง์ ํฉ๋๋ค.
- METRIC_ID: ์ธก์ ํญ๋ชฉ์ ์ด๋ฆ์ ๋๋ค.
- METRIC_GOAL: ์ธก์ ํญ๋ชฉ์ ๋ชฉํ์
๋๋ค.
MAXIMIZE
๋๋MINIMIZE
์ผ ์ ์์ต๋๋ค.
- ์ด๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
- PARAMETER_ID: ์ด๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ ๋๋ค.
- PARAMETER_SCALE: (์ ํ์ฌํญ) ๋งค๊ฐ๋ณ์ ์กฐ์ ๋ฐฉ๋ฒ์
๋๋ค. ๋ฒ์ฃผํ ๋งค๊ฐ๋ณ์๋ ์ค์ ํ์ง ์์ต๋๋ค.
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
, ๋๋SCALE_TYPE_UNSPECIFIED
์ผ ์ ์์ต๋๋ค. - ์ด๋งค๊ฐ๋ณ์์ ์ ํ์ด DOUBLE์ด๋ฉด ์ด๋งค๊ฐ๋ณ์์ ์ต์๊ฐ(DOUBLE_MIN_VALUE)๊ณผ ์ต๋๊ฐ(DOUBLE_MAX_VALUE)์ ์ง์ ํฉ๋๋ค.
- ์ด๋งค๊ฐ๋ณ์ ์ ํ์ด INTEGER์ด๋ฉด ์ด๋งค๊ฐ๋ณ์์ ์ต์๊ฐ(INTEGER_MIN_VALUE)๊ณผ ์ต๋๊ฐ(INTEGER_MAX_VALUE)์ ์ง์ ํฉ๋๋ค.
- ์ด๋งค๊ฐ๋ณ์ ์ ํ์ด CATEGORICAL์ด๋ฉด ํ์ฉ๋๋ ๊ฐ(CATEGORICAL_VALUES)์ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ์ง์ ํฉ๋๋ค.
- ์ด๋งค๊ฐ๋ณ์ ์ ํ์ด DISCRETE์ด๋ฉด ํ์ฉ๋๋ ๊ฐ(DISCRETE_VALUES)์ ์ซ์ ๋ฐฐ์ด๋ก ์ง์ ํฉ๋๋ค.
- ALGORITHM: (์ ํ์ฌํญ) ์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์
์์ ์ฌ์ฉํ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
ALGORITHM_UNSPECIFIED
,GRID_SEARCH
, ๋๋RANDOM_SEARCH
์ผ ์ ์์ต๋๋ค. - MAX_TRIAL_COUNT: ์์ ์์ ์คํํ ์ต๋ ์๋ ํ์์ ๋๋ค.
- PARALLEL_TRIAL_COUNT: ๋์์ ์คํํ ์ ์๋ ์ต๋ ์๋ ํ์์ ๋๋ค.
- MAX_FAILED_TRIAL_COUNT: ์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์ ์ด ์คํจํ๊ธฐ ์ ์ ์คํจํ ์ ์๋ ์์ ์์ ๋๋ค.
- ์๋ ์ปค์คํ
ํ์ต ์์
์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
- MACHINE_TYPE: ๋จธ์ ์ ํ์ ๋๋ค. ํ์ต์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋จธ์ ์ ํ์ ์ฐธ์กฐํ์ธ์.
- ACCELERATOR_TYPE: (์ ํ์ฌํญ) ๊ฐ ์๋์ ์ฐ๊ฒฐํ ๊ฐ์๊ธฐ ์ ํ์ ๋๋ค.
- ACCELERATOR_COUNT: (์ ํ์ฌํญ) ๊ฐ ์๋์ ์ฐ๊ฒฐํ ๊ฐ์๊ธฐ ์์ ๋๋ค.
- REPLICA_COUNT: ๊ฐ ์๋์์ ์ฌ์ฉํ ์์ ์ ๋ณต์ ๋ณธ ์์ ๋๋ค.
- ํ์ต ์ ํ๋ฆฌ์ผ์ด์
์ด ์ปค์คํ
์ปจํ
์ด๋์์ ์คํ๋๋ ๊ฒฝ์ฐ ๋ค์์ ์ง์ ํฉ๋๋ค.
- CUSTOM_CONTAINER_IMAGE_URI: ๊ฐ ์์ ์ ๋ณต์ ๋ณธ์์ ์คํ๋ Artifact Registry ๋๋ Docker Hub์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง URI์ ๋๋ค.
- CUSTOM_CONTAINER_COMMAND: (์ ํ์ฌํญ) ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ํธ์ถ๋๋ ๋ช ๋ น์ด์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ ์ปจํ ์ด๋์ ๊ธฐ๋ณธ ์ง์ ์ ์ ์ฌ์ ์ํฉ๋๋ค.
- CUSTOM_CONTAINER_ARGS: (์ ํ์ฌํญ) ์ปจํ ์ด๋ ์์ ์ ์ ๋ฌ๋๋ ์ธ์์ ๋๋ค.
- ํ์ต ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฌ์ ๋น๋๋ ์ปจํ
์ด๋์์ ์คํ๋๋ Python ํจํค์ง์ธ ๊ฒฝ์ฐ ๋ค์์ ์ง์ ํฉ๋๋ค.
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: ์ ๊ณต๋ Python ํจํค์ง๋ฅผ ์คํํ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ URI์ ๋๋ค. ํ์ต์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- PYTHON_PACKAGE_URIS: ํ์ต ํ๋ก๊ทธ๋จ ๋ฐ ์ข ์ ํจํค์ง์ธ Python ํจํค์ง ํ์ผ์ Cloud Storage ์์น์ ๋๋ค. ํจํค์ง URI์ ์ต๋ ๊ฐ์๋ 100๊ฐ์ ๋๋ค.
- PYTHON_MODULE: ํจํค์ง๋ฅผ ์ค์นํ ํ ์คํํ Python ๋ชจ๋ ์ด๋ฆ์ ๋๋ค.
- PYTHON_PACKAGE_ARGS: (์ ํ์ฌํญ) Python ๋ชจ๋๋ก ์ ๋ฌํ ๋ช ๋ น์ค ์ธ์์ ๋๋ค.
- ์์ ์์ฝ ์ต์ ์ ๋ํด ์์๋ณด์ธ์.
- TIMEOUT: (์ ํ์ฌํญ) ๊ฐ ์๋์ ์ต๋ ์คํ ์๊ฐ์ ๋๋ค.
- ์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์ ์ ์ ์ฉํ ๋ชจ๋ ๋ผ๋ฒจ์ LABEL_NAME ๋ฐ LABEL_VALUE๋ฅผ ์ง์ ํฉ๋๋ค.
- ์ธก์ ํญ๋ชฉ์ ์ง์ ํฉ๋๋ค.
- MODEL_NAME: TrainingPipeline์์ ์ ๋ก๋(์์ฑ)ํ ๋ชจ๋ธ์ ํ์ ์ด๋ฆ์ ๋๋ค.
- MODEL_DESCRIPTION: ์ ํ์ฌํญ. ๋ชจ๋ธ์ ๋ํ ์ค๋ช ์ ๋๋ค.
- PREDICTION_IMAGE_URI: ํ์. ๋ค์ ๋ ๊ฐ์ง ์ต์
์ค ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
- ์์ธก์ ์ฌ์ฉํ ์ฌ์ ๋น๋๋ ์ปจํ ์ด๋์ ์ด๋ฏธ์ง URI(์: 'tf2-cpu.2-1:latest')
- ์์ธก์ ์ฌ์ฉํ ์์ฒด ์ปค์คํ ์ปจํ ์ด๋์ ์ด๋ฏธ์ง URI
- modelToUpload.labels: ์ ํ์ฌํญ. ๋ชจ๋ธ์ ๊ตฌ์ฑํ ๋ชจ๋ ํค-๊ฐ ์ ์ธํธ์
๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- "env": "prod"
- "tier": "backend"
- ํ์ต ํ์ดํ๋ผ์ธ์ ์ ์ฉํ ๋ผ๋ฒจ์ LABEL_NAME ๋ฐ LABEL_VALUE๋ฅผ ์ง์ ํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/hyperparameter_tuning_task_1.0.0.yaml", "trainingTaskInputs": { "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }, "modelToUpload": { "displayName": "MODEL_NAME", "description": "MODEL_DESCRIPTION", "predictSchemata": {}, "containerSpec": { "imageUri": "PREDICTION_IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
์๋ต์๋ ์ฌ์ ๋ฐ TRAININGPIPELINE_ID์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
ํ์ต ๋ชจ๋ํฐ๋ง
๋ก๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud Console์ Vertex AI ์น์ ์์ ํ์ต ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์์ ์ด๋ฆ์ ํด๋ฆญํ์ฌ ์ปค์คํ ์์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ก๊ทธ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ์ต ํ์ดํ๋ผ์ธ์ด ์คํ๋๋ ๋์ ๋ํํ ์ ธ์ ์ฌ์ฉํ์ฌ ํ์ต ์ปจํ ์ด๋๋ฅผ ๊ฒ์ฌํ ์๋ ์์ต๋๋ค.
ํ์ต๋ ๋ชจ๋ธ ๋ณด๊ธฐ
์ปค์คํ ํ์ต ํ์ดํ๋ผ์ธ์ด ์๋ฃ๋๋ฉด Google Cloud Console์ Vertex AI ์น์ ์์ ๋ชจ๋ธ ํ์ด์ง๋ก ์ด๋ํ์ฌ ํ์ต๋ ๋ชจ๋ธ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
- ๋ณด๋ค ๋น ๋ฅด๊ณ ์ ๋ ดํ๊ฒ ํ์ต์ํฌ ์ ์๋๋ก Cloud Profiler๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
- ๋ชจ๋ธ์ ์๋ํฌ์ธํธ ๋ฐฐํฌํ๊ธฐ
- ์ด๋งค๊ฐ๋ณ์ ์กฐ์ ์์ ๋ง๋ค๊ธฐ
- ๋ฆฌ์์ค ๊ฐ์ฉ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ปค์คํ ํ์ต ์์ ์ ์์ฝํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.