「私たち Viant は、レイテンシに敏感なビジネスを手がけています。北バージニア リージョンが追加されたことで、私たちはカバー エリアを広げるとともに、現行ユーザーのレイテンシを短縮できます。また、Data Lake プラットフォームの能力を大幅に増強することもできます。これは競争優位につながると、私たちは考えています。」 — Linh Chung 氏、CIO at Viant, a Time Inc. Company
「私たちは最近、地球の合成画像レイヤと GeoVisual Search の両方を構築する際に、64 vCPU インスタンスを使用しました。どちらの場合も、私たちの並列処理ジョブがタスクを完了するまでに数万 CPU 時間を要しました。新しい 64 vCPU インスタンスを使用すれば、1 つのインスタンスで同時に扱える衛星画像シーンが増え、総処理時間を大幅に短縮できます。」
「私たち Smyths Toys は、顧客が求めるエクスペリエンスを、Google Cloud を利用して提供しています。すべてのワークロードにおいて、Google Cloud のユニークなインフラストラクチャとサービスを活用したいと考えています。無料の Google Cloud 移行ツールにより、私たちはほぼダウンタイムなしで、Windows サーバーを Google Cloud に簡単に移行できました。」— Smyths Toys の CTO、Rob Wilson 氏
Starting server on port 8080 Server started!
Sending request Received response: Hello there, Mete
ChatServerImpl.java
StreamObserver
ChatServerImpl.cs
npm install --save @google-cloud/storage
const Storage = require('@google-cloud/storage'); // Instantiates a client const storage = Storage(); // References an existing bucket, e.g. “my-bucket” const bucket = storage.bucket(bucketName); // Upload a local file to the bucket, e.g. “./local/path/to/file.txt” return bucket.upload(fileName) .then((results) => { const file = results[0]; console.log(`File ${file.name} uploaded`); });
<dependency> <groupid>com.google.cloud</groupid> <artifactid>google-cloud-datastore</artifactid> <version>1.0.0</version> </dependency>
// Imports the Google Cloud Client Library import com.google.cloud.datastore.Datastore; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.Entity; import com.google.cloud.datastore.Key; public class QuickstartSample { public static void main(String... args) throws Exception { // Instantiates a client Datastore datastore = DatastoreOptions.getDefaultInstance().getService(); // The kind for the new entity String kind = "Task"; // The name/ID for the new entity String name = "sampletask1"; // The Cloud Datastore key for the new entity Key taskKey = datastore.newKeyFactory().setKind(kind).newKey(name); // Prepares the new entity Entity task = Entity.newBuilder(taskKey) .set("description", "Buy milk") .build(); // Saves the entity datastore.put(task); } }
pip install --upgrade google-cloud-logging
import logging import google.cloud.logging client = google.cloud.logging.Client() # Attaches a Google Stackdriver logging handler to the root logger client.setup_logging(logging.INFO)
import logging logging.error('This is an error')
FROM busybox COPY ./lots-of-data /data RUN rm -rf /data CMD ["/bin/sh"]
FROM java:8 COPY . workdir/ WORKDIR workdir RUN GRADLE_USER_HOME=cache ./gradlew buildDeb -x test RUN dpkg -i ./gate-web/build/distributions/*.deb CMD ["/opt/gate/bin/gate"]
FROM java:8 COPY . workdir/ WORKDIR workdir RUN GRADLE_USER_HOME=cache ./gradlew buildDeb -x test && \ dpkg -i ./gate-web/build/distributions/*.deb && \ cd .. && \ rm -rf workdir CMD ["/opt/gate/bin/gate"]
steps: - name: 'java:8' env: ['GRADLE_USER_HOME=cache'] entrypoint: 'bash' args: ['-c', './gradlew gate-web:installDist -x test'] - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME:latest', '-f', 'Dockerfile.slim', '.'] images: - 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' - 'gcr.io/$PROJECT_ID/$REPO_NAME:latest'
- name: 'java:8' env: ['GRADLE_USER_HOME=cache'] entrypoint: 'bash' args: ['-c', './gradlew gate-web:installDist -x test']
- name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME:latest', '-f', 'Dockerfile.slim', '.']
FROM openjdk:8u111-jre-alpine COPY ./gate-web/build/install/gate /opt/gate RUN apk --nocache add --update bash CMD ["/opt/gate/bin/gate"]
images: - 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA' - 'gcr.io/$PROJECT_ID/$REPO_NAME:latest'
「TPU の開発はおそろしいスピードで進んで行きました。最初は回路設計エンジニア、その後は検証エンジニアと、エンジニアの採用とチップ開発を並行して進めていく忙しさです。しかし最初にできあがったチップ(ファーストシリコン)はまったく何の問題もなく動きました」 (First in-depth look at Google's TPU architecture, The Next Platform より)
「全結合 NNや畳み込み NN などいろいろな種類がありますが、要するに NN の計算とは様々なサイズの行列演算の集まりです。たくさんの乗算と加算の結果を活性化関数へと流し込むことで、たくさんの線形演算の積み重ねから非線形なふるまいを得る。これが NN の本質であり、TPU のアーキテクチャはそれをハードウェアで表現したものです」(First in-depth look at Google's TPU architecture, the Next Platform より)
MatrixMultiply
「CPU や GPU は、現代の汎用プロセッサに必要とされる様々な機能を実装する複雑なアーキテクチャを備えます。例えば、キャッシュ、分岐予測、アウトオブオーダー実行、マルチスレッド、投機プリフェッチ、アドレス計算、コンテキスト スイッチ等々。これらの機構のために多くのトランジスタと電力が費やされていますが、いずれもプロセッサの平均性能を改善するだけで、99パーセンタイルの性能(=性能のばらつきの低さ)の改善にはあまり寄与しません。TPU はシングルスレッド動作の特定用途向けプロセッサであり、これらの機構をすべて廃したミニマルな設計による多大なメリットが得られます」(8ページ)
import "google/protobuf/empty.proto"; // A simple Bookstore API. // // The API manages shelves and books resources. Shelves contain books. service Bookstore { // Returns a list of all shelves in the bookstore. rpc CreateShelf(CreateShelfRequest) returns (Shelf) {} // Returns a specific bookstore shelf. rpc GetShelf(GetShelfRequest) returns (Shelf) {} } // A shelf resource. message Shelf { // A unique shelf id. int64 id = 1; // A theme of the shelf (fiction, poetry, etc). string theme = 2; } // Request message for CreateShelf method. message CreateShelfRequest { // The shelf resource to create. Shelf shelf = 1; } // Request message for GetShelf method. message GetShelfRequest { // The ID of the shelf resource to retrieve. int64 shelf = 1; }
type: google.api.Service config_version: 3 name: bookstore.endpoints..cloud.goog title: Bookstore gRPC API apis: - name: endpoints.examples.bookstore.Bookstore Http: rules: # 'CreateShelf' can be called using the POST HTTP verb and the '/shelves' URL # path. The posted HTTP body is the JSON respresentation of the 'shelf' field # of 'CreateShelfRequest' protobuf message. # # Client example: # curl -d '{"theme":"Music"}' http://DOMAIN_NAME/v1/shelves # - selector: endpoints.examples.bookstore.Bookstore.CreateShelf post: /v1/shelves body: shelf # # 'GetShelf' is available via the GET HTTP verb and '/shelves/{shelf}' URL # path, where {shelf} is the value of the 'shelf' field of 'GetShelfRequest' # protobuf message. # # Client example - returns the first shelf: # curl http://DOMAIN_NAME/v1/shelves/1 # - selector: endpoints.examples.bookstore.Bookstore.GetShelf get: /v1/shelves/{shelf}
# # Request authentication. # authentication: providers: - id: google_service_account # Replace SERVICE-ACCOUNT-ID with your service account's email address. issuer: SERVICE-ACCOUNT-ID jwks_uri: https://www.googleapis.com/robot/v1/metadata/x509/SERVICE-ACCOUNT-ID rules: # This auth rule will apply to all methods. - selector: "*" requirements: - provider_id: google_service_account