270 karma · joined August 11, 2014
Edit: spelling
However, not all sources require anonimity simply to spread disinformation. Some of our most culturally significant news stories have spawned from sources requiring extreme anonimity. In these cases it is up to the journalist to corroborate the information.
I think you're hitting the biggest up/down sides on the nose.
There is an innate joy to building your own rig (I'm guilty of it myself), and it does provide a fair amount of flexibility. The two main downsides that come to mind are the up front cost for parts, and the maintenance required to keep the system up to date. I've had success with a CentOS rig running nvidia-docker[1]. The annoyances mount over time though, as OS and Nvidia driver releases can be a pain to keep up to date, especially if you're working with several of the major frameworks. This is the main reason I've moved most of my ML projects to the cloud.
Cloud has many benefits including scalability and minimal maintenance. There are many options in the cloud ML space, but my current favorite leverages Google's cloud. I'll get into detail below, but the main reason is that they have several tools that build a natural progression and will grow with you as your projects mature.
First Steps:
I'd recommend checking out Colab[2][3] to get your feet wet. It includes a FREE GPU instance, and is a Jupyter based notebook, so you can easily utilize any of the python based frameworks. (1/2 of a K80, if memory serves. 12 GB) As with all free resources, there are some caveats. Colab is designed for interactive usage, so they don't encourage long running processes. However, the general consensus online is that you can get around 12 hours of training in at a time before the instance restarts itself, which is plenty of time to kick off a job and save checkpoints to cloud storage for resuming later. All in all, it's a great tool get a project off the ground. One bit of strangeness (from a software engineer's perspective): the notebooks are stored in google drive. This adds an interesting possibility for collaboration (it's in the name, right?), but leaves something to be wanted in terms of source control.
Growth:
If Colab isn't cutting it, there are a couple next steps. If you need more compute power, or have long running training jobs, the Colab UI can actually be run locally backed by your own GCE instance (with attached GPUs)[4]. If you need additional services (databases, map/reduce, etc) Datalab[5] is Colab's bigger beefier cousin, with all sorts of integrations across the Google Cloud Platform, as well as 3rd party providers.
EDIT: Link formatting
[1] https://github.com/NVIDIA/nvidia-docker
[2] https://colab.research.google.com/notebooks/welcome.ipynb#re...
[3] https://research.google.com/colaboratory/faq.html
[4] https://research.google.com/colaboratory/local-runtimes.html
This made me chuckle.
One largest downsides I can think of is vendor lock-in. If you intend to expand beyond iOS, there will be some friction and a great deal of re-implementation once you select another platform to build on.
If you do intend to move on to other platforms, I'm impressed by Realm's offerings [1]. The support local data storage, as well as syncing to their cloud platform (with a monthly fee, of course).
EDIT: Forgot to include the [1] link.
>>Hash values vary from run to run (so don’t depend on hash values or order)
I must be reading this wrong. One of the requirements for a good hash function is determinism - specifically that any given value in the input space maps to exactly one value in the output space.
One big takeaway is that grep doesn't simply traverse the string linearly, instead using the Boyer-Moore algorithm [2].
1: https://lists.freebsd.org/pipermail/freebsd-current/2010-Aug...
2: https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_sea...
EDIT: Interestingly, there seems to be an internal Boyer-Moore implementation in Golang's strings package[3], though it only appears to be used in strings.Replace("")[4]
I could have a failed mental model, but I'm under the impression that the relationship is the other way around. AI is a broad field encompassing various strategies to build intelligent machines. ML is one particular strategy where large volumes (think Big Data) of training data is used to teach by example. (Which makes Deep Learning a subset of ML, where "deep" neural networks are at play.)
https://blog.golang.org/profiling-go-programs https://golang.org/pkg/net/http/pprof/ https://golang.org/pkg/runtime/pprof/