The ins and outs of open source for AI
7 Jul 2020 · 46 min
A Practical AI podcast episode (July 7, 2020) in which hosts Chris Benson and Daniel Whitenack discuss open source in the AI ecosystem. They cover common open-source AI tools (TensorFlow, PyTorch, Docker, Kubernetes, spaCy), the distinction between open-source code, data and models, licensing nuances (e.g., Apache 2.0, MIT, open-core patterns), and practical workflows for experimenting (Colab, Docker, GitHub). They also explain how to find datasets and papers (Papers With Code, Google Dataset Search, Semantic Scholar), and concrete ways to contribute: code, documentation, examples, data, and pull requests; plus community-building and hubs (Hugging Face).
Chapters
You know, if I could go back, that is the one thing I would change about if I don't go off and do a Docker container for pure ease of learning and ease of training. Nothing beats Colab in my view. Yeah, they have the best simplified interface that has everything that you need there. And so yes, given that option, I will often use Colab to go do that. Bandwidth for Changelog is provided by Fastly. Learn more@fastly.com we move fast and fix things here at Changelog because of Rollbar. Check them@rollbar.com and we're hosted on Linode cloud servers. Head to linode.com changelog.
Linode is our cloud server of choice. Grab the Nanode plan for just five dollars a month. Just five bucks. That gets you a gig of RAM, a blazing fast 25 gig SSD and one terabyte of transfer. Let's be honest, you can go a long ways on that five bucks. When you do need to scale up. Their prices are predictable so you can put your calculator down, you won't need it. We've been running changelog.com on linode for years and we've always imp by their award winning support team. Check them out@linode.com changelog Once again, that's linode.com changelog. Welcome to Practical AI, a weekly podcast that makes artificial intelligence practical, productive and accessible to everyone. This is where conversations around AI, machine learning and data science happen. Join the community and slack with us around various topics topics of the show@changeaw.com community and follow us on Twitter. We're at practicalaifn.
Welcome to another fully connected episode of Practical AI where Daniel and I keep you fully connected with everything that's happening in the AI community. We're going to take some time to discuss the latest AI news and dig into some learning resources to help you level up on your machine learning game. My name is Chris Benson. I'm a principal AI strategist at Lockheed Martin and with me, as always, is Daniel Whitenack who is a data scientist at SIL International. Hey, how's it going today, Daniel?
It's going very good. It's hot here, but I guess I'm in the Midwest of the United States and you are in the South. I'm sure what I'm experiencing is nothing compared to Georgia heat.
I think that the thing that really gets you in Georgia is the humidity.
Yeah.
So it tends to be very humid here and that's what usually gets people. It's not terribly hot today. Yeah, I think we're around 80 degrees Fahrenheit, so it's not too bad. It's quite humid outside, though.
Oh, wow. I think it's warmer here.
It might be.
I think we're pushing 90, I think. Fair enough.
I think that's where we're going to be tomorrow. I think we're popping back up with you tomorrow, but we have some weather that's come through and cool things out, so. Yeah, but that's the way it is. It's summertime, man.
Yeah. I've also got a few boxes sitting right next to me. I finally decided to build a computer. I know we talked about this a couple of times. I have fond memories of building computers earlier on in my life when I was in, like grad school and then before that and college and other times. But ever since being a data scientist, I've always just had a laptop, you know.
Right.
I don't know. It's definitely not necessary in any sort of way to have your own personal, you know, AI machine. But since I talk about this stuff so much, it's almost like a rite of passage, I guess I feel like I should have that experience. So. I don't know. We'll see. I've got the boxes. I've got case, ram, hard drive and gpu.
There you go.
But the rest is on its way and currently not functional.
Yeah. So for listeners, though, I know you can't see this, but Daniel and I are talking over Zoom, and he has the data center background up behind him.
The Zoom virtual background.
There you go. You're building out the DGX rack there behind you.
I'm not quite in the server room yet, although I do expect the room I'm in will warm up quite a bit when I turn my computer on whenever it gets going. But yeah, I'll have to make sure and have. Have the fan going and maybe, you know, eventually it will be cold here in Indiana, so maybe that will be a benefit. I don't know.
I'm just glad to know you're not living in the server room there, you know, sheltering in place in the data center.
I'm bringing the server to me.
That's right.
I'm just sitting on my dining room table. Not even in my office because we have a family member staying in my. In my office as a bedroom right now during the quarantine, so.
Gotcha.
Yeah, it should be fun. So one more person in our house and one more computer. Portable heater coming soon.
Gotcha. You know, actually, you and I are doing Something a little bit similar there in that today I'm going to buy three Amazon instances to build a Kubernetes cluster for my animal protection charity.
Oh, sweet.
That I work on.
So sweet.
I got to get the new Kubernetes cluster up and running.
Yeah, that's exciting. It will always be an interesting experience. Are you going the sort of manage your own deployments sort of thing? Are you doing the EKS manage Amazon type thing?
So it's not my budget, it's the charity's budget and it is a very small charity with a very tight budget. So I am simply buying the instances at rock bottom reserve prices and then doing everything myself.
Yeah.
To try to keep that as low.
As possible, look into the tool cops.
K, O, P. That's exactly what I'm using.
Yeah. Yeah. I've used that a good bit in the past and it saves a lot of trouble.
That's what I'm going with. Exactly.
Yeah. And COPS itself is an open source tool that's out there. And, you know, since Chris is working with a charity and I'm also work work with a nonprofit. So open source things are a lot of times very nice to use.
They are.
And I thought today maybe we could discuss that a bit, but more in the context of AI, I guess. So open source and AI contributing to AI. Open source, open data. There's a lot of different related things there generally under like open source AI or open AI things, not to be confused with OpenAI, the company.
There you go. Yep.
Yeah.
I don't know.
Does that sound interesting?
No, that sounds really good. Ironically, our talk of building things and Kubernetes clusters leads kind of right into it because, you know, with modern AI tooling, it's largely built on Docker and Kubernetes these days and such. So that's perfect timing on that.
Yeah. So maybe we just start by, I guess, talking about that. Like on the show, we mention certain things very often and I could think of many of those off the top of my head that are all open source, because I think that's probably the more standard case. So, like TensorFlow, PyTorch, Docker, Spacey, Kubernetes itself, What else? A lot of these things are all open source, right?
They are. I mean, the software of artificial intelligence is largely built on open source and, you know, people end up paying for hardware or services. For hardware.
Yeah.
You know, that's kind of how the divvy is. You know, you budget for the hardware or the services to gain access to compute.
Yeah. And Maybe we should clarify as well what we mean by Open Source. Maybe people are more familiar with that term or not familiar and there is some confusing things around it. Actually maybe one of the confusing things is open source doesn't necessarily mean free either. So I guess my background isn't in computer science, software engineering. So I'll probably have some like computer science people get mad at me. There's like a proper definition, but I mean open source, I think mainly its etymology derives from the fact that like you can see all the code that is there, the code is available for you to obtain and or modify use. So like with TensorFlow, for example, you can go to GitHub.com tensorflow tensorflow, I think that's still the link. Unless you know.
Yeah, I think it's really defined by the fact that when you distribute the code, if it's open source software and you're distributing that code around, you have to distribute the code of the programs or programs themselves with your distribution. So you don't just get the executable that you're running.
Right, Just a binary, you don't get.
Just the binary, you get the source code along with that. And typically, and I'm saying this strictly from personal experience, the vast majority of open source software, I would argue, is freely available for people to use. And then the way it ends up is a lot of times that licensing allows companies to integrate open source software into their own proprietary packages and they do have to distribute the source code for that part of it, but they may also have proprietary code depending on the licensing available as well or as a service, you know, that's another thing.
Yeah, so it should be said too that like if you go to TensorFlow,/TensorFlow on, on GitHub, you can see all the code that makes up TensorFlow, at least the core part of TensorFlow. There's. Then there is a enterprise version of TensorFlow that Google came out with recently and some of those elements may not be open.
Right?
Some of them might be open, I'm not sure. But you'll see this pattern a lot too where you have like, I think they call it open core, where you have a core part of a tool or software that is open and you can use. And then there might be a set of additional functionalities or maybe even like an upgraded version that you have to pay for that has some extra features or maybe more robustness or maybe it supports multiple users or maybe it supports, you know, specific access controls or like other things that are more enterprise y. I guess so that's another pattern that you'll see. But on the TensorFlow slash, TensorFlow, you'll see that there's the code, if you go to that link, and then there's about, you know, a little ways down in the code listing there's a license and you'll see that this license is an Apache 2.0 license. It's a very common open source license.
It's a very permissive one.
Yeah, very permissive. So it allows you to do a lot of things with the code. But there's a bunch of other licenses as well out there. There's the MIT license, which is also permissive. Yeah, yeah. So actually there's probably a guide out there that details all the different ones. And I think they're actually on GitHub when you're choosing a license for a project, they have a way to compare them. But yeah, some of these are more permissive than others and allow you to do certain things with the code that you're not doing with other projects that have a different license or something like that.
Right.
So that's one thing to be aware of. But I think a lot of where people might get hung up with that is like if you suck that code into your own project and you know it's part of your suite of software and then you sell that or something, you know, there might be certain implications to that. But in general, a lot of people, you know, might use TensorFlow, for example, to train a model, and then that model is what they ship with their product or something like that.
Right. And that model, which may not be proprietary in any way. I mean, it is proprietary to that company.
Yeah, to that company. And also the code that is running or doing the inference for that model, and even actually the training code for that, it is using TensorFlow. Like you're not just copying TensorFlow itself and selling TensorFlow, you are using TensorFlow to create custom code in the same way you would import other libraries and that sort of thing. So this is a whole world of thought around open source software and what licenses are good and not good. And actually certain companies have restrictions around. If like you're using an open source project, they might allow you to use code that has a certain license versus code that has a different license. That might be something you want to be aware of with your own company as well.
Absolutely. And depending on policy, they may orient on the license in terms of approvals, or they may focus on specific software itself along with its license. But you know, all this is really relevant now to AI and I think a lot of people that have come into AI from routes other than software, particularly open source software, are having to learn this as they go along, which I thought was one of the great reasons that we should talk about this today when you suggested it, is that, you know, as we see the field of AI maturing and evolving very rapidly, it is becoming integrated into what is essentially a software stack that different organizations have and their workflows. And it is how they, you know, productively enable some of their software. And so it's really being wrapped into the software life cycle, you know, itself. And so it's now affecting people. And as we talk about this, as software developers, we might be talking about how would we contribute to open source code and open source projects, but now it makes a lot of sense to talk about how do we contribute to open source artificial intelligence and open data.
Yeah, I mean, as opposed to sort of normal software engineering workflows, data really drives how code operates in the world of AI. So how you get the data and distribute data associated with your AI project is very relevant. Before we move on, I'll just mention too, There's a episode 322 from our friends at the Changelog podcast. They talked to Manish from dgraph about licensing and relicensing and all those sorts of things they did with that. And I found that episode very enlightening on these topics. So if you're interested, they dive a lot deeper into.
I had no idea you were going to mention dgraph, but that's my current hot topic for myself, so.
Oh, dgraph's awesome.
I'm moving into dgraph right now for what I'm doing.
Side note. Yeah, dgraph is a graph database and it's really, really great. Actually. The query language that you use on top of it is GraphQL, which makes it really nice in a lot of ways and it's very performant and yeah, anyway, if you're interested in graph databases, check it out. I'll give you Shameless Plug, because I do like that project, which is another open source project.
It is. It's open source and it's a project that I'm integrating into my AI workflow at this point for the charity that I spoke of.
Oh, awesome.
Yeah, that's definitely so cool.
Since you mentioned it, definitely. I love plugging the projects that we both use here on the podcast, especially if they're open source and there's a community around it like DeGraph, but I guess that's one thing. DGraph is a database and so you're using it in your AI project, but it's not AI software necessarily, but it's the data store associated with the AI software.
Right. And that's how I'm using it.
These sort of auxiliary or, I don't know what we want to call supplemental infrastructure things are often driven by open source as well.
Right, right. I mean to describe if people are wondering how that fits in and it's not really specific to what I'm doing. This could be for a whole lot of different possibilities that if you are operating an organization and you have operational data things that you're doing with whatever your organization is and you need a data store to keep that, but you may also want to provide analytics on that. You may want to provide, you know, apply some AI modeling to some of that data. And so it really all comes down to the fact that you are integrating AI into your software workflow. That's a good sign. That's a sign of maturity.
We deserve a better Internet and the Brave team has the recipe for bringing it to us. Start with Google Chrome. Keep the extensions, the dev tools and the rendering engine that make Chrome great. Rip out the Google bits, we don't need them. Mix in ad and tracker blocking by default, quick access to the Tor network for true private browsing and an opt in reward system so you can get paid to view privacy respecting ads. Then turn around and use those rewards to support your favorite web creators like us. Download Brave today using the link in the show notes and give tipping a try on changelog.com.
So we were just getting into the topic and you mentioned something that was really important about AI, not just being about code but being about data. And I think along with that data, a certain piece of data, which is the model itself, which is really just another piece of data. So there's the code piece, but then there's the data piece and oftentimes there's this weirdness because code is Open sourced on GitHub but then to me it seems like, oh like there's this very structured sort of of way to go about finding open source code and things and then open data is just sort of like all over the place. It's like totally scattered and weird and like. I don't know if you have a similar experience.
No, I do. I think that there's been a lot of great work trying to address that problem recently and we'll talk about some of those, you know, as we go forward in terms of how to find data. But yeah, I think the fortunate side is a lot of people that are already working in open source software are recognizing that they need code and they have the same problem. And so it's getting tackled fairly, fairly quickly.
Yeah, maybe before we talk about how to find data, I guess there also could be licenses associated with data, right?
Sure.
You aren't able to repost it in another place. You are aren't able to use it for these purposes, you are aren't able to do certain things with the data. Recently I downloaded some audio data from Mozilla's Common Voice project. So their workflow, like you find the data set you want, then you put in your email to download it. And when you do that you also have to agree. I think the agreement was that you wouldn't try to identify like personally identify the people whose voices are represented in the data. Yeah, so like that stipulation is very specific to that data set. But I guess it is kind of common in the sense that there's a lot of data sets that you could potentially try to identify people within data sets, which is an issue.
It's an interesting juxtaposition of kind of licensing plus responsible AI, you know, ensuring that things principles like protecting pii, personally identifiable information are all integrated in. So I find that interesting that they did it that way.
Yeah, yeah. And I guess as well, you know, models being another piece of data. So just as a reminder for people, like when AI people refer to a model, they're basically just referring to a representation of a network architecture usually. So like this number gets fed into this operation and then gets fed into this etc. Along with the parameters associated with those operations which are called weights and biases. And all of that can be represented in data. Especially if your model has 300 million parameters, you're going to put that into a data file and store it somewhere.
But it is essentially a complex data structure.
Yeah, it's a data set.
Yeah, that is the output of your modeling. And so data in software operates on it, data out.
Yep, there's a lot of pre trained models out there. And so like if, if I'm in a GitHub repo and it's like a repo for this project, someone did a project to do like a object recognition or something, I don't know. And they have a license in their repo, it's like Apache 2.0 or whatever, I don't know. But then in their readme they say you can download a pre trained model from this link and then the link is just a link to like a S3 bucket link. To download the model. I'm not actually sure like what is legally implied by, if anything by like what you can do with that downloaded pre trained model. Now there are certain sites where maybe that's more specific in terms of what you download. But in that case, which I think is actually a very common case, the sort of here's my GitHub repo and here's a link to my model. I don't actually know if there are legal implications to what you can or can't do with that.
Yeah. So not being an attorney, but playing one on a podcast.
Yeah.
I would say that that data was still distributed and it was distributed under a legal condition, probably represented by a license. And so even if that license is shortcut, meaning it's not included in the link because they didn't download the whole repo or something, then I would expect that that data would still fall under whatever license it was distributed under.
Yeah, it's a good question. So if there's anyone that knows more about this out there, I would be curious. So hit us up on Slack or LinkedIn or Twitter and let us know. Maybe our friends at Immuta who we had early on in the podcast.
That's true.
I don't know if you saw, but they got a whole bunch of funding. Wasn't it like 40 million or something?
It was substantial. I don't remember what the number.
Yeah, led by, I think Intel Capital or something. So Immuta we had on early in the podcast. So not only they have a data product which is very interesting, but they're also very much legal experts in these sorts of things. So if you're listening out there, you know, let us know your thoughts. Maybe we should turn to how to find and you know, search for open source tools and code and data and models. What are your go tos for that?
Probably for me the same as most other people certainly that are in the software world, obviously just googling for certain terms, you know, Googling for some particular function and saying open source along with that, going to GitHub, going to blog entries that focus on open source ratings and distributions and such. Usually it's not hard, especially in the software world because that's been going for such a long time and it's, you know, we kind of have our inroads there. So I can usually find something that is more or less what I want within just a moment or two of an initial search and then then there's diving into the tool. For a while it was a lot harder on the data side to do that. But the tools there are all are starting to come about as well.
Yeah, it seems like in my workflow a lot I'll almost start from known trusted sources and then kind of branch out from that. And what I mean by that is like I can go to TensorFlow or PyTorch, they have extensive documentation online. So if you just search for like TensorFlow documentation or PyTorch documentation or sometimes I'll search for, you know, TensorFlow transfer learning tutorial, let's say. And there's one of those. Right. So I, I go there, I want to do transfer learning with TensorFlow. TensorFlow is open source, so I can install it and if I find the TensorFlow docs, then it'll tell me how. Usually there's like a getting started, you know, install TensorFlow or they'll tell you, hey, you can try it on, you know, Colab or whatever.
I'm the same. Another one kind of hitting these. What are kind of the forces, the big names in AI that you, that are reputable and that, you know that they're, their legal teams have, have looked at things and all that and you kind of, there's a trust factor. Another one that I use a lot, especially at work is Nvidia because they have a huge amount of documentation online. So I'll start from them and see what they have. And they have a bunch of partners as well, as does Google, as does Microsoft, as does Facebook, which is Pytorch.
Yeah. So there is a lot of good documentation pages out there and I guess in order to find those you kind of have to have a little bit of domain knowledge of like what are the key tools out there. I mean you've already heard us mention a few like TensorFlow and PyTorch, but there's other ones like Chris mentioned Nvidia tools that I think they have various tool sets out there. There's Spacy and the NLP world. There's of course the kind of data sciencey Python toolkit which is like Pandas and scikit Learn and all of that stuff. I feel like we have an advantage because we know about those things. So like when I'm searching for example to do like maybe a traditional quote unquote machine learning thing on a smaller data set I might go to the scikit, learn documentation and search for like how to do this thing or that. Whereas if I'm trying to do like a thing that I know is like a AI thing, I might search like on TensorFlow or PyTorch. Examples or tutorials on that particular thing and find certain open tutorials and how to install the right toolkit and that sort of thing. But I feel like I do have that advantage and I'm not sure what the best way is to get that exposure to the main toolkit. I don't know if you have thoughts on that.
That's a great point. And that is that we all, based on whatever problem that we're tackling at any point, we don't necessarily just use a single tool. There's not a single go to thing that you're always going to use for every project. If you're a TensorFlow person, you may use a lot of TensorFlow, but you probably also use some tools from Nvidia, you use some Python tools. You know, there's a lot of different possibilities on how you might combine a tool chain together to solve the particular problem and it may change as you go from problem to problem. So I think that domain knowledge is hard to come by. So probably you either need to be really focused on self learning and trying to follow reputable sites around or get into a course. There's a bunch of online courses that we and I know we've talked about. We have some episodes that specifically address learning, but it helps to start not at square one when you're doing this so that you can be a little bit more efficient, quicker.
Yeah, for sure. I agree with that. If you're trying to really level up to kind of state of the art things, I would highly recommend the website Papers with code. Yeah, you can actually search and there's also leaderboards for common AI tasks, whether that be, you know, image recognition or visual reasoning stuff or other things, speech recognition, and actually search through the sort of leaderboard of papers and then see the actual links to the tools that they use and also the code implementation. So that's a good idea. You know, even if you just browse around that site, I think and look at the various things, you'll get a sense of like these are the main things that people are using to do this sort of stuff. These are the main things people are using to do that sort of stuff. So I think that could be useful.
Yeah, it is. It's interesting. You bring up a great point that there are different types of things that you may be looking for. On one side you might be looking for just raw data and you might go to for instance, Google's dataset search that they released last year, which is fantastic because they have indexed many, many, many data sources and you can Start looking. And that's one of many ways to enter into it. It's not the only one. But you might also be looking for domain expertise as well. And so we've had Semantic Scholar on and you might go look for some of the scientific papers that are relevant to the things that you're about to tackle, or you might be building on top of one of those papers and so developing that domain expertise in the specific area and then also having a diversity of data to tackle the problem with is really important. I think that's a really hard thing for people that are new into AI is understanding all these different pieces you have to put together into your workflow to be productive as quickly as possible.
Yeah, for sure, it's a challenge, but I think the situation is better now, I think, than even a couple a few years ago. Oh yeah, so. So that's encouraging. There's a lot of tutorials out there for various things.
We've had the benefit of standing on top of the software development community's shoulders. So many of these problems that, had we not had that privilege of doing, would have definitely slowed down the process. So we are seeing warp speed in the AI world in terms of its evolution, largely because we can look to other places that are associated, that are related and say, oh, that's how it was solved. Something very similar.
Changelog News is the best way to keep up with the ever changing world of software. We track, log and contextualize the coolest projects, the best practices and the biggest stories each and every week. Make changelog.com your daily destination or hit the snooze button and subscribe to our weekly newsletter that hits inboxes on Sunday mornings. Join more than 15,000 enthusiastic readers. It'll cost you exactly $0 and you can subscribe right now@c chainsaw.com weekly.
All right, well, we've talked a good bit about the tooling and the code and everything that is out there. I'm curious for you, like let's say that you're approaching a problem and you're using a new toolkit, like the, maybe it's the D graph thing that you're talking about, like you're wanting to get into that or you know, for me recently I was doing some speech related things. There's like some new speech related stuff out of Nvidia that's pretty interesting. So there's this new toolkit of things that you have access to. But one of the things that I see people struggling with is integrating that toolkit of stuff into your. You know, local machine to experiment with might not actually always be the easiest thing because, you know, oh, this new toolkit, it actually requires this version of NumPy, and you have this version of NumPy, but if you change this version of NUMPY on your local system, then you break these 14 other things that you use locally. Right. So I'm curious how you go about that, Chris.
So couple of ways of entering into that answer. One is, I start with the end in mind. Am I just trying to learn something new in terms of like a new skill or new workflow? And if I'm doing something like that, then I might stick much closer to that tutorial specifics and stuff. And if I want to do that, I might do it in a Docker container entirely where I can control the environment and the versions of everything. If they haven't done that for me, then as I get into the. I'll scan through the tutorial, see what they're using, and go ahead and set myself up a Docker container for that process. And that way I have a constrained environment that exactly meets the tutorial's focus and can get through it with fewer problems. It's worth the investment of dockerizing it ahead of time if they haven't done that for you. So that's one thing. But in general, if I'm not just doing a pure learning spike, you know, where I'm just trying to figure out how to do this thing that I care about, if I'm doing it with more of production or productivity in mind, then I think, what is the environment this has to meet? And if I'm. I may be looking at a tutorial, but then I'll translate it into what are the constraints that I have, what are the resources that I have available? And I'll take a little bit of time to try to transfer what they're trying to show me there into the world that I'm living in. Because at the end of the day, if I'm not just doing a pure learning spike, and I'm doing it to deploy somewhere eventually, then it needs to fit into my world. And so there's a little bit of prep time there to try to get a smooth workflow on my side going.
Yeah, for sure. One of the things that I do a lot is if I'm just trying to see, well, like, let's say that I'm trying to solve a problem, like it's a speech recognition problem or something, and I see there's like three different things that people are talking about. Using out there three different ways of going about it. What I might do is just spin up three different Google Colab notebooks. Yeah, because whatever I do there, it's going to get blown away. It doesn't affect my local environment at all. But it is persisted. Like in the sense of like the code is persisted. It is a notebook. So you sometimes have sort of weird state and you're not guaranteed that it's going to run exactly the same way again. But it does give you a very quick way of like knowing, okay, I have this environment, TensorFlow, PyTorch, pandas, you know, Spacy. A lot of other things are already installed and so there may be a couple of things I need to install via PIP or something, but I can generally run through and get the flavor of how something is going to feel very quickly. And oftentimes what I'll do is I'll spin up three different notebooks and try to get this thing to run in the way they're saying and it doesn't work. And then I try a different thing to get it running in the way they say and then it's kind of annoying. And then I try a third thing and then, and it seems like not exactly what I want, but it seems like the workflow is kind of nice. So then I'll start adjusting from there. So even just finding the good starting point where you want to put your flag in the ground toolkit wise, it can be useful to do it in that way. From what I've seen, you know, if.
I could go back, that is the one thing I would change about if I don't go off and do a Docker container for pure ease of learning and ease of training. Nothing beats Colab in my view. Yeah, they have the best simplified interface that has everything that you need there. And so yes, given that option, I will often use Colab to go do that. And I know a lot of other people besides you and me that feel the same way. Sometimes I find myself wishing that other tools would look at Colab, recognize the ease that they've created for their end user and go implement that. I'd like to see that kind of ease of use everywhere.
Yeah, well, it would be unfair, I think, to have talk about all of the great things that people are putting out there in the open in terms of data and code and not talk about how you can contribute to that or help out a project. Or maybe it's your own project and you want to open it up. What are the kind of flavors or categories of Contributions that you think, you know, people getting into contributing to open source AI, what are the sorts of things that they might have in their mind that would be maybe useful things to think about contributing to.
So, I mean, some of the common categories of contribution would be obviously the code itself that is the core for that software. But code alone often is not enough. I can't count the number of times that I've tried to work with code that without great documentation and without great examples, I found to be extremely hard to utilize in a productive way. And so if you don't feel that code is where you should make your contribution, then going and figuring out how to use the tool or offering up your insights from using the tool into documentation or create examples, I love it when people create examples. And so if I'm coming in cold and I really don't understand the tool, a lot of times that's the best way for me to ramp up as I go to an example and then I refer to the docs from there to try to get there. And so those are some of the obvious things. And another thing that I would suggest people do is reach out to the maintainer of the project and ask them and say, what do you need?
A lot of times there's a Slack team or something.
Absolutely. And you know, tell them you, you love what they're doing and you would like to contribute and tell them what you think you're good at contributing with and ask them for some guidance on that and they will love you. I mean, open source projects, there are cases where you have paid teams that are maintaining, obviously, but if you look at the vast numbers, the majority of maintainers out there are maintaining it, you know, for free. They're not being paid to do that on most projects. And so they love it. And be sure to tell them how much you love their software as you do it. Help them with data. Is there data that I could go out and we can make links to or find data, whatever?
Yeah, I think that's a good point. Some of the larger projects like we've been talking about, you know, TensorFlow and others have a large team behind them.
Right.
But there's a lot of really great tooling out there, you know, smaller tools that are actually pretty key in the workflow, that are developed and maintained by maybe one or two unpaid people that are doing it because they think that this thing is useful. So that's one thing to keep in mind also as you're using open source software, that when you're using something and it doesn't do quite the thing you want, or maybe it breaks in a certain way. The way that you go about raising that to the maintainers shouldn't be coming from a place of why does your tool suck so bad? You are terrible and need to do a better job. The. The better way to go about it is to say, hey, thank you so much for, you know, creating this thing. I've noticed this to raise an issue on GitHub. You could definitely do that. But I think the even better way to go about it is to say, okay, this thing might need a slight modification here. Maybe I could reach out to the maintainer and see if they would accept a contribution to add that feature in, and then you could actually create a pull request and contribute that in. It's a much more productive way of going about interacting with open source projects.
And for those who don't know what a pull request is, it is a mechanism by which you essentially offer up your code to be integrated into a larger code base, and it gives the maintainer of that code base the chance to review what you're doing and choose to integrate it or not. And if they don't, there might be a really good reason and they'll give you feedback typically on what that is, but they're already spending their time. So. I love what you said, Daniel, about don't just say, I need a feature. Open source is democratized software to some degree. Go out there, talk to them ahead of time and then say, I'd like to take a stab at writing code for this and offer it up and they can choose to take it or not. And they may give you some guidance if they're grateful for it.
Yeah, I like what you say as well. There is a contribution process that's common to GitHub. There's a lot of jargon around that. And what we'll do is we'll include as a learning resource on this episode. There's a couple of really good blog posts out there about this whole process where there's a repo on GitHub, you maybe want to contribute. When we're saying contribute, it could be something small, right? Like if you see in a project's documentation that you know they have this error in their documentation and it's just a wording change, right? Or maybe a change of a variable name or whatever it is in their documentation, it's a small thing. You, of course, could create an issue on GitHub and say, hey, you need to fix this, but it's super quick and not that Hard to just go to their repo, see how they have their documentation laid out in their repo and then it's a matter of forking that or making a copy of that repo, pulling that down to your local machine, making the change, pushing that back up to GitHub and then creating this thing like Chris said, like the pull request. And so that's like a no brainer. You know, you don't need to know that the contributors are going to want that change. They may reject it, but I think more than likely they're going to be just happy that people found something wrong with their documentation and fixed it. So yeah, I think that that workflow we'll give a good link if you're new to GitHub, if you're new to Git and this process of pull requests and all of that, we'll put a link in so that you can learn a little bit about that.
Yeah, absolutely. Another way to contribute is if you're using that software and it's working for you well and you're solving something that that's important to you, share that process, not just what you're doing, but how you did it, how you use the software in a blog post. And so that doesn't actually directly require interacting with the maintainer of the software, but it is showing appreciation, it is giving back to the community by showing how to use it effectively and may inform them about not only what you've done, but your workflow. And all of that is really useful to other people and very community minded.
Yeah, actually there's a couple of really good blog posts out there about building AI workstations, like personal computer with the GPU and all. And I relied on those very, very heavily because it's been so long since I put together a computer of my own. Like my reference frame was like way back when stuff was named differently and like processors were not near what they are now. And so just like getting a bearing of like what range of things do I need to be looking at here and what configurations are people going after? That was really useful. So even if it's like a guide like that, installing Cuda and getting your new GPU running, you know, that sort of stuff is really useful. And of course there's a lot of that particular blog post out there probably. But there's other things that aren't. I'm a pachyderm user and we've had them on the show and there's this new GitHub Actions thing that people might be familiar with where you can kind of automate tests and deployments through GitHub. And I asked in their Slack, like, has anyone tried to do like a data pipeline from GitHub Action?
Like.
And there were a couple people that responded and Slack like, no, but I've been thinking about trying it and that sort of thing. So like, if I end up doing that, I think that would be something that would be really great. It's probably not something that they're going to pull into their main repo, maybe because it's sort of an auxiliary thing, but it would be something that would be really nice for a blog post so that those people out there that are trying to do that thing could find a resource and do that.
Yeah. You know, as you say that a thought occurred to me that I think is something that hasn't matured in the AI world that needs to. And that is the fact that by comparison, if you look in the software world, not only do you have communities around specific software packages that are developed, but you also at the same time have a general sense of community around open source software that even transcends the specific language and libraries that you're in. You can go from one language to another and there may be little changes and stuff in how the sub communities work. There is an understanding and what is expected in open source in general, I think that we're not there yet with AI and I think that would be something I know from our conversations that we'd both love to see is instead of just having specific data sets or specific software packages, a sense of open AI and a larger community sense being built in a sense of community. So whether you're using, you know, Pytorch with a particular Data set or TensorFlow or whatever, or Nvidia stuff, it doesn't matter. There is an overall sense as you move through these communities on what to expect in that AI world. And I think I've met so many people in AI that did not come from the software world and did not already have that built into it that we have some integration to do on that. So I'd like to see that happen going forward here.
Yeah, and there have been some encouraging signs on that front. I think both TensorFlow and PyTorch have developed their various hub sort of environments where you can share, you know, setups and models and configuration and all of that. So that's kind of nice. Like there's this kind of sense that people are building these hubs. And I also think about, of course, the hugging Face team that now has Just tons of models that are available in their open source project. I saw a tweet, I was just pulling it up from Clem, who was on the show quite a while back from hugging face. We'll link to that episode. But his tweet was 25 team members plus 400 open source contributors plus machine learning equals fastest technology building I've ever seen. Which I think is definitely true. You just look at the pace with which they're developing, you know, being, I guess what he's saying, 25 actual team members now, but 400 open source contributors. There's sort of these pockets of the community like you're talking about. And so I hope that we see that growing.
I do too. I think that's a great way to finish. I mean, it's not just about your team. You're really standing on the shoulders of an entire community of people out there that have contributed to tools and made data available and all that. All of us are in that position. So as folks move forward, be thinking about how you can give back to this community and build that sense of community. Great conversation today, Daniel.
Yeah, for sure.
It was a great idea. Thank you for coming up with it.
Yeah, definitely. Hope you enjoyed the hot weather and stay safe. Stay inside and we'll talk to you soon.
Will do. Take care.
Thank you for listening to this episode of Practical AI. People ask us all the time. They say, hey, how can I support your work? One easy way is to leave a five star review on Apple Podcasts. Tell folks why you listen and why they should too. It only takes about 30 seconds and believe it or not, those ratings and reviews really do help us rank higher in AI related search results. Practical AI is hosted by Daniel Whiteneck and Chris Benson. It's produced by Jared Santo. That's me. And our music is brought to you by the one and only Breakmaster Cylinder. We are sponsored by amazing people at companies who get it. Thanks again to Fastly Linode and Roll Bar. Did you know we have a master feed of all Changelog podcasts? We do. It's your one stop shop for everything we produce. If you like this show, you'll love the Changelog Brain Science and go time. Check it out@changelog.com master or search for Changelog Master in your favorite podcast app. You'll find us. That's it for now. We'll talk to you again next week.
More from LARRUZ


Ep 882: Rogue AI Agents: Why Breakouts are Happening More and How Companies Should Prepare (Replay)


Ep 881: Faster AI Agents, Fewer Human Coworkers: The Overly Productive Future of Managing Agents? (Replay)


Ep 879: New: OpenAI Presence. Has The AI Customer Service Takeover Finally Arrived? (Replay)




