Google’s Cloud TPU Pods are now publicly available in beta
cloud.google.com
cloud.google.com
A snippet from https://cloud.google.com/terms/service-terms#12-google-cloud...:
Customer will not, and will not allow third parties to: (i) use these Services
to create, train, or improve (directly or indirectly) a similar or competing
product or service or (ii) integrate these Services with any applications for
any embedded devices such as cars, TVs, appliances, or speakers without Google's
prior written permission. These Services can only be integrated with
applications for the following personal computing devices: smartphones, tablets,
laptops, and desktops. In addition to any other available remedies, Google may
immediately suspend or terminate Customer's use of these Services based on any
suspected violation of these terms, and violation of these terms is deemed
violation of Google's Intellectual Property Rights. Customer will provide Google
with any assistance Google requests to reasonably confirm compliance with these
terms (including interviews with Customer employees and inspection of Customer
source code, model training data, and engineering documentation). These terms
will survive termination or expiration of the Agreement.I had no idea GCP had such terms. I had been considering alternative cloud hosting for a ML SaaS but will definitely not consider GCP.
Do they have actual business customers that agree to those terms?
Is this legal? Forgive me because I actually don't know if it could be?
A common case is an employment contract that has an NDA or non-compete or non-poaching section survive the employment itself. I can't say, "I quit, therefore my employment contract doesn't apply any more, therefore I'm going to push all the company secrets to GitHub and you can't stop me."
Does someone knows of some instance of ToS from a big company being challenged in court?
Now I guess they apply the same principle to their GCP customers.
Yeah it's not their spare time; it's work time. I would enjoy being able to spend one day a week working on whatever I like _for the company that employs me_. It's not a vacation day you spend in the office.
It's often done in other companies to a lesser degree with hackdays/weeks and is a good way to clean up tech debt or kickstart new product ideas.
Genuinely curious about the restriction regarding embedded devices.
If there's a mishap, it is the responsibility of the owning company, certainly not Google.
So what gives? Why would they do this?
These specific ML-as-a-service products are pretty easy to plug into and resell to third parties, which is why the wording is so restrictive in the TOS.
Many of Google Clouds other ML products, which typically are more customizeable and powerful, do not have these restrictions. The way your comment is worded makes it seem like this restriction is on all of Google Clouds ML products, but it's not.
12.1 The following terms apply only to current and future Google Cloud Platform Machine Learning Services specifically listed in the "Google Cloud Platform Machine Learning Services Group" category on the Google Cloud Platform Services Summary page
Those services are (from https://cloud.google.com/terms/services):
- Cloud AutoML
- Cloud Text-to-Speech
- Dialogflow Enterprise Edition
- Google Cloud Data Labeling
- Google Cloud Natural Language
- Google Cloud Speech-to-Text
- Google Cloud Video Intelligence
- Google Cloud VisionIf you read the list, you will see they're highly specialized, out of the box ML products and super easy to resell, hence the TOS restrictions.
I do understand they don’t want to make it too easy to resell their research. But having access to all your source code, training data and documentation is a bit extreme. Why can’t they just tell you to stop selling your product?
See e.g. https://www.quora.com/What-is-hiybbprqag for an example where Microsoft trained their ranker on Google's long tail and substantially reduced the relevance gap on the cheap, and in a way that makes it impossible for Google to trivially regain the advantage. People misinterpreted this as "Microsoft is copying the results", but that's not what it was. Google was unwillingly teaching Bing how to rank. Google responded with personalized search.
I don't think they can realistically prevent this, though. And it's not going to be anywhere near as traceable as "hiybbprqag" was.
Talking about Google/Alphabet? Good luck with finding something not similar or competing.
Oh, it's deemed? I guess that's settled then.
The word "deemed" is almost always used by somebody who doesn't actually have the authority to decide something, but wants you to think they do.
https://ai.googleblog.com/2019/03/measuring-limits-of-data-p...
The underlying principle is that even if the silicon isn't strictly faster, you can shove a dumb amount of data through with the right architecture. And efficient training with data parallelism means that it's a worthwhile strategy.
Unless you have some data that proves otherwise?
https://dawn.cs.stanford.edu//2018/04/30/dawnbench-v1-result...
[1] https://dawn.cs.stanford.edu//benchmark/ImageNet/train.html
I’m having a hard time imagining a task where TPU would be 10x faster than V100.
These days it's pretty good. Not perfect, but you can do RNNs on it now. The FAQ has decent docs: https://cloud.google.com/tpu/docs/faq
https://storage.googleapis.com/gweb-cloudblog-publish/origin...
Devices like the v100 and t4 are ml-specific chips. You can do graphics stuff on them, but that doesn't mean that Nvidia if leaving a ton of ml performance on the table by including that capability. Indeed there may be economies of scale for them in having fewer architectures to support.
They aren't dumb. :)
I can, actually. :) Adding 10k tensor cores to a GPU would not make it run much faster, and would be prohibitive in terms of die space. Moreover getting rid of the 5,000 FP32 cores would slow down DL workloads significantly.
The 640 Tensor Cores vs 5,000 F32 cores comparison is misleading, because they are not measuring the same thing.
An "FP32/64 core" corresponds to a functional unit on the GPU streaming multiprocessor (SM) which is capable of doing one scalar FP32 operation. One FLOP, or maybe two if you are doing an FMA. V100 has 5120 FP32 units and 2560 FP64 units.
In contrast, a "Tensor Core" corresponds to a functional unit on the SM which is capable of doing 64 FMAs per clock. That is, a Tensor Core does 64 times as much work as an FP32 core. Integrated circuits aren't magic, if you're doing 64 times as much work, you need more die space.
Moreover, there is nothing to say that nvidia isn't able to use some of the same circuits for both the fp32 and tensor core operations. If they are able to do this (I expect they are) then reducing one does not necessarily make space for the other.
Increasing the number of tensor core flops by a factor of 20 (500 -> 10,000) would not make the GPU 20x faster, probably not even 2x faster. This is because you will quickly run into GPU memory bandwidth limitations. This is not a simple problem to solve, nvidia GPUs are already pushing what is possible with HBM.
Lastly, although you're correct that, in terms of number of flops, most DL computation is done by tensor cores (if you've written your application in fp16), that doesn't mean we could get rid of the f32 compute units, or even that significantly reducing their number would have minimal effect on our models. Recall Amdahl's law. We usually think about it in terms of speedups, but it applies equally well in terms of slowdowns. If even 10% of our time is spent doing f32 compute, and we make it 10x slower...well, you can do the math. https://en.wikipedia.org/wiki/Amdahl%27s_law
Indeed, I was just looking at an fp16 tensor-core cudnn kernel yesterday, and even it did a significant amount of fp32 compute.
The implicit argument I read in parent post is that nvidia could build a significantly better DL chip "simply" by changing the quantities of different functional units on the GPU. This is predicated on nvidia being quite bad at their core competency of designing hardware, despite their being the market leader in DL hardware. It's kind of staggering to me how quickly nonexperts jump to this conclusion.
Here's a talk I gave at cppcon about much of this (note that it's pre Volta). https://www.youtube.com/watch?v=KHa-OSrZPGo&t=1s
I think your main point is that memory bandwidth would prevent the performance speedup. Are V100s memory bound when executing F16 ops on tensor cores?
Second, do we really need dedicated FP32 cores for DL? Tensor cores accumulate in FP32 (is that what you meant when you said they did a significant amount of FP32 compute?), and recent papers indicate we’re moving towards 8 bit training [1]. Besides, do TPUs use dedicated FP32 hw?
Finally, if the memory bandwidth is indeed the bottleneck, perhaps all that die area from FP32 and especially FP64 cores could be used for massive amount of cache.
For example, massively increasing the GPU last level cache size would not have the effect of increasing memory bw much on most workloads, because cache only helps when you have temporal locality and gpus like to stream through many GB of data.
This is covered in Hennessy and Patterson if you're curious to learn more. I also talk about it some in the video I linked above.
(Also I doubt that getting rid of f64 support would be a significant die size win. I notice that v100 has, in their marketing speak, twice the fp32 cores as fp64 cores. What do you think are the chances that Nvidia decided a priori this is the optimal ratio? What if instead they are sharing resources between these functional units, at a ratio of two to one?)
To the question of, do you really need fp32 cores, I am not aware of any "widely deployed" GPU model today that does not do significant fp32 work. Perhaps there is research which suggests this isn't necessary! But that is a different thing than we were talking about here, that Nvidia could somehow make a much better chip for the things people are doing today.
I don't want to speak to the question of whether TPUs have f32 hardware, because I'm afraid of saying something that might not be public. But I think the answer to your question can easily be found by some searching and is probably even in the public docs.
And the TPU is a story of its own when it comes to usability. Take a look at their docs. TPU actually has to run on a separate machine, which you need to provision manually using their `ctpu` tool, and training of a trivial network on CIFAR looks like this: https://github.com/tensorflow/tpu/blob/master/models/experim...
I am a complete noob, so i just did Keras (to TF) and GPUs.
If i switch to TPU - its still the same code.
When i get the budget to cluster, i think I am better off with one of the Deepmind libs which TF based.
No?
As to deployment, once you figure out what works, there's also libtorch, or if that doesn't work for you for whatever reason, implementing a model you know working hyperparameters for can be done in a day or two on whatever framework works for your backend, including TF.
I know a bunch of PyTorch using people who have switched back to TF 2.0, and that is ignoring things like the Swift TF implementation.
The deployment story around TF is a lot better too.