1. 總覽
在本實驗室中,您將瞭解如何使用 Vertex 機器學習中繼資料,分析 Vertex AI Pipelines 執行作業產生的中繼資料。
課程內容
學習重點:
- 使用 Kubeflow Pipelines SDK 建構機器學習管道,在 Vertex AI 中建立資料集,並在該資料集上訓練及部署自訂 Scikit-learn 模型
- 撰寫可產生構件和中繼資料的自訂管線元件
- 比較 Vertex Pipelines 執行作業,包括在 Cloud 控制台和程式碼中執行
- 追蹤管道產生的構件歷程
- 查詢管道執行作業的中繼資料
在 Google Cloud 中執行這個實驗室的總費用約為 $2 美元。
2. Vertex AI 簡介
這個實驗室使用 Google Cloud 最新推出的 AI 產品服務。Vertex AI 整合了 Google Cloud 中的機器學習產品,提供流暢的開發體驗。先前使用 AutoML 訓練的模型和自訂模型,都能透過不同的服務存取。新產品將這兩項功能與其他新產品整合至單一 API。您也可以將現有專案遷移至 Vertex AI。
除了模型訓練和部署服務外,Vertex AI 也包含各種機器學習運作產品,包括 Vertex Pipelines、機器學習中繼資料、模型監控和特徵儲存庫等。所有 Vertex AI 產品項目均如下圖所示。
本實驗室將著重於 Vertex Pipelines 和 Vertex 機器學習中繼資料。
如有任何 Vertex AI 相關意見回饋,請前往支援頁面。
為什麼機器學習管道很實用?
在深入瞭解前,我們先來瞭解為何要使用管道。假設您要建構的機器學習工作流程包含處理資料、訓練模型、超參數調整、評估和模型部署。每個步驟都有不同的依附元件,如果您將整個工作流程視為單體,可能會變得不穩定。開始擴大機器學習程序時,您可能會想與團隊中的其他成員分享機器學習工作流程,讓他們執行並提供程式碼。但如果沒有可靠且可重現的程序,這項工作就會變得困難。在管道中,機器學習程序的每個步驟都是獨立的容器。如此一來,您就能獨立開發步驟,並以可重現的方式追蹤每個步驟的輸入和輸出內容。您也可以根據 Cloud 環境中的其他事件,排定或觸發管道的執行作業,例如在有新訓練資料時啟動管道執行作業。
重點摘要:管道可協助您自動化及重現機器學習工作流程。
3. 雲端環境設定
您必須擁有啟用計費功能的 Google Cloud Platform 專案,才能執行這個程式碼研究室。如要建立專案,請按照這篇文章中的操作說明進行。
啟動 Cloud Shell
在本研究室中,您將在 Cloud Shell 工作階段中進行作業,這是由在 Google 雲端運作的虛擬機器代管的指令解譯器。您也可以在自己的電腦上執行本節內容,但使用 Cloud Shell 可讓所有人都能在一致的環境中重現體驗。實驗室結束後,歡迎您在自己的電腦上重試這一節。
啟用 Cloud Shell
在 Cloud 控制台的右上方,按一下下列按鈕來「啟用 Cloud Shell」:
如果您先前從未啟動 Cloud Shell,您會看見中介畫面 (需捲動位置),說明螢幕內容。如果是這種情況,請點選「繼續」 (之後不會再顯示這個畫面)。以下是單次畫面的外觀:
佈建並連線至 Cloud Shell 只需幾分鐘的時間。
這個虛擬機器會載入您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。您可以使用瀏覽器或 Chromebook 完成本編碼實驗室的大部分工作,甚至是全部工作。
連線至 Cloud Shell 後,您應會發現自己通過驗證,且專案已設為您的專案 ID。
在 Cloud Shell 中執行下列指令,確認您已通過驗證:
gcloud auth list
指令輸出
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
在 Cloud Shell 中執行下列指令,確認 gcloud 指令知道您的專案:
gcloud config list project
指令輸出
[core] project = <PROJECT_ID>
如未設定,請輸入下列指令設定專案:
gcloud config set project <PROJECT_ID>
指令輸出
Updated property [core/project].
Cloud Shell 有幾個環境變數,包括 GOOGLE_CLOUD_PROJECT
,其中包含目前 Cloud 專案的名稱。我們會在本研究室的各個不同地方使用這些內容。您可以執行以下指令來查看:
echo $GOOGLE_CLOUD_PROJECT
啟用 API
在後續步驟中,您會瞭解何時需要這些服務 (以及原因),但目前請執行以下指令,讓專案存取 Compute Engine、Container Registry 和 Vertex AI 服務:
gcloud services enable compute.googleapis.com \
containerregistry.googleapis.com \
aiplatform.googleapis.com
這應該會產生類似以下的成功訊息:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
建立 Cloud Storage bucket
如要在 Vertex AI 執行訓練工作,我們需要一個儲存儲存的模型資產的儲存空間值區。值區必須是區域性值區,我們在這裡使用 us-central
,但您也可以使用其他區域 (只要在本研究室中進行替換即可)。如果您已有資料夾,可以略過這個步驟。
在 Cloud Shell 終端機中執行下列指令,即可建立儲存桶:
BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME
接著,我們會為運算服務帳戶授予這個值區的存取權。這樣一來,Vertex Pipelines 就能具備寫入這個值區的必要權限。執行下列指令即可新增此權限:
gcloud projects describe $GOOGLE_CLOUD_PROJECT > project-info.txt
PROJECT_NUM=$(cat project-info.txt | sed -nre 's:.*projectNumber\: (.*):\1:p')
SVC_ACCOUNT="${PROJECT_NUM//\'/}-compute@developer.gserviceaccount.com"
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT --member serviceAccount:$SVC_ACCOUNT --role roles/storage.objectAdmin
建立 Vertex AI Workbench 執行個體
在 Cloud 控制台的 Vertex AI 專區中,按一下「Workbench」:
接著在「使用者自行管理的筆記本」中,按一下「新增筆記本」:
接著選取「TensorFlow 企業版 2.3 (含 LTS)」執行個體類型,且不加入任何 GPU:
使用預設選項,然後點選「建立」。
開啟筆記本
建立執行個體後,請選取「Open JupyterLab」:
4. Vertex Pipelines 設定
如要使用 Vertex Pipelines,您還需要安裝一些額外的程式庫:
- Kubeflow Pipelines:這是我們用來建構管道的 SDK。Vertex Pipelines 支援使用 Kubeflow Pipelines 或 TFX 建構的管線執行作業。
- Vertex AI SDK:這個 SDK 可改善呼叫 Vertex AI API 的體驗。我們會使用它在 Vertex AI 上執行管道。
建立 Python 筆記本及安裝程式庫
首先,在 Notebook 執行個體的啟動器選單中,選取「Python 3」,建立筆記本:
如要安裝本實驗室中會用到的兩項服務,請先在筆記本儲存格中設定使用者標記:
USER_FLAG = "--user"
然後在筆記本中執行下列指令:
!pip3 install {USER_FLAG} google-cloud-aiplatform==1.7.0
!pip3 install {USER_FLAG} kfp==1.8.9
安裝這些套件後,您必須重新啟動核心:
import os
if not os.getenv("IS_TESTING"):
# Automatically restart kernel after installs
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
接下來,請檢查您是否已正確安裝 KFP SDK 版本。應為 >=1.8:
!python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"
接著,請確認 Vertex AI SDK 版本是否為 1.6.2 以上:
!pip list | grep aiplatform
設定專案 ID 和值區
在這個研究室中,您會參照 Cloud 專案 ID 和先前建立的值區。接下來,我們將為每個變數建立變數。
如果您不知道專案 ID,可以執行下列指令來取得:
import os
PROJECT_ID = ""
# Get your Google Cloud project ID from gcloud
if not os.getenv("IS_TESTING"):
shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
PROJECT_ID = shell_output[0]
print("Project ID: ", PROJECT_ID)
否則請在這裡設定:
if PROJECT_ID == "" or PROJECT_ID is None:
PROJECT_ID = "your-project-id" # @param {type:"string"}
然後建立變數來儲存值區名稱。如果您在本研究室中建立了這個值,則下列值會有效。否則,您必須手動設定:
BUCKET_NAME="gs://" + PROJECT_ID + "-bucket"
匯入程式庫
新增以下程式碼,匯入我們在本程式碼研究室中會用到的程式庫:
import matplotlib.pyplot as plt
import pandas as pd
from kfp.v2 import compiler, dsl
from kfp.v2.dsl import pipeline, component, Artifact, Dataset, Input, Metrics, Model, Output, InputPath, OutputPath
from google.cloud import aiplatform
# We'll use this namespace for metadata querying
from google.cloud import aiplatform_v1
定義常數
在建構管道之前,我們需要定義一些常數變數。PIPELINE_ROOT
是 Cloud Storage 路徑,用於寫入管道建立的構件。我們在此使用 us-central1
做為區域,但如果您在建立值區時使用其他區域,請更新下方程式碼中的 REGION
變數:
PATH=%env PATH
%env PATH={PATH}:/home/jupyter/.local/bin
REGION="us-central1"
PIPELINE_ROOT = f"{BUCKET_NAME}/pipeline_root/"
PIPELINE_ROOT
執行上述程式碼後,您應該會看到管道根目錄的輸出內容。這是用來寫入管道構件的 Cloud Storage 位置。格式為 gs://YOUR-BUCKET-NAME/pipeline_root/
5. 使用自訂元件建立 3 步驟管道
本研究室的重點在於瞭解管道執行作業的中繼資料。為此,我們需要在 Vertex Pipelines 上執行管道,這也是我們要著手的地方。這裡,我們使用下列自訂元件來定義 3 步驟管道:
get_dataframe
:從 BigQuery 表格擷取資料,並轉換為 Pandas DataFrametrain_sklearn_model
:使用 Pandas DataFrame 訓練並匯出 Scikit Learn 模型,以及一些指標deploy_model
:將匯出的 Scikit Learn 模型部署至 Vertex AI 中的端點
在這個管道中,我們會使用 UCI Machine Learning 的Dry beans dataset,來源為:KOKLU, M. and OZKAN, I.A., (2020 年)《Multiclass Classification of ry Beans Using Computer Vision and Machine Learning Techniques》(使用電腦視覺和機器學習技術的多重類別分類)。DOI。
這是一個表格資料集,在管道中,我們會使用這份資料集訓練、評估及部署 Scikit-learn 模型,讓模型根據豆子的特性將豆子分成 7 種類型。開始編寫程式吧!
建立以 Python 函式為基礎的元件
使用 KFP SDK,我們就能根據 Python 函式建立元件。我們會將這個值用於此管道中的 3 個元件。
下載 BigQuery 資料並轉換為 CSV
首先,我們會建構 get_dataframe
元件:
@component(
packages_to_install=["google-cloud-bigquery", "pandas", "pyarrow", "db-dtypes"],
base_image="python:3.9",
output_component_file="create_dataset.yaml"
)
def get_dataframe(
bq_table: str,
output_data_path: OutputPath("Dataset")
):
from google.cloud import bigquery
import pandas as pd
import os
project_number = os.environ["CLOUD_ML_PROJECT_ID"]
bqclient = bigquery.Client(project=project_number)
table = bigquery.TableReference.from_string(
bq_table
)
rows = bqclient.list_rows(
table
)
dataframe = rows.to_dataframe(
create_bqstorage_client=True,
)
dataframe = dataframe.sample(frac=1, random_state=2)
dataframe.to_csv(output_data_path)
讓我們進一步瞭解這個元件發生了什麼事:
- 當管道執行時,
@component
修飾器會將此函式編譯為元件。您在編寫自訂元件時,都會使用這個方法。 base_image
參數會指定此元件要使用的容器映像檔。- 這個元件會使用一些 Python 程式庫,我們會透過
packages_to_install
參數指定這些程式庫。 output_component_file
參數為選用項目,可指定要將編譯元件寫入的 yaml 檔案。執行單元格後,您應該會看到該檔案已寫入 Notebook 執行個體。如果您想與他人分享此元件,可以傳送產生的 yaml 檔案,並請對方使用以下方式載入:
# This is optional, it shows how to load a component from a yaml file
# dataset_component = kfp.components.load_component_from_file('./create_dataset.yaml')
- 接著,這個元件會使用 BigQuery Python 用戶端程式庫,將資料從 BigQuery 下載至 Pandas DataFrame,然後以 CSV 檔案格式建立該資料的輸出構件。這會做為輸入內容傳遞至下一個元件
建立元件來訓練 Scikit-learn 模型
在這個元件中,我們會取得先前產生的 CSV,用來訓練 Scikit-learn 決策樹模型。這個元件會匯出產生的 Scikit 模型,以及 Metrics
構件,其中包含模型的準確度、架構,以及用於訓練模型的資料集大小:
@component(
packages_to_install=["sklearn", "pandas", "joblib", "db-dtypes"],
base_image="python:3.9",
output_component_file="beans_model_component.yaml",
)
def sklearn_train(
dataset: Input[Dataset],
metrics: Output[Metrics],
model: Output[Model]
):
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_curve
from sklearn.model_selection import train_test_split
from joblib import dump
import pandas as pd
df = pd.read_csv(dataset.path)
labels = df.pop("Class").tolist()
data = df.values.tolist()
x_train, x_test, y_train, y_test = train_test_split(data, labels)
skmodel = DecisionTreeClassifier()
skmodel.fit(x_train,y_train)
score = skmodel.score(x_test,y_test)
print('accuracy is:',score)
metrics.log_metric("accuracy",(score * 100.0))
metrics.log_metric("framework", "Scikit Learn")
metrics.log_metric("dataset_size", len(df))
dump(skmodel, model.path + ".joblib")
定義元件,將模型上傳至 Vertex AI
最後,我們的最後一個元件會使用您在上一個步驟中訓練過的模型,將模型上傳到 Vertex AI,然後部署至端點:
@component(
packages_to_install=["google-cloud-aiplatform"],
base_image="python:3.9",
output_component_file="beans_deploy_component.yaml",
)
def deploy_model(
model: Input[Model],
project: str,
region: str,
vertex_endpoint: Output[Artifact],
vertex_model: Output[Model]
):
from google.cloud import aiplatform
aiplatform.init(project=project, location=region)
deployed_model = aiplatform.Model.upload(
display_name="beans-model-pipeline",
artifact_uri = model.uri.replace("model", ""),
serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.0-24:latest"
)
endpoint = deployed_model.deploy(machine_type="n1-standard-4")
# Save data to the output params
vertex_endpoint.uri = endpoint.resource_name
vertex_model.uri = deployed_model.resource_name
我們會使用 Vertex AI SDK 上傳模型,並使用預建的預測容器。接著將模型部署至端點,並將 URI 傳回模型和端點資源。在本程式碼研究室的後續內容中,您將進一步瞭解將這項資料做為構件傳回的意義。
定義及編譯管道
我們已定義三個元件,接下來將建立管道定義。這裡說明輸入和輸出構件如何在步驟之間流動:
@pipeline(
# Default pipeline root. You can override it when submitting the pipeline.
pipeline_root=PIPELINE_ROOT,
# A name for the pipeline.
name="mlmd-pipeline",
)
def pipeline(
bq_table: str = "",
output_data_path: str = "data.csv",
project: str = PROJECT_ID,
region: str = REGION
):
dataset_task = get_dataframe(bq_table)
model_task = sklearn_train(
dataset_task.output
)
deploy_task = deploy_model(
model=model_task.outputs["model"],
project=project,
region=region
)
以下會產生 JSON 檔案,您可以用來執行管道:
compiler.Compiler().compile(
pipeline_func=pipeline, package_path="mlmd_pipeline.json"
)
啟動兩個管道執行作業
接下來,我們將啟動兩個管道執行作業。首先,讓我們定義要用於管道工作 ID 的時間戳記:
from datetime import datetime
TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")
請注意,管道在執行時會採用一個參數:我們要用來訓練資料的 bq_table
。這個管道執行作業會使用豆類資料集的小型版本:
run1 = aiplatform.PipelineJob(
display_name="mlmd-pipeline",
template_path="mlmd_pipeline.json",
job_id="mlmd-pipeline-small-{0}".format(TIMESTAMP),
parameter_values={"bq_table": "sara-vertex-demos.beans_demo.small_dataset"},
enable_caching=True,
)
接下來,請使用相同資料集的較大版本建立另一個管道執行作業。
run2 = aiplatform.PipelineJob(
display_name="mlmd-pipeline",
template_path="mlmd_pipeline.json",
job_id="mlmd-pipeline-large-{0}".format(TIMESTAMP),
parameter_values={"bq_table": "sara-vertex-demos.beans_demo.large_dataset"},
enable_caching=True,
)
最後,為這兩次執行作業啟動管道執行作業。建議您在兩個分開的筆記本儲存格中執行這項操作,以便查看每次執行的輸出內容。
run1.submit()
接著,啟動第二次執行作業:
run2.submit()
執行這個儲存格後,您會在 Vertex AI 控制台中看見各個管道的連結。開啟該連結即可查看管道的詳細資料:
完成後 (這個管道每次執行大約需要 10 到 15 分鐘),您會看到類似下方的畫面:
您現已完成兩個管道執行作業,現在可以進一步瞭解管道構件、指標和歷程。
6. 瞭解管道構件和歷程
在管道圖中,您會在每個步驟後方看到小方塊。這些是構件,或管道步驟產生的輸出內容。構件有許多類型,在這個特定管道中,我們有資料集、指標、模型和端點構件。按一下 UI 頂端的「Expand Artifacts」滑桿,即可查看每個構件詳細資料:
點選構件即可查看更多詳細資料,包括該構件的 URI。舉例來說,點選「vertex_endpoint」vertex_endpoint構件就會顯示 URI,您可以在 Vertex AI 控制台中找到該已部署的端點:
Metrics
構件可讓您傳遞與特定管道步驟相關聯的自訂指標。在管道的 sklearn_train
元件中,我們記錄了模型準確率、架構和資料集大小的指標。按一下指標構件,即可查看詳細資料:
每個構件都有Lineage,用於說明與其相關聯的其他構件。再次按一下管道的 vertex_endpoint 構件,然後按一下「View Lineage」按鈕:
系統會開啟一個新分頁,您可以在其中查看與所選項目相關聯的所有構件。您的系譜圖會如下所示:
這會顯示與這個端點相關聯的模型、指標和資料集。這項檢測的實用性何在?您可能會將模型部署至多個端點,或者需要瞭解用於訓練模型的特定資料集,以便將模型部署至您要查看的端點。沿革圖可協助您瞭解機器學習系統中其他部分的每個構件。您也可以透過程式輔助存取歷程,我們稍後會在本程式碼研究室中說明。
7. 比較管道執行作業
單一管道很可能會執行多次,可能會使用不同的輸入參數、新資料,或是由團隊中的人員執行。為了追蹤管道執行情形,建議您根據各種指標比較管道。本節將介紹兩種比較執行作業的方法。
在管道 UI 中比較執行作業
在 Cloud 控制台中,前往「管道」資訊主頁。這可讓您概略瞭解已執行的每個管道執行作業。檢查最後兩次執行結果,然後按一下頂端的「比較」按鈕:
這會帶我們前往一個頁面,讓我們比較所選執行作業的輸入參數和指標。請留意上述兩項執行作業不同的 BigQuery 資料表、資料集大小和準確率值:
您可以使用這個 UI 功能比較兩次以上的執行作業,甚至比較不同管道的執行作業。
比較使用 Vertex AI SDK 的執行作業
在執行許多管道時,您可能會希望以程式輔助方式取得這些比較指標,進一步深入瞭解指標詳細資料並建立視覺化效果。
您可以使用 aiplatform.get_pipeline_df()
方法存取執行中繼資料。我們會在此取得相同管道最後兩次執行作業的中繼資料,並將其載入 Pandas DataFrame。此處的 pipeline
參數是指管道定義中所指定的管道名稱:
df = aiplatform.get_pipeline_df(pipeline="mlmd-pipeline")
df
當您列印 DataFrame 時,會看到類似以下的內容:
我們在這裡只執行管道兩次,但您可以想像,如果執行次數更多,會有多少指標。接下來,我們會使用 matchartlib 建立自訂圖表,查看模型準確率與訓練用資料量之間的關係。
在新筆記本儲存格中執行下列指令:
plt.plot(df["metric.dataset_size"], df["metric.accuracy"],label="Accuracy")
plt.title("Accuracy and dataset size")
plt.legend(loc=4)
plt.show()
畫面應如下所示:
8. 查詢管道指標
除了取得所有管道指標的 DataFrame,您可能還想以程式輔助方式查詢機器學習系統中建立的構件。您可以在此建立自訂資訊主頁,或讓貴機構中的其他人查看特定構件詳細資料。
取得所有模型構件
如要以這種方式查詢構件,我們會建立 MetadataServiceClient
:
API_ENDPOINT = "{}-aiplatform.googleapis.com".format(REGION)
metadata_client = aiplatform_v1.MetadataServiceClient(
client_options={
"api_endpoint": API_ENDPOINT
}
)
接下來,我們會向該端點提出 list_artifacts
要求,並傳遞篩選器,指出我們希望在回應中看到哪些構件。首先,讓我們取得專案中所有模型的構件。如要這麼做,請在筆記本中執行下列指令:
MODEL_FILTER="schema_title = \"system.Model\""
artifact_request = aiplatform_v1.ListArtifactsRequest(
parent="projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
filter=MODEL_FILTER
)
model_artifacts = metadata_client.list_artifacts(artifact_request)
產生的 model_artifacts
回應會包含專案中每個模型構件的可迴圈物件,以及每個模型的相關中繼資料。
篩選物件並在 DataFrame 中顯示
如果我們可以更輕鬆地將產生的構件查詢視覺化,將會非常方便。接下來,我們來取得 2021 年 8 月 10 日後建立的所有成果,並顯示 LIVE
狀態。執行這項要求後,我們會在 Pandas DataFrame 中顯示結果。首先執行要求:
LIVE_FILTER = "create_time > \"2021-08-10T00:00:00-00:00\" AND state = LIVE"
artifact_req = {
"parent": "projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
"filter": LIVE_FILTER
}
live_artifacts = metadata_client.list_artifacts(artifact_req)
接著,在 DataFrame 中顯示結果:
data = {'uri': [], 'createTime': [], 'type': []}
for i in live_artifacts:
data['uri'].append(i.uri)
data['createTime'].append(i.create_time)
data['type'].append(i.schema_title)
df = pd.DataFrame.from_dict(data)
df
畫面顯示的內容如下:
除了這裡嘗試的條件外,您也可以根據其他條件篩選構件。
這樣就完成實驗室了!
🎉 恭喜!🎉
您已瞭解如何使用 Vertex AI 執行下列作業:
- 使用 Kubeflow Pipelines SDK 建構機器學習管道,在 Vertex AI 中建立資料集,並在該資料集上訓練及部署自訂 Scikit-learn 模型
- 撰寫可產生構件和中繼資料的自訂管線元件
- 比較 Vertex Pipelines 執行作業,包括在 Cloud 控制台和程式碼中執行
- 追蹤管道產生的構件歷程
- 查詢管道執行作業的中繼資料
如要進一步瞭解 Vertex 的其他部分,請參閱說明文件。
9. 清理
為避免產生費用,建議您刪除在本研究室中建立的資源。
停止或刪除 Notebooks 執行個體
如果您想繼續使用在本實驗室中建立的 Notebook,建議您在未使用時關閉 Notebook。在 Cloud 控制台的 Notebook 使用者介面中,選取 Notebook,然後選取「Stop」。如要完全刪除執行個體,請選取「刪除」:
刪除 Vertex AI 端點
如要刪除已部署的端點,請前往 Vertex AI 控制台的「Endpoints」專區,然後按一下刪除圖示:
刪除 Cloud Storage 值區
如要刪除儲存體值區,請使用 Cloud 控制台的「導覽」選單,前往「儲存體」頁面,選取所需值區,然後按一下「刪除」: