Latest / Agentic Conversations (formally mlops.community) / MLOps Meetup #36: Moving Deep Learning from Research to Prod Using DeterminedAI and Kubeflow // David Hershey, DeterminedAI
Transcript
- 0:02We got a great Emma lap speed up for you and that is our intro.
- 0:13Thank you very much. I appreciate it.
- 0:16Excited to be here. There we go.
- 0:19I don't think you're going to get an intro quite like that.
- 0:25Add any other meet up that you guys can't tell you the last
- 0:29time I've been Marinated, so I appreciate it.
- 0:33Alright let's, let's get real. Let's get started.
- 0:36It looks like we got people here.
- 0:38Welcome everybody. In the in the house we have
- 0:43David as you know, he is coming here for a little chat today,
- 0:50and we're going to be talking about some great stuff.
- 0:53I'm excited about how we're doing this.
- 0:57But first, before we even Anything, you know I got the
- 1:01announcements to make first one is, if you're not in slack, what
- 1:05are you doing? Get in it.
- 1:07Get in our slack Channel, you will not hear more of me,
- 1:10serenading you but you will have lots of stimulating
- 1:15conversations happening and all kinds of good questions that are
- 1:19being answered, when it comes to the whole ml Ops Universe.
- 1:26We could say so Hopefully, you can jump in it.
- 1:31We have the invite link. I hope it's not Chris.
- 1:35I just want to mention that. One of the invite links is
- 1:39broken. Hopefully, this is not the
- 1:40broken one. A lot of people have been
- 1:42complaining about that one because we pasted the invite
- 1:46link all over the Internet and slacks, had this invite link
- 1:49will never expire and then it expired.
- 1:53Now, I know we could I could just play guitar We could
- 1:58actually sing this whole meet up, but David I think you got a
- 2:04lot of good stuff that you want to tell us and I don't know how
- 2:07well your voice in tones over the internet I'm sure you don't
- 2:12want it I promise so man it's great to have you here I think
- 2:19everybody heard the intro but if they don't know who you are
- 2:23you've got some street cred. You working at determined Ai and
- 2:26today we are going to to be talking about moving deep
- 2:30learning from research to production with determined Ai
- 2:35and Cube flow. Anytime that we talk about Cube
- 2:38flow, people get really excited. I want to I want to start before
- 2:47we talk about any of that where I normally start from and just
- 2:51give us a break down. How did you get into Tech?
- 2:55Yeah, I took a ride. I ended up.
- 2:58So I started doing aerospace engineering because I like the
- 3:00airplane still do. That's my undergrad, but I ended
- 3:04up doing was like, writing code, the whole time.
- 3:07I was doing aerospace engineering and at some point I
- 3:09realized I liked the code or than the aerospace engineering
- 3:12so and the following that along a path to machine learning at
- 3:17the time, still out of interested in seeing if we could
- 3:20make planes that fly themselves better but then I steered just
- 3:25to machine learning was my passion and love it.
- 3:28I mean I got into the space at Ford and an awesome job.
- 3:31They're working in the Deep learning space.
- 3:34I'm just like a huge wide range. Of applications was really lucky
- 3:37to be able to touch a lot of different things and had a lot
- 3:40of freedom to really like learn and grow different types of
- 3:42models and through that just ended up focusing, a ton of time
- 3:49on the infrastructure, supporting machine learning.
- 3:51So just found out how much there is and how much need there is
- 3:56which I which is why this community exists.
- 3:59And started chipping out problems one by one there and
- 4:04ran into determined in the process of that and ended up
- 4:06here. But yeah, so it's been a it's
- 4:08been a path. I sort of been following the
- 4:09wind's really taken me through this but I am pretty happy with
- 4:14where I'm at now. So cool.
- 4:17So let's here's how I kind of structured, the next hour in my
- 4:22head and you tell me if this works for you, I wanted to talk
- 4:26about what determined AI is real fast, just so everyone can have
- 4:29a bit of a background. I wanted to talk about a little
- 4:32bit about Cube flow and what that's doing and just general
- 4:36chatting on Cube though, then talk about how these Two Worlds,
- 4:39Collide Cube flow and determined and then the idea of research
- 4:44machine learning to Action. Yeah, and if we have any time at
- 4:50the end, just some general questions whoever is with us
- 4:53right now. Feel free to ask any questions
- 4:57you have in the chat or throw them in the Q&A section or if
- 5:01you're really feeling lucky or like, you want to get involved,
- 5:05you can unmute yourself and ask away.
- 5:08So I'll try and be a little bit on top of my game to make sure
- 5:14if anybody wants to ask anything.
- 5:16You can, and you can just raise your hand and then I'll let you
- 5:18go for it. So, let's start with determined
- 5:22Ai. And can you just give us a
- 5:25breakdown of what it is? Yeah, so determined is a open
- 5:30source, deep learning train platform.
- 5:32So unpacking that a little bit, we're talking about deep
- 5:36learning training. I mean, what we focus on is
- 5:38really the experience around building and training models and
- 5:44so we provide a Little tools to make that process a lot easier
- 5:49and also let teams and just data scientist scale of what they're
- 5:53capable of when they train models.
- 5:55And so when you install determined the first thing you
- 5:59do, is it installs on some sort of compute cluster that cluster
- 6:02can be your laptop that can be a GPU box you got somewhere, it
- 6:05could be a large-scale hundreds and hundreds of gpus and then
- 6:11you start describing the right machine learning models the same
- 6:14way you have before pie. Torch tensorflow.
- 6:17Yeah where people are comfortable and then determine
- 6:21will take that and you can do things like just run training.
- 6:26You can run distributed training, we make it really easy
- 6:28to scale up to large-scale distribute training.
- 6:31We have tools for hyperparameters, search based on
- 6:34the OSHA algorithm that was invented by one of our
- 6:39co-founders and you know all of those come together to make it
- 6:43really easy to take models. And train the more efficiently,
- 6:47train them faster, train them better and all the while keep
- 6:51track of the work you're doing and and all that kind of thing.
- 6:55So I've got some some demo materials available for this
- 6:59whole talk that we can get into. So I'll be able to show it to
- 7:01you in a minute, but that's right.
- 7:03Yeah, three. So let's just, let's focus on
- 7:07this because I know a lot of times it gets a bit murky when
- 7:12people want to compare tools. Yeah, you give us an idea of how
- 7:17determined AI is different than some more standard artifact
- 7:23storage. Like ml flow is the first thing
- 7:24that comes to mind. Right?
- 7:26Yeah, so that's a great comparison and I guess I'll
- 7:31start by saying no front when at the other piece of being a train
- 7:34platform is just like we don't really mess in the data space.
- 7:37We're not really talking like Pachyderm are friends of us that
- 7:40work Upstream that kind of thing, right?
- 7:42And then Downstream we don't really do that.
- 7:45Inferences space, very much. So we're not hosting models, run
- 7:48serving models, like Selden, we're not doing batch inference
- 7:50for not spark provider, that's your stuff, right?
- 7:52So really in training and then, you know, comparing ourselves to
- 7:55something like ml flow is a good comparison or you can think of
- 7:59something like weights and biases I think is similar in
- 8:01that space. That let you track artifacts and
- 8:04track your training and things like that.
- 8:07They are both tools to get a little bit, technical that give
- 8:10you like apis. That you add to your code, you
- 8:13say, track this metric test, this metric track.
- 8:15This artifact then they all get uploaded to some server
- 8:18somewhere and track it, right? And so you just run your
- 8:21training code with them and then they track this stuff and some
- 8:25of those tools. Also provide utilities to
- 8:27actually run your code determined is a slightly more
- 8:32holistic solution in the training space we get a little
- 8:36bit more intimate with your code.
- 8:38We ask you, what is your model? What is your Optimizer?
- 8:40What is your, how are you loading data?
- 8:44And then we end up I'm taking that and actually optimizing it
- 8:49for the cluster for you. Letting you run sophisticated
- 8:52experiments without you having to rewire things and so and also
- 8:56I should say the artifact, tracking the metric tracking.
- 9:00Keeping track of what I prime was using that stuff all of this
- 9:02sort of falls out when you tell us all that stuff.
- 9:04So we're the ones that actually, you know, say train the model
- 9:08for some number of steps but then we track all the artifacts
- 9:10associated with that automatically and it's not need
- 9:15that Add in extra tracking and stuff like that.
- 9:16We just thought I'll falls out of working with determine nice.
- 9:21So, one question that I think is good to note, too.
- 9:24Is like, where are the boundaries between what your
- 9:27tool, determined? AI does really well and where it
- 9:31works smoothly with other things around it.
- 9:35Yeah, so the sorry just to preface this a little bit.
- 9:39I know that right now with like DVC came out with a few months
- 9:43ago now with like 1.0 right And some people were asking in
- 9:47slack. How it seems like you're moving
- 9:50into ml flow territory? Is it worth it to use both of
- 9:54these or should I just choose one or the other?
- 9:57And so, I'm wondering like, how do you do you balance that
- 10:01situation? Yeah, that's a great question.
- 10:04I think you could use ml flow and determined like you could
- 10:07add all those API calls in. I think you'd find out it was
- 10:10pretty redundant when she got there though.
- 10:12By the point where you're training your models with
- 10:14determine all the stuff You want to track an ml flow is
- 10:17automatically going to be tried for you and determined and are
- 10:19gonna be able to see it. So while you could interface ml
- 10:23flown determined, I think I'm a like determined is really a
- 10:26pretty overlapping solution. And I'd be surprised that that
- 10:29was something that you ended up actually wanted to do when she
- 10:31got there. You know, on the other ends I
- 10:36think there's a lot of clean room for Integrations and that's
- 10:38some of the stuff we're going to talk about today.
- 10:40Whether it's an inferencing system, we provide, you know,
- 10:43API level access to the results of Training so that you can
- 10:46grab, you know, a model that you train them determine and
- 10:50instantiate it for whatever kind of inference you want to do,
- 10:52right? And so that's like a really
- 10:54smooth transition to some Downstream piece, which is
- 10:56making it super, super easy to take the results of a training
- 11:00run and use that good inference somewhere.
- 11:03And similarly, Upstream, you most people are getting their
- 11:06data to their models, just writing python code and we don't
- 11:10really get in the way of that. So whatever tools are using be
- 11:13it, DBC, or pachyderm. And we have good examples where
- 11:17you can specify things like data set versions in a config file
- 11:21while you're training a model, and then that all gets tracked
- 11:24with it alongside all the other metrics that you were attracting
- 11:27a determine so you can keep track of data stuff.
- 11:29But we aren't versioning providers.
- 11:31We just, you know, make it easy to interface with those version
- 11:34providers. So let's move on to cube though.
- 11:39Okay, and there was a great thread that came up the other
- 11:43day in the questions answered. It's part of slack.
- 11:48And it was saying, is cute flow dying and I want to know your
- 11:52take on it. Yeah, you follow me.
- 11:55I think and I've only interfaced with that Community, a handful.
- 11:59I should say up front but from my perspective I think It
- 12:03suffers a little bit because of how many like they manage that
- 12:06project some extent like it's a whole bunch of manage sort like
- 12:10individual projects and some of them have grown and flourished.
- 12:15And continue to grow and flourish and thrive.
- 12:17In particular, like I am a huge fan of give the pipeline's.
- 12:20I think they've done an incredible job of bringing
- 12:22workflow management to Python and machine learning.
- 12:26I think that's an interface that ml people can enter, like can
- 12:29work with and understand, and it makes sense to them.
- 12:32They're writing python to do it. That's an awesome component.
- 12:36And other components that are mature things like TF job in a
- 12:39job. Like those are really good
- 12:40building blocks and they solve the problem at the beginning of
- 12:43just like, how can we actually run machine learning?
- 12:45You flow, right? That said, there are other
- 12:47components that, like, have some ups and downs.
- 12:51I have like, I never want to bash on things because there's a
- 12:54lot of good work, but like, things like khatib is like, kind
- 12:57of tricky to use. Like I've never had a
- 12:58particularly good experience using their High parameter
- 13:00tuning, but it just so that's a long-winded way to say.
- 13:05I don't think it's dying. I think that there are excellent
- 13:08components. I think they come along at
- 13:09different Paces. I think if you find yourself in
- 13:12a hole of trying to get khatib to work, you might say, like,
- 13:14what is this? Cute fluffy.
- 13:16But in reality there's you know awesome work being done on stuff
- 13:19like pipelines that make it a really sweet tool.
- 13:21So great answer. So anybody that's listening if
- 13:24you have any strong thoughts on that, throw it in the chat or
- 13:28throw it in the comments because I love hearing about Cube flow.
- 13:31I think it's just such a beast like we know and there are so
- 13:35many different components and some parts are flourishing.
- 13:38Some parts not so much and it's great to hear your take on it.
- 13:43What are some of the things that?
- 13:45You hope for as far as a future with determined Ai and Cube
- 13:52flow. Like, how do you see those two
- 13:55becoming more solidified? Yeah.
- 13:58Yeah. So I think it's important to
- 13:59address up front that there's overlap between determined and
- 14:03some of the components of keep flow.
- 14:05So, you know, in terms of running training, you know, we
- 14:09are very similar in that concept like your MPI job.
- 14:12Your your TF job, what? Maybe we let you run, you know,
- 14:19models train models distributed that sort of thing in
- 14:23kubernetes. You know, we announced Community
- 14:24Support last week and so very similar overlap there.
- 14:30I would say like the thing that I think determined as a lot
- 14:33better is bringing that to a data scientist level.
- 14:37If you're just a data scientist and he was Doc, you Flo you're
- 14:39going to run into like having to learn kubernetes which I've been
- 14:42through that process before but I don't recommend it to most
- 14:44people who it's not a very fun thing to have to learn just for
- 14:47the sake of training models and similarly khatib, you know
- 14:50that's another piece where we provide High parameter tuning
- 14:54and you know I think frankly we do a better job of it and so
- 15:00there are pieces that we arrived with is what I'm getting at.
- 15:03So when you're close sorry if you wanted to finish that feel
- 15:07feel I'll wrap up real fast that said I think plugging into some
- 15:11of the excellent things they have pipelines like getting more
- 15:14intimate with that. Providing better apis so that
- 15:16you can instantiate determine runs and just, you know,
- 15:20building making it as easy as possible to use tools like
- 15:24pipelines and use their serving tool like deploy models.
- 15:27I think there are really clean interfaces that we could build,
- 15:30that would make it so that by, as soon as you write a model and
- 15:34determined, it's ready for serving in something like,
- 15:37Selden for instance, right? And that's, that's really cool.
- 15:40I want I want to explore and make that a better integration.
- 15:43Yeah, that does sound very nervous.
- 15:45Nice. So let's talk about that.
- 15:48We jumped ahead a little bit for what your vision for the future
- 15:52is. But let's talk about where it's
- 15:54at right now and how does determined interact with Cube
- 15:58flow at the moment? Yeah I got some demo material.
- 16:04I'd be happy to show off but right now you know there's a
- 16:09couple different ways. The first is something like you
- 16:12flipped pipelines. We've got API level access.
- 16:15And when you eat anything about workflow management solution, I
- 16:19think of, you know, like what apis can recall, the do really
- 16:21cool things, right? And so by providing clean API,
- 16:25as to do things like take a model from the GitHub repository
- 16:29and do distributed training right with the tournament,
- 16:31right? And so now, you can set up cute
- 16:34flow pipelines that can trigger distribute training jobs in
- 16:38determined. And if they're running weekly,
- 16:40not now I'll send you have a solution for retraining.
- 16:43New data comes in every week, you need to Restrain a model
- 16:46using Q flow pipeline. Determined provides the right
- 16:48apis to be able to programmatically do that and do
- 16:53it at scale or do hyper a tune that kind of thing, right.
- 16:55So that's one piece is just like by being a pi provider for
- 16:59pipelines. You can do really really cool
- 17:01things. Another side is something as I
- 17:05said like surveying we provide tools and this is again a pi
- 17:10contracts where you can We have them all registered you so you
- 17:14say you know, I'm naming this model, this is my question
- 17:18answering model, you can upgrade that model.
- 17:21You can maintain versions of that model, but then we have an
- 17:24API contracted so Downstream if you have a serving solution it
- 17:29can you can quickly push out and say update to a new version of
- 17:32this model and it will hook in s determine for that model.
- 17:36Load that model from determine and instantiate it.
- 17:38And you can use it without having to rewrite anything you
- 17:41just It's a bumper version, you know, and it's, you know, those
- 17:47are both, I think clean clean things already that you can do
- 17:51combine in this duel. So as far as like, let's say I
- 17:57want to find out which model has been trained.
- 18:00And what type of models they are, is the cube flow metadata,
- 18:06the way to go for that one. And determine does determined
- 18:09have a way to record. This metadata?
- 18:13Yeah determined is frankly I think a much easier solution
- 18:18than keep flow for tracking. That metadata when you train a
- 18:23model or say something in the model, registry the whole
- 18:26history of that training is title on with it.
- 18:29So every metric lost curves evaluation metrics is tracked.
- 18:34What hyperparameters you used? What machines?
- 18:35Had trained on one. It happened the state of the
- 18:38code when you trained it, if you're using a data version, Any
- 18:42provider like what version of the data used?
- 18:44Like all of that is automatically tracked as tide
- 18:47along with the models. You can access.
- 18:49It via API is like, it's all, it's all there.
- 18:51And so, whereas in Cube flow, you might need to engineer your
- 18:55own solution to snapshot, this stuff to upload, metrics to S3,
- 19:00or wherever you may be storing things, right?
- 19:02And determine when you train a model, when you version a model
- 19:06that stuff is frozen and accessible at all times.
- 19:10So let's just Take a step back because since we are chatting a
- 19:14little bit about model, Registries, can you talk to us
- 19:17about what a model registry is and why it's so important to
- 19:21have that? Yeah, so it sounds almost dumb
- 19:27when he talked about a mile registry like but there's this
- 19:31like actual chord difficult problem of I built this model.
- 19:35I was doing research. I'm trying tons of different
- 19:38hyperparameters, I'm modifying the model every five minutes.
- 19:42It's kicking off all these jobs. I get to this point where I
- 19:46think this is a good model, right?
- 19:48And then I don't want to use that in production somewhere,
- 19:51right? A lot of times the people bring
- 19:54into production is a completely different team.
- 19:57Like give it an ml engineering team are in ml Ops Team or
- 19:59whatever it may be. And so suddenly you need to
- 20:02coordinate. Like how do I physically, how do
- 20:05I hand off this model to this other team?
- 20:08And there's a lot that goes into it.
- 20:09It's the actual version of the code to instantiate the model.
- 20:12It's the right set of Weights, you probably want some way to
- 20:16track metadata associated with it, in case their scores be able
- 20:19to interact programmatically. So, at its core, this suddenly
- 20:24goes from, like, what sounds like, it should be a pretty easy
- 20:26problem to like, I'm spending weeks and meetings and emails,
- 20:30trying to like physically figure out and help this person.
- 20:33Instantiate my model and load my weights.
- 20:35And so, instead of training new models, or working on this now,
- 20:38your researchers spending time, all day with the ml engineering
- 20:42team getting figured out and then it gets worse because she
- 20:46tried to then build a new version of the model.
- 20:48And instead of just like that person being able to grab the
- 20:50new version. They have to go through this
- 20:54whole stupid cycle. Again of, get the weights figure
- 20:57out where to host them. Where do I put it?
- 20:59How do I instantiate? The new version is the same as
- 21:01their new environment like it's a pain right?
- 21:04And so with the mall registry comes in and does is just
- 21:07basically provide a clean interface for that hand off when
- 21:10you train your model and determined as I said everything
- 21:12gets tracked, right? You're the code that creates the
- 21:15model, the weights metadata, all of that right?
- 21:19And so by saving it to the mall registry.
- 21:21Now you Can say to your ml engineering team to get my
- 21:25model. My model is called
- 21:26question-answering asked to determine for that model.
- 21:29It doesn't just tell you where the stuff is but it will
- 21:31actually like instantiate that model for you and so you can use
- 21:35it in a downstream system caveats, it's python-based right
- 21:39now like we don't have connectors to plug into your C++
- 21:42Solutions and whatever may be right but at least for some
- 21:47simple things like running pipelines or batch inference or
- 21:52Serving Solutions, like seldom. It's, you know, you call an API,
- 21:56ask for a question answering model and you get it and
- 21:58instantiate it and you can get a version of it and you don't need
- 22:01this whole horrible handshake of how to do it.
- 22:04Hmm. Yeah, that makes sense.
- 22:07That seems like it will make life a lot easier to and it's
- 22:11one of those things that we talked about a lot here.
- 22:14How back in the day, the whole reason that devops came to be
- 22:17right was you don't want to throw something over the fence
- 22:20and have two teams taking Care of something?
- 22:23Yeah, it can be merged into one. And so I understand that's a
- 22:27little bit of what you're trying to do.
- 22:29There is make sure that it's not this whole process to get these
- 22:34models out there. Yeah.
- 22:36Start serving them as quickly as possible which I think is really
- 22:39what it feels like so many different companies.
- 22:43Right now are trying to do in this space is the pain is very
- 22:48clear for us, right? The pain is that it's taken too
- 22:51long. To get the models out there.
- 22:53Like I can't tell you how many people I've talked to on this
- 22:56Meetup. That, that is what they're
- 22:59trying to figure out how to make that time, break it from six
- 23:04months to two weeks or however long, even from two weeks to
- 23:08just, you know, a few minutes. So let's let's go into what you
- 23:15wanted to show us. Can you give us a quick demo
- 23:17real fast? And then if I don't know how
- 23:20long you budgeted for the demo? Hopefully we can talk a bit
- 23:23about the whole idea of getting from research to production
- 23:27also, and yeah, yeah, I can do it pretty quick.
- 23:31I think I should be able fired off. 33, let's do it.
- 23:36All right, so I just want to start with this exact story were
- 23:42just telling so right? This is my version of what
- 23:47without the tools you doing research?
- 23:49Kind of looks like you build your Bert Squad model.
- 23:53For a question answering in pie torque or actually.
- 23:56I'm using hugging face here, right?
- 23:59You're right. A model, you can train it.
- 24:02You write out MET Lyrics all that cool stuff, right?
- 24:06And as you go like, you can train models, you can see good
- 24:10results, but you're going to run into a handful of things.
- 24:13So, you know, I tried to kill model, it's getting decent
- 24:16scores. I can test it.
- 24:19I can, you know, ask some trivial things run against it,
- 24:24see what's going on? Maybe I can tweak some type of
- 24:28parameters train again you know like iterate on this thing
- 24:32eventually come up with a good model and this is going to work.
- 24:38Okay. For you but you're just get
- 24:40stuck. So it's things like you know,
- 24:42I'm saving checkpoints to this checkpoints directory but I
- 24:46probably actually want to name. Those checkpoints something has
- 24:48to do with the hyperparameters and I somehow else I want to
- 24:50like the metrics along side of them and all that.
- 24:53And so the first thing that comes up is she just you need
- 24:55some way. If you ever have any hope of
- 24:57going to production to keep track at a real core level of
- 25:01your work and so you something like ml flow, weights and
- 25:05biases, determined whatever. It may be, right?
- 25:09And you need somebody like, you finally can keep track of this.
- 25:13And so, you know, for this talk, let's talk about determined.
- 25:17I'm just going to jump to doing this exact same thing and
- 25:20determined so I promise you before determine runs very
- 25:25similarly once again we write a hugging face Squad model and
- 25:36kick this off and determined. And now we end up with something
- 25:39that looks a little bit more like this.
- 25:41So, It's going to do the same thing.
- 25:43It's going to train that same model of fixed type of
- 25:45parameters for a while, but when you run into sharpened, you have
- 25:50really comprehensive tracking of what's going on.
- 25:52So you have your model code, it's tracked, you can see where
- 25:57your checkpoints are being stored and have clean access to
- 25:59that. You can look at what
- 26:02hyperparameters were used to train this model, you have all
- 26:06of the curves you care about whether it's your F1 score or
- 26:09just you know, whatever it may be.
- 26:12Your metrics. And so this is the first steps
- 26:16production is like I actually have a lot of stuff.
- 26:18I know where this model is, I can use it.
- 26:21Like, I have a clear history of all the work I was doing and and
- 26:26so now you can do things such as say, you know, this was called
- 26:31notice was experiment to and determined, we can ask determine
- 26:35to get experiment to grab the checkpoint.
- 26:37Top checkpoint load that model. And we can use it to do
- 26:43inference. And so, you know, I say this to
- 26:46say, instead of having to keep track and messily work on your
- 26:49checkpoint code and keep a spreadsheet of all the metrics
- 26:52and all of that. You now you have a solution to
- 26:55cleanly keep track of all of the work you're doing.
- 26:59And you know, do inference in some sort of programmatic way
- 27:04instead of some ad hoc way where you're taking these models in
- 27:06notebooks and tossing them around.
- 27:11So the cool part about this though is it's not just you know
- 27:18as I said it's not just models that you pass around and ad hoc
- 27:21instantiate. We're giving you a programmatic
- 27:23way to do it and so what that means is suddenly you can do
- 27:28things like build scripts to do inference from some specific
- 27:32version of a model. So the other thing that
- 27:36determine provides as I said before is this registry and so
- 27:39suddenly, we can build a script that says, if I've got data in
- 27:43some path take grab some model from determined.
- 27:46Determined is located here, grab some version of the model and
- 27:49then let's going to do is actually like Loop over that
- 27:51data and score. So this is a really standard
- 27:55batch inference script, right. But instead of having to ad hoc,
- 27:59figure out how to do the code and upload my model that's three
- 28:03somewhere and someone else downloads.
- 28:04It's Where I have clean apis, same ones.
- 28:07I was using here to do it and if you're familiar with you
- 28:13pipelines at all like if you have a script that operates on
- 28:15some input from our parse and then creates outputs, you've got
- 28:19a one step jump to do say run this kind of thing in cute flow
- 28:24and so if we jump to cube flow we can this is my like boring
- 28:30version of this Pipeline. And so what's going to do is
- 28:32create a shared volume Download some data from S3 to that volume
- 28:36and then just call that script on that data, right?
- 28:41And if we tell it where determined is similarly, the
- 28:48name of the model, we want some version of the model, I have two
- 28:52versions here and where the data is suddenly you're talking about
- 28:56kicking off a script that you know and with people you can do
- 28:59this like run programmatically, you can trigger it from some
- 29:03trigger you can That Hawk, you can run it on some timeline,
- 29:06right, but it's coordinating a really reproducible way to do
- 29:12this as your model versions iterate.
- 29:14You know, all you're looking at is popping in a new version
- 29:18here. So if you've got someone in your
- 29:20research team iterating, creating better models, it's
- 29:23really easy to still use the same exact code to do inference.
- 29:28And you know, this experience is not the ad hoc collaboration.
- 29:34But you have this real clean dividing line between someone
- 29:36that's working in determined doing, you know modeling but
- 29:41maybe they can go and also kick off some hyperparameters, search
- 29:44to improve their model. They're doing all of the
- 29:46research stuff that they want to do to iterate on this model.
- 29:49Make it better try new datasets try new models and then behind
- 29:54the scenes, The Ops Team can take that and easily create
- 29:59scalable ways to do batch inference, right?
- 30:03And so this is really the core of what I wanted to show off
- 30:05that is just like this is a queen easy.
- 30:09Handoff to have your research over here and determine you get
- 30:12to do really cool stuff. You could scale up to Cluster
- 30:14scale and train models fast the easy.
- 30:17But with the right apis, you can make scalable ways to then do
- 30:22that and keep flow supplement that for inference Looks like a
- 30:25match made in heaven. Happy answer questions about
- 30:29this too. I know we flew through that but
- 30:31I have, we can dive into any code here to if people are
- 30:34curious about it. Yeah, for sure if anyone has
- 30:36anything that they want to say, throw it in the chat, I am
- 30:41seeing one from before that was asked, and it was airflow verse
- 30:47Luigi. Verse Argo verse ml Flow versus
- 30:50Cube flow which orchestration tool to use win.
- 30:56Frank, it is a good question. I've worked with a bunch of
- 31:00them. I have examples in one of our
- 31:02determined repositories for working with air flow and Argo
- 31:06in cubes of five points. I've heard of something called
- 31:11cooler that I'm thinking about building a example with later
- 31:14this week that is meta over all of those.
- 31:18I think they serve similar rules the thing.
- 31:20I like about Cupid pipelines is, and we can actually look at it.
- 31:25The way you declared people pipelines is just with python.
- 31:28Like, at least it's one of the ways you can do it and I just
- 31:31think it feels a lot more natural for a data scientist to
- 31:34be able to like, at my core. That's what I like to do, right?
- 31:37I want to write more python code and I want to eat less like Long
- 31:41demo files, the describe what I want to do here, feels the same,
- 31:45but I think the execution standard is a little bit
- 31:48cleaner. When you, blow air flow has a
- 31:52lot of plugins for doing like data transformation of stuff
- 31:54like that, or its keep flows a bit more geared towards running
- 31:58machine. Learning training type jobs.
- 31:59So, yeah. So another question is coming
- 32:02through here in the chat and it's asking when using Cube flow
- 32:05or determined, how can you deploy the model through CD
- 32:08tools like Jenkins? Yeah, it's a great question.
- 32:12So, I've looked into this for a couple of different ways or like
- 32:18even Argo has a CD there, something called Argo City that
- 32:20I've used before. One option is to have these cute
- 32:25flow pipelines, get kicked off by by some sort of c.t. to like
- 32:30Jenkins, right? So you push new code, say it's
- 32:33new versions pipeline or something like that, it kicks
- 32:36off this Pipeline and I have another example here.
- 32:41Which we in touch at all, but it's something like, you know,
- 32:45this is a pipeline that grabs a model from GitHub trains, the
- 32:50model checks, if it's better than the previous version of the
- 32:53model, and if it's better, it deploys, it was Selden, right?
- 32:56And so, this is exactly what you're saying.
- 32:57Say, you push new a new version of model code, to some
- 33:00repository, say, you push a new data set to someplace.
- 33:03Say you push new deployment code, right?
- 33:06Suddenly you can use your Jenkins or whatever.
- 33:11You may be using for CD to trigger this pipeline, run, all
- 33:16of this stuff and push that new model to the ployment.
- 33:19And, you know, I think that is a feasible step to actually
- 33:25delivering some sort of CD, or cic D to this machine learning,
- 33:29which is always been kind of hard for for a lot of people.
- 33:33Yeah, yeah, for sure. So there's another question.
- 33:38It's a yard M's asking in the chat how Is determined connected
- 33:42to cube flow in question. So in this specific case the
- 33:51batch inference, there's you know, this Cube flow pipeline is
- 33:56just running these steps. This step is actually calling
- 33:59those determined apis. It's in fact, this step is this
- 34:03exact script that I had open here that just says reach out to
- 34:09determined get the model. Called question-answering get
- 34:12version 2 of that model, it then, you know, loads and
- 34:15instantiates it and then you can use it.
- 34:18And so, You know, when you think about a pipeline like this, all
- 34:23its really doing is, we wrote a script that tells cute flow how
- 34:27to talk to determine and load a model and use them all over
- 34:31batch inference on some data set.
- 34:34And, you know, to some extent all Integrations in software are
- 34:38just good apis. And that's why I think we've put
- 34:41out here All right, mister researcher.
- 34:46Are we going to talk about a little bit of this?
- 34:48Now let's let's get into. I know that you've done some
- 34:52research with deep learning and I read up on your website where
- 34:58you talk about how your photographer and you also talked
- 35:01about some Atari game that you put some deep learning to was
- 35:04that it? Should I get that correct?
- 35:06Or was it just a random game? It was back in back in grad
- 35:12school actually. I did some work, there's a paper
- 35:15called feudal networks, for hierarchical reinforcement.
- 35:18Learning, the Google put out. Also paper, great concept.
- 35:24And so I put a lot of work in to try and replicate that paper and
- 35:29horribly fail, just couldn't do it.
- 35:32I find with a lot of Google papers that they have a lot of
- 35:34Secret Sauce that makes their things tick and if you don't use
- 35:43their secret sauce, you can't get it.
- 35:44So reproducibility and machine learning is really important.
- 35:48I found that out the hard way by pouring my heart and soul and to
- 35:50try and reproduce paper, but I love the space.
- 35:54I mean, I think it's just a blast working in the
- 35:55reinforcement learning space. It's, you know, we still had
- 35:59determined haven't seen a lot of people bringing that into like a
- 36:03real production system or setting, but it's a fun fun
- 36:06space. Well, let's talk about like,
- 36:09what components you feel are needed to Do inference in
- 36:14machine learning and how can we structure different models for
- 36:20that machine learning inference. Great question.
- 36:24Yeah. Inference and it's so I want to
- 36:28be clear that this varies a lot model the model which is part of
- 36:32the difficult things with machine learning.
- 36:35So funny enough, I actually think that deep learning is
- 36:39easier a lot of times to do inference with And that's
- 36:43because the nature of it working frequently on unstructured, data
- 36:48solves, one of the problems like one of the hardest hardest
- 36:51problems in inference. And so what I mean by that is to
- 36:56do deep learning inference, a lot of times you just need to be
- 36:59able to instantiate the model somewhere and have it be able to
- 37:02accept data and so you know instantiate the model can mean a
- 37:06lot of things you generally need code.
- 37:08That creates the model you need weights like you're trained
- 37:12weight. Still a Load them in and
- 37:14potentially some other number of artifacts with something like
- 37:18you know language model you might need the artifacts that
- 37:21actually instantiate your vocabulary stuff like that,
- 37:23right? And so that stuff is all easy to
- 37:28track with something like determined because when you're
- 37:30training the model it's like the same stuff you use to train a
- 37:32model ends up getting used to do inference and so if you can, if
- 37:36we know how to train your model, we also to some extent can do
- 37:40the same stuff for infants. But the upshot is that it's
- 37:44lovely like take an image and do inference, all you need to do is
- 37:46upload a plain old image. And what comes back is
- 37:49inference, I think inference gets a lot more complicated when
- 37:55there's a lot more data pre-processing that happens.
- 37:57That is, by far, I think the hardest part of inference.
- 38:01If I had to guess it's why people rant and Rave about
- 38:05feature stores whenever they come up it's because and this is
- 38:10that same thing we talked about before and You threw a real.
- 38:12MLS problem is when you have researchers that are trying out
- 38:17new features that are building, you know, python code to
- 38:20transform their data into the perfect column that will then go
- 38:22into their model to build a model better.
- 38:26The code that transforms stuff from SQL and two features here
- 38:30and then some python that changes it and then you change
- 38:33your model and you say, hey, look, I got a great new model
- 38:35trying to take that set of things and set it up.
- 38:38So that on live huge. Gail inference data that same
- 38:44set of Transformations happens and also trying to have like
- 38:46you're completely different team reconstruct that impossible
- 38:51impossible and so that's a whole set of problems that I think the
- 38:56people tackling feature stores like power to them.
- 38:59I hope they figure out a good way to make that scalable and
- 39:02find a good General solution for a lot of Enterprises.
- 39:07And I'm glad that we're in the Deep learning space and don't
- 39:09have to bet that. It's a slightly easier easier
- 39:11set. Problems.
- 39:13So long way to do that is to say in my happy little bubble.
- 39:17If you have your code, your weights, a good way to
- 39:21instantiate all of that, you're pretty much good to go.
- 39:25Well, tell me and forgive my ignorance on this, but I have
- 39:30two ideas of in ml researcher, right?
- 39:34One is the person that is at a university that is trying to
- 39:39create some crazy algorithm Or some new Cutting Edge thing.
- 39:44Then you have the other one and I kind of separate them in my
- 39:47head. The other one is this person
- 39:49that is at a company and they're trying to prove out a business
- 39:53value or they're researching. If this is really supposed to,
- 39:58if this problem is going to get like fixed by using machine
- 40:02learning, is that correct, or are they the same one in the
- 40:06same. When we talk about ml
- 40:07researchers? I don't think they're not the
- 40:11same. They're like different Levels of
- 40:12research but I still use that shorthand of research because I
- 40:16think the core Loop that a lot of people that are building a
- 40:19male models do looks a lot more like research in the way
- 40:24classical sense than it does. Like the production moves that
- 40:28were used to with like a software engineering type of
- 40:31role, right? And I mean like you're
- 40:34iterating, you are changing your code all the time.
- 40:37You don't commit every time. Like you know, commit new code,
- 40:41every time you make A small change to your model.
- 40:43You're really like dinking and dunking around until something
- 40:46good comes out, right? And that feels to me a lot like,
- 40:51like research. And so some of and I think
- 40:54that's one of the tensions when you try to push, you know,
- 40:58software engineering on that set of people is their core Loop of
- 41:02what they're doing isn't really very similar to software
- 41:05engineering once you get over the wall and that good model
- 41:08exists, then it starts looking a lot like software engineering,
- 41:11you need to integrate You need to deploy it.
- 41:13You need with some obviously big corks.
- 41:16That sometimes you have gigabytes of things you're
- 41:18moving around and yeah. Yeah.
- 41:20Right. So to get back to the original
- 41:25question a little bit, those are different kinds of researchers.
- 41:28There's the researchers that are completely trying out new
- 41:30architectures. And a lot of times that is never
- 41:33with a has no goal of getting to production, you don't care if
- 41:36you can do production, as long as you can get the metrics out.
- 41:40I've read enough repositories of at code that it's very obvious.
- 41:43That a lot of them have no intention of ever putting
- 41:45production behind that, but I still think the people of the
- 41:50companies are doing some variety of research and it creates that
- 41:56core tension of Y can be hard to get to production sometimes so
- 42:00can you talk to us about the different steps that you'll see
- 42:04from research to production? And also the idea that you just
- 42:10said, like some code It's never going to go to production,
- 42:14right? So how can we prepare our code
- 42:16better or how can we better be ready for when we do, want to
- 42:21get to production? Yeah, I think there's a POC
- 42:25phase that happens a lot like for everybody, no matter where,
- 42:28like, even the most mature organizations where it's like I
- 42:31see this new paper came out really promising, like we just
- 42:34need to get it running and start data set.
- 42:36Like, can I get this running against my data set and see if
- 42:39it's like, worth our time to invest in?
- 42:41A completely new model to see if we can work out a few extra
- 42:46percent of this system that we have.
- 42:50And that's a lot of times the code that you don't care about,
- 42:53light it on fire, when it's done.
- 42:54Like, as long as you get the answer.
- 42:56Is this worth my time or not? It's good enough, right?
- 43:00And then, you know, it's kind of a funnel, you get down to the.
- 43:03Yeah, this is worthwhile. We need to think about what this
- 43:06is going to look like. We need to do things like yeah
- 43:10sure if you're trying to speed this up or we want to do high
- 43:13for parameter to need to build a better model.
- 43:15And it's at that point that I think in reality as a ml,
- 43:19scientists need to start thinking a little bit better
- 43:21about how you're structuring your code, determined takes a
- 43:25pretty opinionated stance on how you structure code.
- 43:28And I think it is, The first like it is that first step to
- 43:32moving production, we asked you to literally say, like here's my
- 43:36model, here is my Optimizer, here's how I'm loading data.
- 43:38As I said before, right? And that by doing that by
- 43:43keeping some level of organization on your code,
- 43:47you're setting yourself up for success in the future because it
- 43:49provides like a standard that you can then translate to a
- 43:52production system later. So talking a little bit more
- 43:56about development. Do like a lot of times you'll
- 43:58see one good Model come out by a whole bunch of hand tweaking or
- 44:01stuff like that. The next step that I tend to see
- 44:04is people that start wanting to retrain models all the time,
- 44:07right? They get new data, they're
- 44:08grinding out, new data, they have a huge labeling team there.
- 44:13An autonomous vehicle company that's got cars driving around,
- 44:16you know, the model is not tweaking a whole bunch but they
- 44:18this pouring in faster than you can imagine.
- 44:21And so this is another thing where you want some tool to
- 44:24programmatically be able to run that training.
- 44:28That huge scale on new data every day and push that result
- 44:32to somewhere and this is another thing.
- 44:35You know that I think something like determined really has a
- 44:37good role in which is like providing the tools and apis so
- 44:41that however you want to do large-scale recurring training,
- 44:45you have you know and that's like a super production model at
- 44:48that point that you're like really retraining and that sort
- 44:50of thing. And so where do you?
- 44:53Oh sorry, good work. I'm just wondering where you see
- 44:57this in this This pipeline. Where do you normally see people
- 45:00getting stuck? Yeah, so it varies a lot on the
- 45:06maturity of an organization. I think there is this initial
- 45:11thing where people get confused in this, like, jump from pocs to
- 45:17like, oh crap. I kind of need to build models
- 45:19that have some hope of getting production, right?
- 45:22And there's a lot of stuff to blame.
- 45:25There have been repositories that have come out recently, or
- 45:28detector on twos and like, that are really good and set up
- 45:31already for success. But if your Going to research
- 45:34code and training models that way like literally take you
- 45:37someone's research code, figuring out how to plug in your
- 45:39data set, and go, let me tell you, it's a pain to get that
- 45:42kind of code to like, you need to literally rewrite a model of
- 45:46times, right? And so, and it's not fun work,
- 45:49that's not enjoyable. Work that people get excited
- 45:51about training new models. That would be excited about
- 45:52refactoring code, right? And so, I just think it's some
- 45:56core like that, initial push from like I'm in the POC phase.
- 46:00My goal is to show that this works too.
- 46:03I'm in a production phase, I can still train models but I need to
- 46:07do it in a somewhat reliable way where I'm using tools to track
- 46:10it and I'm keeping track of all my artifacts and to be clear
- 46:15like, this is where I think tooling can come in, like,
- 46:17determined tells you how to structure your model and then
- 46:20tracks everything for you. Right.
- 46:22Same like ml flow, at least like gives you really, really easy
- 46:26apis to keep track of all of your work.
- 46:28Like, let you have a slightly more reproducible stance on like
- 46:32how you're doing this? Of.
- 46:34And so this is one of the places where I really think there's a
- 46:36space for for tooling to help bridge that Gap.
- 46:39So that when people like to help people understand what it looks
- 46:42like to build production-ready models.
- 46:46Great point. Last question, I got for you and
- 46:49then I'll let anybody in the chat, throw what they want and
- 46:54ask away, but I want to know once you've gotten to this
- 46:58maturity and you've created something.
- 47:02We could say your a little bit farther along this path.
- 47:05What are things that you've seen?
- 47:06Pop up that you're not necessarily thinking about in
- 47:11those first phases like that POC to just getting it out there.
- 47:18You know. I think the most well-documented
- 47:21and one that I don't want to dwell on but I like it really is
- 47:24is just like your data changes up and Heath you eventually
- 47:27right always happens. Data drift is like the thing
- 47:30that happens to everybody's models all the time.
- 47:34And at its core, what that means is, you need to have tools to
- 47:38solve that in place. That means Downstream, you need
- 47:43tools to identify it happening. Like when you're whatever you're
- 47:45doing for in French, need to be able to find it quickly address
- 47:48like identify exactly what it is.
- 47:50It means Upstream you need to be able to figure out how to label
- 47:54new data. Fix it solve the problem and in
- 47:58the middle was determined you need to have the tools that when
- 48:00all of those pieces are firing you can.
- 48:03Quickly really quickly, retrain that model on the new data that
- 48:08you identify. Did you need to label?
- 48:09Because Downstream you identify what was wrong, right?
- 48:13And, you know, I feel weird even saying that that's the thing
- 48:16that people don't know about because it feels like these
- 48:17days. Everybody knows about it but
- 48:20it's still B people all the time and things that you have to be
- 48:23ready for is when you know when shit hits the fan, how are you
- 48:26doing? It?
- 48:27It's also important, it's so important and I think we talked
- 48:31about that quite a bunt, a lot in the In the slack channels.
- 48:36And I'm a big proponent of it. Especially this whole monitoring
- 48:40peace. That it feels like what is the
- 48:44way to do it? How do we go about it?
- 48:46It's so much more complex than just monitoring software, right?
- 48:50Because of the data and because of the model and you have to
- 48:53check for drift, and I like this idea of saying you, if you're
- 48:57monitoring, you want to be able to have a very clear path and go
- 49:00back and fix it really quickly. Rather than just A drink.
- 49:04Okay drift is happening. Let's be able to know where it
- 49:08started or why it started and get it fixed.
- 49:11So that we don't have to suffer through that for a while without
- 49:17actually needing to know and looking at some of the most
- 49:21mature organizations, understand this.
- 49:23The one that always comes to my mind is the autonomous vehicle
- 49:25companies where they see new soft science.
- 49:28They see news road conditions, they see something and they have
- 49:31active learning set up so that while they're training.
- 49:33They could, they can get like, in the middle identify new
- 49:37stuff. They test their cars all the
- 49:40time to see and identify where they need to collect, new data
- 49:43and label new data. And they have really
- 49:45sophisticated pipelines to quickly, retrain models at huge
- 49:48scales, right? And you know, I think they're
- 49:52good Beacon to look for words of how people are really solving
- 49:56this issue at skill right now. I think you are muted.
- 50:06Thank you. That's always whatever.
- 50:10I see the last question. Coming through here, in the chat
- 50:12and make nav, is asking what are the most underrated topics
- 50:19regarding deploying? Machine learning models in,
- 50:22production, in your opinion, Yeah, we briefly touched on it
- 50:29but the thing that I don't think people talk about enough is how
- 50:33hard it is to recreate your data in production.
- 50:39As I said, I think for deep learning we're gifted or pretty
- 50:43lucky that sometimes you can just upload an image and get an
- 50:45answer back. When you are talking about
- 50:49complicated transforms before your data is ready getting that
- 50:53to happen. Yeah, at all is hard like just
- 50:57recreating that side of transforms as hard, let alone
- 50:59recreating it in a production grade way where if you're
- 51:03getting data and you need it to be ready and transformed a
- 51:06fraction of a second later so you can make a real-time
- 51:08prediction. I think without a doubt that's
- 51:11the thing that people have the hardest time.
- 51:15Identifying which is actually I think the hardest part of this
- 51:18production ization of malls, do you have a solution or you just
- 51:22going to leave us with that problem?
- 51:24Mmm. So just feature stores are real,
- 51:29like, people. I don't think people have a for.
- 51:31So I think when people first think about feature stores, the
- 51:35thing that comes to their mind is a place where you can store
- 51:39all of your features and then reuse them for later.
- 51:42And that's a small part of the value prop.
- 51:44But the real value prop, is providing clean pipelines to
- 51:47take features that you use for training and use them in your
- 51:52Downstream system. And so, He's out there doing
- 51:55that. The one I think of the most is
- 51:59something like tecton AI. It's relatively young but made
- 52:02by the people who made Michelangelo and then there's a
- 52:06couple of open, opsworks house one that they market and then
- 52:10there's an open source offering called Feast which is a Go Jack,
- 52:14Google collaboration and I know Cube flow is talked about work,
- 52:18integrating the feast. So those are all tools that
- 52:21start to try to address that problem which is it's a real
- 52:25hard one for sure. So last one, I see.
- 52:29We got two minutes left. I'm going to try and squeeze it
- 52:32in here. Gonzales, asking in my
- 52:34experience managing data science teams.
- 52:38Usually they're not software perficient like developers
- 52:43having this in mind. How do you see the adoption of
- 52:46tools such as determining to float by data scientists?
- 52:50Yeah, I agree. I mean I say this In Florida
- 52:55State as a data scientist, who probably should not be allowed
- 52:57to develop software that, that I completely agree.
- 53:02And so that's why I think determined is like a good
- 53:06solution for this problem. Frankly, you're letting me put
- 53:09on my sales have for a second here and I apologize in advance.
- 53:13We built determined to be a tool that data scientists want to use
- 53:17like they write in Python, they describe information about
- 53:21models and optimizers and like the stuff that they think About.
- 53:25And then they can use that to not worry about how it gets
- 53:28happens. Like they don't need to worry
- 53:29about machines and infrastructure and all of that,
- 53:33that August provisioned, as long as they say, here's my cool
- 53:36model training on a gpus and then determine goes and joins
- 53:39money gpus whereas something like Cube flow is not like that.
- 53:43Like you follow if you want to train a model and a gpus you've
- 53:46got to write a spec that's a whole bunch of kubernetes and
- 53:53that's not like I have yet to The data scientist, most
- 53:56organizations in the world that like is super excited to have
- 54:00thread, whole bunch of kubernetes.
- 54:01Yeah, mole to be able to train their model and so determined
- 54:06Feels Like For Me, fills the gap of like being an accessible for
- 54:11data, scientists tool to do model training and stuff like
- 54:14that. And then, you know, I see it as
- 54:17building, the right ways to hand that off, to people, who are
- 54:19software proficient, like your software leaning, people who
- 54:22maybe aren't Being on the coolest deep learning models,
- 54:26but they can talk machine learning and they can use tools
- 54:30like our model registry to interface with the work that
- 54:32those data scientists are doing. And let's just finish it up
- 54:37here. I know that determined does have
- 54:40an open source components. Can you explain that real fast?
- 54:44I know a little bit but essentially all of determined
- 54:48everything that I briefly showed you today is open source, you
- 54:52can install it. Yeah, right now, it's available
- 54:56on GitHub. Determined AI / determined.
- 54:59And essentially, the whole platform, we do have an
- 55:03Enterprise Edition. It has an oppressed security
- 55:06features and stuff like that, but none of the all of the core
- 55:09machine learning stuff that data scientists use that.
- 55:12All of it is open source so easy to get going with installs and
- 55:17AWS gcp, kubernetes on-premise, whatever you like wherever
- 55:23possible. Awesome, dude.
- 55:25David it's been so good talking to you man.
- 55:26I really appreciate you coming here.
- 55:28Showing us what's going on answering these questions that I
- 55:31had in my mind and talking about cute flow with us.
- 55:35Yeah, it's been fun. Really enjoyed it.
- 55:37Thanks for having me. Thank you everybody for sticking
- 55:39around. And if you have anything else to
- 55:42say to David, he is in the slack.
- 55:46So get him at David, her, she just tagged him and ask him
- 55:51questions. Please do look.
- 55:53To it.