HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
tensorflow
tensorflow
C++2015–2025
tensorflow / tensorflow

tensorflow

An Open Source Machine Learning Framework for Everyone

220Distinct people
304Mentions
2Explicit recommenders
201.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

An Open Source Machine Learning Framework for Everyone

GitHub

Where it is used

  • Twitter Home Timeline — Twitter Home Timeline uses TensorFlow to serve all production traffic for its ranking system using a split-network architecture. Source
  • Airbnb — Airbnb uses TensorFlow to classify images and detect objects at scale to improve the guest experience. This describes a concrete ML application in Airbnb’s product. Source

What people are saying

My friend, you've come to the right place. I happen to be a 33yo fellow dinosaur. If you thought I was some ML guru, know that I spent the last few months watching an 18yo and…

sillysaurusx used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 8:59:20 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year304 dated mentions

Observed mentions: 2015-11-09 14:23:42 UTC to 2025-11-25 02:58:19 UTC.

0204060802015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 12 mentions; 2 submissions, 10 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 61 mentions; 16 submissions, 45 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 83 mentions; 22 submissions, 61 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 51 mentions; 17 submissions, 34 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 27 mentions; 13 submissions, 14 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 20 mentions; 6 submissions, 14 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 22 mentions; 6 submissions, 16 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 11 mentions; 1 submissions, 10 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 4 mentions; 3 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC12210
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC611645
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC832261
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC511734
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC271314
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC20614
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC22616
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC11110
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC1019
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC431
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC312

What Hacker News says

