Skip to content

Commit

Permalink
Copy Files From Source Repo (2024-10-20 23:40)
Browse files Browse the repository at this point in the history
  • Loading branch information
olprod committed Oct 21, 2024
1 parent a008d82 commit e45dadd
Show file tree
Hide file tree
Showing 15 changed files with 567 additions and 107 deletions.
2 changes: 1 addition & 1 deletion Instructions/Exercises/01-Explore-Azure-Databricks.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks を探索する
title: '非推奨: Azure Databricks を探索する'
---

# Azure Databricks を探索する
Expand Down
2 changes: 1 addition & 1 deletion Instructions/Exercises/02-Use-Spark-in-Azure-Databricks.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks で Apache Spark を使用する
title: '非推奨: Azure Databricks で Apache Spark を使用する'
---

# Azure Databricks で Apache Spark を使用する
Expand Down
12 changes: 6 additions & 6 deletions Instructions/Exercises/03-Delta-lake-in-Azure-Databricks.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks で Delta Lake を使用する
title: '非推奨: Azure Databricks で Delta Lake を使用する'
---

# Azure Databricks で Delta Lake を使用する
Expand All @@ -13,7 +13,7 @@ Delta Lake は、データ レイクの上に Spark 用のトランザクショ

> **ヒント**: 既に Azure Databricks ワークスペースがある場合は、この手順をスキップして、既存のワークスペースを使用できます。
この演習には、新しい Azure Databricks ワークスペースをプロビジョニングするスクリプトが含まれています。 このスクリプトは、この演習で必要なコンピューティング コアに対する十分なクォータが Azure サブスクリプションにあるリージョンに、*Premium* レベルの Azure Databricks ワークスペース リソースを作成しようとします。また、使用するユーザー アカウントのサブスクリプションに、Azure Databricks ワークスペース リソースを作成するための十分なアクセス許可があることを前提としています。 十分なクォータやアクセス許可がないためにスクリプトが失敗した場合は、Azure portal で、Azure Databricks ワークスペースを対話形式で作成してみてください
この演習には、新しい Azure Databricks ワークスペースをプロビジョニングするスクリプトが含まれています。 このスクリプトは、この演習で必要なコンピューティング コアに対する十分なクォータが Azure サブスクリプションにあるリージョンに、*Premium* レベルの Azure Databricks ワークスペース リソースを作成しようとします。また、使用するユーザー アカウントのサブスクリプションに、Azure Databricks ワークスペース リソースを作成するための十分なアクセス許可があることを前提としています。 十分なクォータやアクセス許可がないためにスクリプトが失敗した場合は、[Azure portal で、Azure Databricks ワークスペースを対話形式で作成](https://learn.microsoft.com/azure/databricks/getting-started/#--create-an-azure-databricks-workspace)してみてください

1. Web ブラウザーで、`https://portal.azure.com`[Azure portal](https://portal.azure.com) にサインインします。
2. ページ上部の検索バーの右側にある **[\>_]** ボタンを使用して、Azure portal に新しい Cloud Shell を作成します。メッセージが表示されたら、***PowerShell*** 環境を選んで、ストレージを作成します。 次に示すように、Azure portal の下部にあるペインに、Cloud Shell のコマンド ライン インターフェイスが表示されます。
Expand Down Expand Up @@ -82,7 +82,7 @@ Azure Databricks は、Apache Spark "クラスター" を使用して複数の
wget -O /dbfs/delta_lab/products.csv https://raw.githubusercontent.com/MicrosoftLearning/mslearn-databricks/main/data/products.csv
```
1. そのセルの左側にある **[▸ セルの実行]** メニュー オプションを使用して実行します。 そして、コードによって実行される Spark ジョブが完了するまで待ちます。
1. セルの左側にある **[▸ セルの実行]** メニュー オプションを使用して実行を行います。 そして、コードによって実行される Spark ジョブが完了するまで待ちます。
1. 既存のコード セルの下で、 **[+]** アイコンを使用して新しいコード セルを追加します。 次に、新しいセルに次のコードを入力して実行し、ファイルからデータを読み込み、最初の 10 行を表示します。
```python
Expand Down Expand Up @@ -156,8 +156,8 @@ Azure Databricks は、Apache Spark "クラスター" を使用して複数の
ここまで、テーブルの基になった Parquet ファイルが含まれるフォルダーからデータを読み込むことで、デルタ テーブルを操作しました。 データをカプセル化する "カタログ テーブル" を定義し、SQL コードで参照できる名前付きテーブル エンティティを提供できます。** Spark では、デルタ レイク用に次の 2 種類のカタログ テーブルがサポートされています。
- テーブル データを含む Parquet ファイルへのパスで定義される "外部" テーブル。**
- Spark プール用の Hive メタストアで定義されている "*マネージド*" テーブル。
- テーブル データを含むファイルへのパスで定義される "外部" テーブル。**
- メタストアに定義される "マネージド" テーブル。**
### 外部テーブルを作成する
Expand Down Expand Up @@ -188,7 +188,7 @@ Azure Databricks は、Apache Spark "クラスター" を使用して複数の
spark.sql("DESCRIBE EXTENDED AdventureWorks.ProductsManaged").show(truncate=False)
```
このテーブルで使用される Parquet ファイルのパスは指定しませんでした。これは Hive メタストアで管理され、テーブルの説明の **Location** プロパティ (**dbfs:/user/hive/warehouse/** パス内) に表示されます
このテーブルで使用される Parquet ファイルのパスは指定しませんでした。これは Hive メタストアで管理され、テーブルの説明の **Location** プロパティに表示されます
1. 次のコードを使用して、マネージド テーブルにクエリを実行します。構文はマネージド テーブルの場合と同じであることに注意してください。
Expand Down
2 changes: 1 addition & 1 deletion Instructions/Exercises/04-Azure-Databricks-SQL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks で SQL ウェアハウスを使用する
title: '非推奨: Azure Databricks で SQL ウェアハウスを使用する'
---

# Azure Databricks で SQL ウェアハウスを使用する
Expand Down
2 changes: 1 addition & 1 deletion Instructions/Exercises/05-Azure-Databricks-Data-Factory.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Data Factory を使用して Azure Databricks ノートブックを自動化する
title: '非推奨: Azure Data Factory を使用して Azure Databricks ノートブックを自動化する'
---

# Azure Data Factory を使用して Azure Databricks ノートブックを自動化する
Expand Down
4 changes: 2 additions & 2 deletions Instructions/Exercises/06-Databricks-ML.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks での機械学習の概要
title: '非推奨: Azure Databricks で機械学習を開始する'
---

# Azure Databricks での機械学習の概要
Expand All @@ -17,7 +17,7 @@ lab:

> **ヒント**: 既に Azure Databricks ワークスペースがある場合は、この手順をスキップして、既存のワークスペースを使用できます。
この演習には、新しい Azure Databricks ワークスペースをプロビジョニングするスクリプトが含まれています。 このスクリプトは、この演習で必要なコンピューティング コアに対する十分なクォータが Azure サブスクリプションにあるリージョンに、*Premium* レベルの Azure Databricks ワークスペース リソースを作成しようとします。また、使用するユーザー アカウントのサブスクリプションに、Azure Databricks ワークスペース リソースを作成するための十分なアクセス許可があることを前提としています。 十分なクォータやアクセス許可がないためにスクリプトが失敗した場合は、Azure portal で、Azure Databricks ワークスペースを対話形式で作成してみてください
この演習には、新しい Azure Databricks ワークスペースをプロビジョニングするスクリプトが含まれています。 このスクリプトは、この演習で必要なコンピューティング コアに対する十分なクォータが Azure サブスクリプションにあるリージョンに、*Premium* レベルの Azure Databricks ワークスペース リソースを作成しようとします。また、使用するユーザー アカウントのサブスクリプションに、Azure Databricks ワークスペース リソースを作成するための十分なアクセス許可があることを前提としています。 十分なクォータやアクセス許可がないためにスクリプトが失敗した場合は、[Azure portal で、Azure Databricks ワークスペースを対話形式で作成](https://learn.microsoft.com/azure/databricks/getting-started/#--create-an-azure-databricks-workspace)してみてください

1. Web ブラウザーで、`https://portal.azure.com`[Azure portal](https://portal.azure.com) にサインインします。
2. ページ上部の検索バーの右側にある **[\>_]** ボタンを使用して、Azure portal に新しい Cloud Shell を作成します。メッセージが表示されたら、***PowerShell*** 環境を選んで、ストレージを作成します。 次に示すように、Azure portal の下部にあるペインに、Cloud Shell のコマンド ライン インターフェイスが表示されます。
Expand Down
2 changes: 1 addition & 1 deletion Instructions/Exercises/07-MLflow.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks で MLflow を使用する
title: '非推奨: Azure Databricks で MLflow を使用する'
---

# Azure Databricks で MLflow を使用する
Expand Down
2 changes: 1 addition & 1 deletion Instructions/Exercises/08-Hyperparams.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: Azure Databricks で機械学習用にハイパーパラメーターを最適化する
title: '非推奨: Azure Databricks で機械学習用にハイパーパラメーターを最適化する'
---

# Azure Databricks で機械学習用にハイパーパラメーターを最適化する
Expand Down
2 changes: 1 addition & 1 deletion Instructions/Exercises/09-automl.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: AutoML を使用してモデルをトレーニングする
title: '非推奨: AutoML を使用してモデルをトレーニングする'
---

# AutoML を使用してモデルをトレーニングする
Expand Down
89 changes: 2 additions & 87 deletions Instructions/Exercises/10-Deep-learning.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
lab:
title: ディープ ラーニング モデルをトレーニングする
title: '非推奨: ディープ ラーニング モデルをトレーニングする'
---

# ディープ ラーニング モデルをトレーニングする
Expand All @@ -17,7 +17,7 @@ lab:

> **ヒント**: 既に Azure Databricks ワークスペースがある場合は、この手順をスキップして、既存のワークスペースを使用できます。
この演習には、新しい Azure Databricks ワークスペースをプロビジョニングするスクリプトが含まれています。 このスクリプトは、この演習で必要なコンピューティング コアに対する十分なクォータが Azure サブスクリプションにあるリージョンに、*Premium* レベルの Azure Databricks ワークスペース リソースを作成しようとします。また、使用するユーザー アカウントのサブスクリプションに、Azure Databricks ワークスペース リソースを作成するための十分なアクセス許可があることを前提としています。 十分なクォータやアクセス許可がないためにスクリプトが失敗した場合は、Azure portal で、Azure Databricks ワークスペースを対話形式で作成してみてください
この演習には、新しい Azure Databricks ワークスペースをプロビジョニングするスクリプトが含まれています。 このスクリプトは、この演習で必要なコンピューティング コアに対する十分なクォータが Azure サブスクリプションにあるリージョンに、*Premium* レベルの Azure Databricks ワークスペース リソースを作成しようとします。また、使用するユーザー アカウントのサブスクリプションに、Azure Databricks ワークスペース リソースを作成するための十分なアクセス許可があることを前提としています。 十分なクォータやアクセス許可がないためにスクリプトが失敗した場合は、[Azure portal で、Azure Databricks ワークスペースを対話形式で作成](https://learn.microsoft.com/azure/databricks/getting-started/#--create-an-azure-databricks-workspace)してみてください

1. Web ブラウザーで、`https://portal.azure.com`[Azure portal](https://portal.azure.com) にサインインします。
2. ページ上部の検索バーの右側にある **[\>_]** ボタンを使用して、Azure portal に新しい Cloud Shell を作成します。メッセージが表示されたら、***PowerShell*** 環境を選んで、ストレージを作成します。 次に示すように、Azure portal の下部にあるペインに、Cloud Shell のコマンド ライン インターフェイスが表示されます。
Expand Down Expand Up @@ -406,91 +406,6 @@ PyTorch では、トレーニング データと検証データが、"*データ
print('Prediction:',predicted.item())
```
## Horovod を使用してトレーニングを配布する
前のモデル トレーニングは、クラスターの単一ノードで実行されました。 実際のところ、ディープ ラーニング モデルのトレーニングは一般的に、1 台のコンピューターで複数の CPU (または GPU) にわたってスケーリングすることをお勧めします。ただし、大量のトレーニング データを、ディープ ラーニング モデルの複数のレイヤーに渡して通過させる必要がある場合は、トレーニング作業を複数のクラスター ノードに分散させることで、ある程度効率化を図れることがあります。
Horovod は、ディープ ラーニング トレーニングを、Spark クラスター内の複数のノード (Azure Databricks ワークスペースにプロビジョニングされているノードなど) に配布するときに使用できるオープン ソース ライブラリです。
### トレーニング関数を作成する
Horovod を使用するには、トレーニング設定を構成するコードをカプセル化し、新しい関数で**トレーニング**関数を呼び出します。これを **HorovodRunner** クラスを使用して実行し、複数のノードに実行を分散します。 トレーニング ラッパー関数では、さまざまな Horovod クラスを使用して分散データ ローダーを定義することで、各ノードがデータセット全体のサブセットで動作し、モデルの重みとオプティマイザーの初期状態をすべてのノードにブロードキャストし、使用されているノードの数を特定し、コードが実行されているノードを判断できるようにします。
1. 次のコードを実行して、Horovod を使用してモデルをトレーニングする関数を作成します。
```python
import horovod.torch as hvd
from sparkdl import HorovodRunner
def train_hvd(model):
from torch.utils.data.distributed import DistributedSampler
hvd.init()
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
if device.type == 'cuda':
# Pin GPU to local rank
torch.cuda.set_device(hvd.local_rank())
# Configure the sampler so that each worker gets a distinct sample of the input dataset
train_sampler = DistributedSampler(train_ds, num_replicas=hvd.size(), rank=hvd.rank())
# Use train_sampler to load a different sample of data on each worker
train_loader = torch.utils.data.DataLoader(train_ds, batch_size=20, sampler=train_sampler)
# The effective batch size in synchronous distributed training is scaled by the number of workers
# Increase learning_rate to compensate for the increased batch size
learning_rate = 0.001 * hvd.size()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
# Wrap the local optimizer with hvd.DistributedOptimizer so that Horovod handles the distributed optimization
optimizer = hvd.DistributedOptimizer(optimizer, named_parameters=model.named_parameters())
# Broadcast initial parameters so all workers start with the same parameters
hvd.broadcast_parameters(model.state_dict(), root_rank=0)
hvd.broadcast_optimizer_state(optimizer, root_rank=0)
optimizer.zero_grad()
# Train over 50 epochs
epochs = 100
for epoch in range(1, epochs + 1):
print('Epoch: {}'.format(epoch))
# Feed training data into the model to optimize the weights
train_loss = train(model, train_loader, optimizer)
# Save the model weights
if hvd.rank() == 0:
model_file = '/dbfs/penguin_classifier_hvd.pt'
torch.save(model.state_dict(), model_file)
print('model saved as', model_file)
```
1. 次のコードを使用して、**HorovodRunner** オブジェクトから自分の関数を呼び出します。
```python
# Reset random seed for PyTorch
torch.manual_seed(0)
# Create a new model
new_model = PenguinNet()
# We'll use CrossEntropyLoss to optimize a multiclass classifier
loss_criteria = nn.CrossEntropyLoss()
# Run the distributed training function on 2 nodes
hr = HorovodRunner(np=2, driver_log_verbosity='all')
hr.run(train_hvd, model=new_model)
# Load the trained weights and test the model
test_model = PenguinNet()
test_model.load_state_dict(torch.load('/dbfs/penguin_classifier_hvd.pt'))
test_loss = test(test_model, test_loader)
```
すべての出力を表示するには、スクロールしなければならない場合があります。これにより Horovod からの情報メッセージに続いて、ノードからのログ出力が表示されるはずです (**driver_log_verbosity** パラメーターが **all** に設定されているため)。 ノード出力には、各エポックの後の損失が表示されます。 最後に、**テスト**関数を使用して、トレーニング済みのモデルをテストします。
> **ヒント**: 各エポックの後の損失が減らない場合は、セルをもう一度実行してみてください。
## クリーンアップ
Azure Databricks ポータルの **[コンピューティング]** ページでクラスターを選択し、**[■ 終了]** を選択してクラスターをシャットダウンします。
Expand Down
Loading

0 comments on commit e45dadd

Please sign in to comment.