mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Port tensorflow benchmark.
PiperOrigin-RevId: 323633737
This commit is contained in:
committed by
gVisor bot
parent
15d13e3398
commit
5873b0f43f
@@ -0,0 +1,7 @@
|
||||
FROM tensorflow/tensorflow:1.13.2
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y git
|
||||
RUN git clone --depth 1 https://github.com/aymericdamien/TensorFlow-Examples.git
|
||||
RUN python -m pip install -U pip setuptools
|
||||
RUN python -m pip install matplotlib
|
||||
@@ -33,6 +33,7 @@ func BenchmarkFfmpeg(b *testing.B) {
|
||||
|
||||
ctx := context.Background()
|
||||
container := machine.GetContainer(ctx, b)
|
||||
defer container.CleanUp(ctx)
|
||||
cmd := strings.Split("ffmpeg -i video.mp4 -c:v libx264 -preset veryslow output.mp4", " ")
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
load("//tools:defs.bzl", "go_library", "go_test")
|
||||
|
||||
package(licenses = ["notice"])
|
||||
|
||||
go_library(
|
||||
name = "ml",
|
||||
testonly = 1,
|
||||
srcs = ["ml.go"],
|
||||
deps = ["//test/benchmarks/harness"],
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "ml_test",
|
||||
size = "large",
|
||||
srcs = ["tensorflow_test.go"],
|
||||
library = ":ml",
|
||||
deps = [
|
||||
"//pkg/test/dockerutil",
|
||||
"//test/benchmarks/harness",
|
||||
],
|
||||
)
|
||||
@@ -0,0 +1,31 @@
|
||||
// Copyright 2020 The gVisor Authors.
|
||||
//
|
||||
// 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.
|
||||
|
||||
// Package ml holds benchmarks around machine learning performance.
|
||||
package ml
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"gvisor.dev/gvisor/test/benchmarks/harness"
|
||||
)
|
||||
|
||||
var h harness.Harness
|
||||
|
||||
// TestMain is the main method for package ml.
|
||||
func TestMain(m *testing.M) {
|
||||
h.Init()
|
||||
os.Exit(m.Run())
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
// Copyright 2020 The gVisor Authors.
|
||||
//
|
||||
// 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.
|
||||
package ml
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"gvisor.dev/gvisor/pkg/test/dockerutil"
|
||||
"gvisor.dev/gvisor/test/benchmarks/harness"
|
||||
)
|
||||
|
||||
// BenchmarkTensorflow runs workloads from a TensorFlow tutorial.
|
||||
// See: https://github.com/aymericdamien/TensorFlow-Examples
|
||||
func BenchmarkTensorflow(b *testing.B) {
|
||||
workloads := map[string]string{
|
||||
"GradientDecisionTree": "2_BasicModels/gradient_boosted_decision_tree.py",
|
||||
"Kmeans": "2_BasicModels/kmeans.py",
|
||||
"LogisticRegression": "2_BasicModels/logistic_regression.py",
|
||||
"NearestNeighbor": "2_BasicModels/nearest_neighbor.py",
|
||||
"RandomForest": "2_BasicModels/random_forest.py",
|
||||
"ConvolutionalNetwork": "3_NeuralNetworks/convolutional_network.py",
|
||||
"MultilayerPerceptron": "3_NeuralNetworks/multilayer_perceptron.py",
|
||||
"NeuralNetwork": "3_NeuralNetworks/neural_network.py",
|
||||
}
|
||||
|
||||
machine, err := h.GetMachine()
|
||||
if err != nil {
|
||||
b.Fatalf("failed to get machine: %v", err)
|
||||
}
|
||||
defer machine.CleanUp()
|
||||
|
||||
for name, workload := range workloads {
|
||||
b.Run(name, func(b *testing.B) {
|
||||
ctx := context.Background()
|
||||
container := machine.GetContainer(ctx, b)
|
||||
defer container.CleanUp(ctx)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
b.StopTimer()
|
||||
if err := harness.DropCaches(machine); err != nil {
|
||||
b.Skipf("failed to drop caches: %v. You probably need root.", err)
|
||||
}
|
||||
b.StartTimer()
|
||||
|
||||
if out, err := container.Run(ctx, dockerutil.RunOpts{
|
||||
Image: "benchmarks/tensorflow",
|
||||
Env: []string{"PYTHONPATH=$PYTHONPATH:/TensorFlow-Examples/examples"},
|
||||
WorkDir: "/TensorFlow-Examples/examples",
|
||||
}, "python", workload); err != nil {
|
||||
b.Fatalf("failed to run container: %v logs: %s", err, out)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user