-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into compute_snapshot_schedule_attach
- Loading branch information
Showing
12 changed files
with
658 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# Copyright 2024 Google LLC | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
name: tpu | ||
on: | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- 'tpu/**' | ||
- '.github/workflows/tpu.yaml' | ||
- '.github/workflows/test.yaml' | ||
pull_request: | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
- labeled | ||
paths: | ||
- 'tpu/**' | ||
- '.github/workflows/tpu.yaml' | ||
- '.github/workflows/test.yaml' | ||
schedule: | ||
- cron: '0 0 * * 0' | ||
jobs: | ||
test: | ||
# Ref: https://github.com/google-github-actions/auth#usage | ||
permissions: | ||
contents: 'read' | ||
id-token: 'write' | ||
if: github.event.action != 'labeled' || github.event.label.name == 'actions:force-run' | ||
uses: ./.github/workflows/test.yaml | ||
with: | ||
name: 'tpu' | ||
path: 'tpu' | ||
flakybot: | ||
# Ref: https://github.com/google-github-actions/auth#usage | ||
permissions: | ||
contents: 'read' | ||
id-token: 'write' | ||
if: github.event_name == 'schedule' && always() # always() submits logs even if tests fail | ||
uses: ./.github/workflows/flakybot.yaml | ||
needs: [test] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
/* | ||
* Copyright 2024 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
async function main(tpuClient) { | ||
// [START tpu_vm_create] | ||
// Import the TPUClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// const {TpuClient} = require('@google-cloud/tpu').v2; | ||
const {Node, NetworkConfig} = | ||
require('@google-cloud/tpu').protos.google.cloud.tpu.v2; | ||
|
||
// Instantiate a tpuClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// tpuClient = new TpuClient(); | ||
|
||
// TODO(developer): Update below line before running the sample. | ||
// Project ID or project number of the Google Cloud project you want to create a node. | ||
const projectId = await tpuClient.getProjectId(); | ||
|
||
// The name of the network you want the TPU node to connect to. The network should be assigned to your project. | ||
const networkName = 'compute-tpu-network'; | ||
|
||
// The region of the network, that you want the TPU node to connect to. | ||
const region = 'europe-west4'; | ||
|
||
// The name for your TPU. | ||
const nodeName = 'node-name-1'; | ||
|
||
// The zone in which to create the TPU. | ||
// For more information about supported TPU types for specific zones, | ||
// see https://cloud.google.com/tpu/docs/regions-zones | ||
const zone = 'europe-west4-a'; | ||
|
||
// The accelerator type that specifies the version and size of the Cloud TPU you want to create. | ||
// For more information about supported accelerator types for each TPU version, | ||
// see https://cloud.google.com/tpu/docs/system-architecture-tpu-vm#versions. | ||
const tpuType = 'v2-8'; | ||
|
||
// Software version that specifies the version of the TPU runtime to install. For more information, | ||
// see https://cloud.google.com/tpu/docs/runtimes | ||
const tpuSoftwareVersion = 'tpu-vm-tf-2.14.1'; | ||
|
||
async function callCreateTpuVM() { | ||
// Create a node | ||
const node = new Node({ | ||
name: nodeName, | ||
zone, | ||
acceleratorType: tpuType, | ||
runtimeVersion: tpuSoftwareVersion, | ||
// Define network | ||
networkConfig: new NetworkConfig({ | ||
enableExternalIps: true, | ||
network: `projects/${projectId}/global/networks/${networkName}`, | ||
subnetwork: `projects/${projectId}/regions/${region}/subnetworks/${networkName}`, | ||
}), | ||
}); | ||
|
||
const parent = `projects/${projectId}/locations/${zone}`; | ||
const request = {parent, node, nodeId: nodeName}; | ||
|
||
const [operation] = await tpuClient.createNode(request); | ||
|
||
// Wait for the create operation to complete. | ||
const [response] = await operation.promise(); | ||
|
||
console.log(`TPU VM: ${nodeName} created.`); | ||
return response; | ||
} | ||
return await callCreateTpuVM(); | ||
// [END tpu_vm_create] | ||
} | ||
|
||
module.exports = main; | ||
|
||
// TODO(developer): Uncomment below lines before running the sample. | ||
// main(...process.argv.slice(2)).catch(err => { | ||
// console.error(err); | ||
// process.exitCode = 1; | ||
// }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* Copyright 2024 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
async function main(tpuClient) { | ||
// [START tpu_vm_delete] | ||
// Import the TPUClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// const {TpuClient} = require('@google-cloud/tpu').v2; | ||
|
||
// Instantiate a tpuClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// tpuClient = new TpuClient(); | ||
|
||
// TODO(developer): Update these variables before running the sample. | ||
// Project ID or project number of the Google Cloud project you want to delete a node. | ||
const projectId = await tpuClient.getProjectId(); | ||
|
||
// The name of TPU to delete. | ||
const nodeName = 'node-name-1'; | ||
|
||
// The zone, where the TPU is created. | ||
const zone = 'europe-west4-a'; | ||
|
||
async function callDeleteTpuVM() { | ||
const request = { | ||
name: `projects/${projectId}/locations/${zone}/nodes/${nodeName}`, | ||
}; | ||
|
||
const [operation] = await tpuClient.deleteNode(request); | ||
|
||
// Wait for the delete operation to complete. | ||
const [response] = await operation.promise(); | ||
|
||
console.log(`Node: ${nodeName} deleted.`); | ||
return response; | ||
} | ||
|
||
return await callDeleteTpuVM(); | ||
// [END tpu_vm_delete] | ||
} | ||
|
||
module.exports = main; | ||
|
||
// TODO(developer): Uncomment below lines before running the sample. | ||
// main(...process.argv.slice(2)).catch(err => { | ||
// console.error(err); | ||
// process.exitCode = 1; | ||
// }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Copyright 2024 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
async function main(tpuClient) { | ||
// [START tpu_vm_get] | ||
// Import the TPUClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// const {TpuClient} = require('@google-cloud/tpu').v2; | ||
|
||
// Instantiate a tpuClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// tpuClient = new TpuClient(); | ||
|
||
// TODO(developer): Update these variables before running the sample. | ||
// Project ID or project number of the Google Cloud project you want to retrive a node. | ||
const projectId = await tpuClient.getProjectId(); | ||
|
||
// The name of TPU to retrive. | ||
const nodeName = 'node-name-1'; | ||
|
||
// The zone, where the TPU is created. | ||
const zone = 'europe-west4-a'; | ||
|
||
async function callGetTpuVM() { | ||
const request = { | ||
name: `projects/${projectId}/locations/${zone}/nodes/${nodeName}`, | ||
}; | ||
|
||
const [response] = await tpuClient.getNode(request); | ||
|
||
console.log(`Node: ${nodeName} retrived.`); | ||
return response; | ||
} | ||
|
||
return await callGetTpuVM(); | ||
// [END tpu_vm_get] | ||
} | ||
|
||
module.exports = main; | ||
|
||
// TODO(developer): Uncomment below lines before running the sample. | ||
// main(...process.argv.slice(2)).catch(err => { | ||
// console.error(err); | ||
// process.exitCode = 1; | ||
// }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* | ||
* Copyright 2024 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
async function main(tpuClient) { | ||
// [START tpu_vm_list] | ||
// Import the TPUClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// const {TpuClient} = require('@google-cloud/tpu').v2; | ||
|
||
// Instantiate a tpuClient | ||
// TODO(developer): Uncomment below line before running the sample. | ||
// tpuClient = new TpuClient(); | ||
|
||
// TODO(developer): Update these variables before running the sample. | ||
// Project ID or project number of the Google Cloud project you want to retrive a list of TPU nodes. | ||
const projectId = await tpuClient.getProjectId(); | ||
|
||
// The zone from which the TPUs are retrived. | ||
const zone = 'europe-west4-a'; | ||
|
||
async function callTpuVMList() { | ||
const request = { | ||
parent: `projects/${projectId}/locations/${zone}`, | ||
}; | ||
|
||
const [response] = await tpuClient.listNodes(request); | ||
|
||
return response; | ||
} | ||
|
||
return await callTpuVMList(); | ||
// [END tpu_vm_list] | ||
} | ||
|
||
module.exports = main; | ||
|
||
// TODO(developer): Uncomment below lines before running the sample. | ||
// main(...process.argv.slice(2)).catch(err => { | ||
// console.error(err); | ||
// process.exitCode = 1; | ||
// }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{ | ||
"name": "nodejs-docs-samples-tpu", | ||
"license": "Apache-2.0", | ||
"author": "Google Inc.", | ||
"engines": { | ||
"node": ">=16.0.0" | ||
}, | ||
"repository": "googleapis/nodejs-tpu", | ||
"private": true, | ||
"files": [ | ||
"*.js" | ||
], | ||
"scripts": { | ||
"test": "c8 mocha -p -j 2 test --timeout 1200000" | ||
}, | ||
"dependencies": { | ||
"@google-cloud/tpu": "^3.5.0", | ||
"sinon": "^19.0.2" | ||
}, | ||
"devDependencies": { | ||
"c8": "^10.0.0", | ||
"mocha": "^10.0.0" | ||
} | ||
} |
Oops, something went wrong.