Scott Condron Profile picture
Machine Learning Engineer at @weights_biases. I post about machine learning, data visualisation, software tools ❤️ @pytorch @fastdotai 🇮🇪
Jun 29, 2023 6 tweets 3 min read
Language UIs are dead, bring back clicks

Jokes aside, I've gone down a bit of a rabbit hole trying to build a tag-based document explorer with <200 lines of python

1. keyword extraction
2. LLM turns keywords into tags
3. tag docs with LLM
4. document browsing on a weave board https://t.co/bGW1XVN3iu
mini tutorial to browse research papers (I'll put the code in the weave repo soon)

- Grab arXiv papers
- Extract keywords using yake, it's free & easy to use to seed our tags

Yakes keywords can be a bit funny and are not as useful for tagging/categorizing content
Jul 15, 2022 7 tweets 4 min read
Hyperparameter Search for @huggingface transformers models 🐝🤗

For the @weights_biases blogathon, @matteopilotto24 created this blog post showcasing how to run hyperparameter sweeps on HF transformers models using W&B Sweeps.

Blog post: wandb.me/hf-sweeps

1/7 Image The plot above shows how each of your experiments performed on the task.

It shows the relationship of the different hyperparameters to the metric you care about.

W&B Sweeps automatically generates this plot as well as this parameter importance plot below:
2/7 Image
Nov 21, 2021 7 tweets 3 min read
Challenges in building Software 2.0

What are the different challenges with running and productionizing machine learning projects compared to traditional software development?

Firstly, technical debt:

1/7 Technical debt is a way of framing the cost of taking shortcuts with your software development.

It’s quicker in the short term but you’ll have to pay off that tech debt in the future to make your code more robust, tested, documented, etc.

ML has lots of “hidden” tech debt
2/7
Nov 9, 2021 4 tweets 3 min read
Learn Math for Machine Learning with me 🙋‍♂️

The Math4ML series by @charles_irl on the @weights_biases YouTube channel is for those who want to understand the math behind training models.

I stumble through his lessons exercises on camera so we all can be guided by him when needed Before each of these livecoding sessions, I was tasked with watching the associated Math4ML lesson. I then joined @charles_irl and worked through the autograded exercise notebooks with him.

2/4
Oct 27, 2021 5 tweets 2 min read
What is data lineage and why is it important when building ML systems?

From @chipro’s new book, Designing Machine Learning Systems:
1/5 Data lineage is the process of keeping track of the origin of your data and tracking versions of it over time.

This is important if your data changes and you want to keep track of which model was trained using which data and how the model performance is affected.
2/5
Aug 19, 2021 5 tweets 3 min read
New blog post!🕺🥳

This is about a recent paper I enjoyed called "Omnimatte: How to Detect Objects and Their Effects."

I love writing these kind of summary blog posts because I get to learn about such cool papers.

wandb.ai/_scott/omnimat…
1/5 The model in this paper learns to associate one or more objects to the effects they have on their environment (shadows, reflections, etc.) for a given video and rough segmentation masks of each object. This enables video effects like "background replacement".
2/5
May 28, 2021 5 tweets 3 min read
What actually happens when you call .backwards() in @PyTorch?

Autograd goodness 🪄!

PyTorch keeps track of all of the computations you’ve done on each of your tensors and .backwards() triggers it to compute the gradients and stores them in .grad.

1/3 Image You can see the gradient functions by looking at .grad_fn of your tensors after each computation.

You can see the entire graph by looking at .next_functions recursively.

Or you can use github.com/szagoruyko/pyt… by @szagoruyko5

2/3 Image
Feb 21, 2021 5 tweets 2 min read
Here's an animation of a @PyTorch DataLoader.

It turns your dataset into a shuffled, batched tensors iterator.

(This is my first animation using @manim_community, the community fork of @3blue1brown's manim)

Here's a little summary of the different parts for those curious:
1/5 The Dataset has to be passed to the DataLoader. It's where you transform your data and where the inputs and labels are stored.

It is basically one big list of (input, label) tuples. So when you index in like dataset[i], it returns (input[ i ], label[ i ]).
2/5