22 sources
> So I'm surprised you can run linux userspace on it? For what it's worth, I was equally shocked! Felt like a miracle. That special hardware also turns out to be miraculously-easy to use: https://github.com/tensorflow/tensorflow/blob/master/tensorf... // To compile: gcc -o libtpu_client libtpu_client.c -ldl // To run: sudo ./libtpu_client I had to do a double-take, because compared to the uniquely hellacious experience of installing CUDA drivers on Ubuntu, this seemed to be... a single header file, and a single .c file. Turns out, it is that easy: https://twitter.com/theshawwn/status/1400749405356052483 And not because there's some SDK preinstalled -- it's because if you unmask libtpu like a scooby-doo villain, you'll discover libtpu is LuaJIT in disguise. You can even do the equivalent of lua's loadstring() function: https://github.
Read the rest
com/tensorflow/tensorflow/blob/dd60c07888b6e7... It's just called TpuDriver_CompileProgramFromText instead of loadstring, and you have to write in a quirky assembly language. But you don't need to write in that quirky assembly language, because you can just `import jax.jit`, jit a function, then dump it as HLO text. So you can just copy-paste it into your C file and run it :)
In Show HN: How does JAX allocate memory on a TPU? An interactive C++ walkthrough
Yes, I hate it when I get results for that site. It also squeezes out the original github.com URL for that content from the search results, as you said, so I can't even solve it by writing an extension to hide it from search results. Luckily the original URL is easy to recover from its URL ( https://github.com/tensorflow/tensorflow/issues/26922 in your case), so I just copy the URL from the search result and fix it up manually.
In Brave Search replaces Google as default search engine in the Brave browser
I find everything here agrees with my experience. Something I'm super excited about for ML in Python is the variadic generics proposal[0]. It would allow us to statically check that the shapes of the input tensors to any operation are acceptable, and it would infer the shape of the output tensor as well. It might look something like: x: Tensor[BatchSize, SeqLength, InpFeats] weights: Tensor[InpFeats, OutFeats] torch.matmul(x, weights) # acceptable torch.matmul(weights, x) # not acceptable The cognitive overhead of having to do this in your head is a massive slow down when you're experimenting with modifying / coming up with architectures. Variadic generics should solve the problem that named tensors in pytorch[1] are addressing, except that (1) named tensors were not designed to be statically analyzed, so Variadic generi
Read the rest
cs should speed up development speed considerablly, and (2) someone who wants to contribute to named tensors had to download the C++ source code and compile it (last I checked), which was a show-stopper for me. By contrast, the variadic generics proposal allows one to modify only the Python code, or even just maintain type stub files separately. What's more, Pytorch is much more likely to adopt this so much quicker than Tensorflow, as the latter's enthusiasm for type annotations has historically been low [2]. Which is ironic, since TF forced the user to define the graph statically (in TF1 at least). [0] https://www.python.org/dev/peps/pep-0646/ [1] https://pytorch.org/docs/stable/named_tensor.html [2] https://github.com/tensorflow/tensorflow/issues/12345
In The State of Machine Learning Frameworks in 2019 (2019)
This paper is one of my all time favorites. It shows that extremely deep vanilla CNNs - without the use of batch normalization or residual connections - can be trained simply by using a Delta-Orthogonal weight initialization scheme and appropriate activation function. The Delta-Orthogonal initialization scheme is derived theoretically by developing a mean field theory for signal propagation which characterizes the conditions for dynamical isometry. Ultra-deep CNNs can train faster and perform better if their input-output Jacobians exhibit dynamical isometry, namely the property that the entire distribution of singular values is close to 1. Put another way, dynamical isometry is a necessary condition for signals to flow both forward and backward through the network without attenuation. A variety of pathologies such as vanishing/exploding g
Read the rest
radients make training such deep networks challenging - mean field theory is a powerful tool that offers solutions to these challenges. The authors demonstrate experimentally that Delta-Orthogonal kernels outperform existing initialization schemes for very deep vanilla convolutional networks. They also find strikingly good agreement between theoretical and experimental results. IMO one of the most astonishing findings is that for networks initialized using this scheme the learning time measured in number of training epochs is independent of depth. > Our results indicate that we have removed all the major fundamental obstacles to training arbitrarily deep vanilla convolutional networks. In doing so, we have layed the groundwork to begin addressing some outstanding questions in the deep learning community, such as whether depth alone can deliver enhanced generalization performance. Our initial results suggest that past a certain depth, on the order of tens or hundreds of layers, the test performance for vanilla convolutional architecture saturates. These observations suggest that architectural features such as residual connections and batch normalization are likely to play an important role in defining a good model class, rather than simply enabling efficient training. Here is a link to the ConvolutionDeltaOrthogonal initializer in Tensorflow [1]. [1] https://github.com/tensorflow/tensorflow/blob/d287ff3d95c06b...
In How to Train 10k-Layer Vanilla Convolutional Neural Networks [pdf]
This paper is one of my all time favorites. It shows that extremely deep vanilla CNNs - without the use of batch normalization or residual connections - can be trained simply by using a Delta-Orthogonal weight initialization scheme and appropriate activation function. The Delta-Orthogonal initialization scheme is derived theoretically by developing a mean field theory for signal propagation which characterizes the conditions for dynamical isometry. Ultra-deep CNNs can train faster and perform better if their input-output Jacobians exhibit dynamical isometry, namely the property that the entire distribution of singular values is close to 1. Put another way, dynamical isometry is a necessary condition for signals to flow both forward and backward through the network without attenuation. A variety of pathologies such as vanishing/exploding g
Read the rest
radients make training such deep networks challenging - mean field theory is a powerful tool that offers solutions to these challenges. The authors demonstrate experimentally that Delta-Orthogonal kernels outperform existing initialization schemes for very deep vanilla convolutional networks. They also find strikingly good agreement between theoretical and experimental results. One of the most astonishing findings IMO is that for networks initialized using this scheme the learning time measured in number of training epochs is independent of depth. > Our results indicate that we have removed all the major fundamental obstacles to training arbitrarily deep vanilla convolutional networks. In doing so, we have layed the groundwork to begin addressing some outstanding questions in the deep learning community, such as whether depth alone can deliver enhanced generalization performance. Our initial results suggest that past a certain depth, on the order of tens or hundreds of layers, the test performance for vanilla convolutional architecture saturates. These observations suggest that architectural features such as residual connections and batch normalization are likely to play an important role in defining a good model class, rather than simply enabling efficient training. Here is a link to the ConvolutionDeltaOrthogonal initializer in tensorflow [1]. [1] https://github.com/tensorflow/tensorflow/blob/d287ff3d95c06b...
In Dynamical Isometry and Mean Field Theory: How to Train 10k-Layer Vanilla CNNs [pdf]
sillysaurusx·Jul 4, 2021Recommendation phrase
My friend, you've come to the right place. I happen to be a 33yo fellow dinosaur. If you thought I was some ML guru, know that I spent the last few months watching an 18yo and a 24yo scale GPT models to 50B parameter sizes -- 'cause they work 16 hours a day, dealing with all of tensorflow's BS. So yeah, you're not alone in feeling like a dinosaur-aged mid thirties hacker, watching the ML world fly by. That being said, though, it's so cool that TFRC is available to people like you and me. I was nobody at all. Gwern and I were screwing around with GPT at the time -- in fact, I owe Gwern everything, because he's the reason we ended up applying. I thought TFRC was some soulless Google crap that came with a pile of caveats, just like lots of other Google projects. Boy, I was so wrong. So of course I'll ELI5 anything you want to know; it's the
Read the rest
least I can do to repay TFRC for granting me superpowers. >> That blog post I just linked to is running off of a TPU right now. Because it's literally just an ubuntu server. > It's not literally running on a TPU, is it? I assume it's running on that Ubuntu server that has good ol' CPU that is running the web service + a TPU accelerator doing the number crunching. Or is my world view out of date? Your confusion here is entirely reasonable. It took a long, long time for me to finally realize that when you hear "a TPU," you should think "a gigantic ubuntu server with 8 GPUs attached." It's that simple. I thought TPUs were this weird hardware thing. No no, they're just big Ubuntu servers that have 8 hardware accelerators attached. In the same way that you'd use GPUs to accelerate things, you can use Jax to accelerate whatever you want. (I love how friggin' effortless it feels to use TPU accelerators now, thanks to jax.) So the ELI5 is, when you get your hands on a TPU VM, you get a behemoth of an Ubuntu server -- but it's still "just an Ubuntu server": $ tpu-ssh 71 [...] Last login: Sun Jul 4 00:26:35 2021 from 47.232.103.82 shawn@t1v-n-0f45785c-w-0:~$ uname -a Linux t1v-n-0f45785c-w-0 5.4.0-1043-gcp #46-Ubuntu SMP Mon Apr 19 19:17:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux Good ol' x86_64. Now, here's the crazy part. Until one month ago, it was impossible for us to SSH into TPUs, let alone use the accelerators for anything. That means nobody yet has had any time to integrate TPU accelerators into their products. What I mean is -- you're absolutely correct, my blog is merely running on "an Ubuntu server," whereas I was claiming that it's being "powered by a TPU." It's not using any of the TPU accelerators for anything at all (at least, not for the blog). But it's easy to imagine a future where, once people realize how effortless it is to use jax to do some heavy lifting, people are going to start adding jax acceleration all over the place. It feels like a matter of time till one day, you'll run `sudo apt-get install npm` on your TPU, and then it'll turn out that the latest nodejs is being accelerated by the MXU cores. Because that's a thing you can do now. One of the big value-adds here is "libtpu" -- it's a C library that gives you low-level access to the MXU cores that are attached directly to your gigantic Ubuntu server (aka "your TPU".) Here, check this out: https://github.com/tensorflow/tensorflow/blob/master/tensorf... Wanna see a magic trick? That's a single, self-contained C file. I was shocked that the instructions to run this were in the comments at the top: // To compile: gcc -o libtpu_client libtpu_client.c -ldl // To run: sudo ./libtpu_client ... so I SSH'ed into a TPU, ran that, and presto. I was staring at console output indicating that I had just done some high performance number crunching. No python, no jax, nothing -- you have low-level access to everything. It's just a C API. So, all of that being said, I feel like I can address your questions properly now: > Again, I have some hesitations interpreting this literally. I assume what you're saying is "Google runs a Jupyter server somewhere in the cloud and it gives you access to TPU compute". A TPU is just an ubuntu server. The MXU cores are hardware devices attached directly to that server (physically). So when you SSH in, you get a normal server you're familiar with, and you can optionally accelerate anything you can imagine. (Till recently, it was a total pain in the ass to accelerate anything. Jax changes all that, and libtpu is going to shock the hell out of nvidia when they realize that TPUs are about to eat away at their DGX market. 'Cause libtpu gives you everything nvcc/CUDA gives you -- it's just a matter of time till people build tooling around it and package it up nicely.) So nope, there's no TPU compute. It's just ye ole Ubuntu server, and it happens to have 8 massive hardware accelerators attached physically. You'd run a jupyter server the same way you run anything else. So when that jupyter server executes `import jax; jax.get_devices()`, it's literally equivalent to you SSH'ing in, typing `python3` and then doing the same thing. Jax is essentially a convenience layer over the APIs that libtpu gives you at a low level. Man, I suck at ELI5s. The point is, you can go as low as you want ("just write C! no dependencies! no handholding!") or as high as you want ("jax makes everything easy; if you want to get stuff done, just `import jax` and start doing numerical operations, 'cause every operation by default will be accelerated by the MXU cores -- the things attached physically to the TPU.) This might clarify things: shawn@t1v-n-0f45785c-w-0:~$ ls /dev | grep accel accel0 accel1 accel2 accel3 That's where all the low-level magic happens. I was curious how libtpu worked, so I spent a night ripping it apart in Hopper debugger. libtpu consists of a few underlying libraries which interact with /dev/accel0/* to do the low-level communication. Theoretically, you could reverse engineer libtpu, and send signals directly to the hardware yourself. You'd need ~infinite time to figure it out, but it is indeed theoretically possible. > I don't think I could run, say, a Linux Desktop app with a GUI (falls under "whatever the heck I want") You can! > on a TPU if I wanted to, correct? You should want to! It's easy! > But, in case I could, You can! (Sorry for being super annoying; I'm just so excited that it's finally possible. I've waited years...) > how would I get that kind of direct / low level access to it? SSH in, then use libtpu for low-level access via C APIs, or jax in python for high-level convenience. > Are they just giving you a pointer to your instance and you get complete control? I get total control. I've never once felt like "Oh, that's weird... it blew up. It works on a regular Ubuntu server. Must be some unfortunate TPU corner case..." It's the opposite. Everything works by default, everything is candy and unicorns and rainbows, and hacking on all of this stuff has been the best damn two years of my life. Now, I'll calm down and make sure I'm answering your questions properly. The truth is, I'm not quite sure what "complete control" means. But if I wanted to, I could SSH in right now and set up an instance of Hacker News, and then expose it to the world. Hell, I'll just do that: https://tpucity.gpt4.org/item?id=1 That took like ... 10 minutes to set up. (It's also the world's shittiest HN instance. I'll shut it down soon.) Here's an archive url: https://web.archive.org/web/20210704132824/https://tpucity.g... So yes. You have total control. And as I say there: > This such a stupid demo. But suffice to say, if you can get Lisp running on a TPU, you can get anything to run. > Theoretically, arc could use the MXU cores to accelerate its numerical operations, thanks to libtpu. Have fun. DM me on twitter if you run into any roadblocks whatsoever: https://twitter.com/theshawwn (Happy to help with anything; even basic questions are more than welcome.)
In GPT-J-6B – A 6 billion parameter, autoregressive text generation model

Showing the 15 most recent of 22 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.