Hello and welcome to the live stream if you are wanting to make little animated lower thirds somewhat like this either for your live streams for your virtual presentations for your webinars meetings or whatever it is Then you're in the right place because today I'm going to talk to you how to make all of these in in keynote. It's a free software for the max. So it's a no brainer for me. I know key keynote inside and out. So this is the place where I went to create these things. I know there are other software options available and some may say you can do all this in after effects and things like that. But I don't use those things. I use keynotes. So that's what we're going to be focused on today. Incidentally, this question came up in the take one tech community and this question was specifically in your live streams. How do I get this thing to pop up? And that was Andy Lehman asked that. So this is directly in response to that and that there is also your call to action to join the take one tech community. If you want already if you want to get your questions answered, you can do so in there as well. And I just noticed and he's just popped into the chat as well. So great to see you here. Hey rich. Hey Andy and I can see in there but it's just popping into you come great to see great to see you here as well. Incidentally, there is a download associated with this video. So I'm going to go through and do a demo of how to create all of these things but actually the the file that we've got at the end this template that we're going to have with multiple different versions of these. You will be able to get all of those from the website. I've left a link to that in the in the description as well. So you can head on over there to do that. So first of all, and that will look something like this when you go to the download page. There you go. Just put in your name and email right next to my silly old face there and then you'll get the the full keynote file that we are just about to create. So let's start then shall we in in keynote. And so I've got a blank keynote document but let me just step back a moment because you might be familiar with regular sort of slide sizes. And what I see a lot of people doing actually is when they're creating these lower thirds and these animations is they do actually have a full screen size for their slides and then they just sort of placing the elements on screen where they want them on their real screen. If that makes sense. So let me show you what I mean by that. So if we went to here and created a new file. So file new and just take something blank blank presentation like that. Then you might think well let me just start with this. This is what basically going to represent my full screen. So let me just go in and imagine that I might have some sort of lower third that's going to be down here. I might then just duplicate that have some sort of name tag that's going to pop out something like this maybe with some other bit of text just down below it something like that. And then they're creating the animation you know taking up the whole the whole spec in basically a representation of the full screen with all of the animation. There's a couple of things about that is first of all the file size is going to be unnecessarily large because it is a full sort of screen thing where in actual fact all you're really interested in is this little part down here. But then also there are certain things in terms of the animation that this then becomes a little bit restrictive and we'll see that a little bit later. So actually the way that I do these things is I basically just create a custom slide size. Now this might not be immediately obvious because when you go into the the document settings. So in keynote if I go into document then down here you've got the slide size and the options are widescreen or standard so widescreen be 16 by nine standard being more of a four by three traditional slide size. But there is this option to create a custom slide size and this can be really whatever we want it to be so we could make this 500 or 600 by 200 for example. And then we've got you know a smaller shape more like the shape that we actually want so I go in and create these things and I've got a couple of different templates actually but we'll just use one of them as a starting point. So some of them are more kind of like this shape. But then the one in particular that Andy was asking about was in particular this one here. And I'll go through how this is built out in terms of the animation but you can see how this is actually a bit of a this is this is effectively the slide. So it's a weird shape. I can show you the aspect ratio of that. It is 1500 by 240. That's the size that I figured for it to fit. And incidentally as well I've made some of these things bigger so although I'm often streaming or recording at 1080p but you always better sort of future proven these to a certain point and making them larger in case you want to blow them up. So I've started doing more at 4k and so on. So yeah this is just to say that you can basically make your keynote slide whichever shape you want. Incidentally all of my stream deck icon packs are also made in keynote and there I just created a square slide and then that's how I make all of my keynote icon packs. Hey Neil, great to see you here. We've got the econ moderator crew in the chat because Andy is also just recently come on board as an econ moderator as well. So Andy and Neil both here great to see you and Tatiana great to see you as well. By the way, I've been having some. Well I say that it's run out recently but lovely coffee thanks to you. So just appreciate that the coffee that you gave me it's creative camp much appreciated. I enjoyed that for sometimes after we after we got back anyway so let's get on to how this is all going to work. What I'll do is I'll actually start with a more sort of simple one and let me just get this so that you can see everything. I'm going to hide a few things or hide the navigator off the side. And let's also just go to the view menu and say that we want to fit this to the screen. Now this one as I say I would use a couple of different slides for these but I'm just doing this all in one template so you have everything all in one place. So the ones that I have that are this shape generally actually are just the slide is the size of the thing that I want to animate. But we'll do a few of these anyway so I'll build out a few more but this is the one that you saw at the beginning. So if I play this now it plays there in that space that is basically what is is you saw on my my screen earlier. So let's go through and see how I actually built that out. So if I just end this slideshow this is just a slideshow running here. There's a few elements on it obviously I start with putting on exactly what I want there. So this was my name a bit of a box there another box there some more text and another box here so in order to create these. I'm just literally using the most simple of tools click on the shape up at the top and then we can add in a box. And we can make that whatever size and shape and color and I'll go through and build out some of the more of these afterwards but I'll just go through and quickly show you the process first of all. And then once we've got the sort of format of it how we want it to look. Then it's a case of figuring out how to animate it. So this is where I wanted to do something where the if I just play it again. I wanted the sort of yellow bar to expand up and then I wanted the name tag to sort of come out from that. And then the the title there to drop down from the bottom and then for all to sort of wipe out of the way. So what we're doing here is we're using the the animation. So let me just go back to that or we're in the previous slide. I beg your pardon. Hang on a second. It is let me see just one second. It is I tell you what it is. I've also in I do to beg your pardon in discord. I've just got a word saying that they're not seeing any demo in discord and it does appear that discord has switched my my virtual camera off. Hang on one second. There we go. I do apologize about that. Yeah, discord does like to just change things upon as randomly. So it's going out on the stream, but it's just not going out on discord. So so there we go. Let me just come back to this for a second. Apologies about that for those watching in in discord. So let's come back to this one and talk about then how I've actually animated this and I'll just zoom in a little bit so that we can see this a little bit better. So what we'll do now is we'll just go through the the exact things that I'm doing to to animate this out. So this is all done with the animation pane. So if you go into the animation here and I click on any of these elements, then you can add in different animations and I won't go too far into animations. Just know that there are three different kind of types of those. There is either a build in which is where something is off screen and entering the screen. There's the action which is something that you want to happen to it basically after it's appeared on the stage as it were. And you want to have some sort of animation happen whilst it's on screen. And then the build out is some way that the thing is going to exit the exit the slide exit the scene. So those are the three different sort of states that you want to be concerned with. And then within each of those you've got these different types of animation that you can have. So maybe if I just go over to a blank one, I'll just talk through some of those. So I'm just going to add a shape on. And if I go to add a build in effect here, we've got things like Iris. So that's going to sort of wipe out from the center. We've got a wipe which is wipe left, right, up, down that kind of thing. Maybe I need to be just making this a little bit bigger for you as well. There we go. We've got a nice big box there. And then if I just add an effect here, things like dissolve. So if I preview that one, fade and scale, something coming in with a little shine going across the top of it. Move in is where it's going to basically move in from the left or right. You'll notice there there was like a bit of a bounce to it. So if you do have that one selected, you can turn that off. I usually have that off because I'm usually wanting things to just move into their place. If I preview that now, you see that it doesn't have that sort of little bounce to it. If I go through some more of these, these ones that are at the top, the appear and move, these tend to be the ones that I use because you can get a bit more fancy. So there are things like twirl. I'll show you what that looks like. Swoosh, spin. All of these ones, I just think look a little bit gimmicky and not necessarily as professional as they could be. Same with things like this, the blinds, cube and all of these. So I tend to try and avoid those because I think that it's good to have some sort of animation or movement. That is drawing people's attention to whatever it is that's on screen because that's presumably why it's there. It needs to be drawn attention to. But yeah, when you get into things like fireworks effects, the flame effect, flash bulbs and all of those, I tend to just think you start losing a little bit of the professionalism there. So I tend to just keep to the simple ones. But anyway, that is just to show you the sorts of animations that there are. So then when it comes to things like the one that we just looked at here, if I just play that again, it's a case of thinking what is it that we want to achieve and how can we do that with those animations in Keynote. So the first thing there was that yellow bar. I wanted that to basically sort of wipe out from the center. And then the name moves out and the title there drops down from the bottom. So the way that I achieved that was if I just zoom out again, I seem like I'm zooming in and out all the time on this. But these are the different elements. And one thing you may not have or you usually won't just as a default is in Keynote, you'll usually see something like this where you've got your slides down this side. If you do pop out one of these pallets, like the animation pallet, it will pop out from the right hand side. What's really useful in Keynote is if you also go to the view menu and you just saw it earlier there, was this one, the show object list. The reason why it's useful to see the object list is because it tells you all of the different elements that you've got in your scene. So here like rectangle one, rectangle two, name and all of these different things. You'll see that as I'm clicking them, they're highlighting there. What you can also do is, you know, I could give that a name. So name background and then this one I could call title background. I mean, I've just got the take one tech name in there, but you get the idea that what that could be used for. And then this could be, you know, sidebar or something like that. The reason why it's useful, especially as you get into more complicated things, where you've got elements that look the same. And I'm talking specifically about something like this. You see how we've got rectangle, rectangle, blue, left, blue, right. So the boxes that are, you know, potentially look the same in the object list, but they are, you know, serving different purposes. And I'll show you where this comes into because if we then go to the animation for this section and we look at the build order. So anytime you add in an animation, that's going to come in a certain sequence and that's called the build order. So if I click on build order down here, because I have already added in animations, this is basically what's going on in this slide. And now you can see the benefit of naming these things in your thing over here on the object list on the left hand side, is that now when you look in your build order, you actually see the name of the object that you're animating. As I say, when you get into more complex builds like this one here, you can imagine that it would be easy to sort of lose track of that. And you can see that I haven't got these named in here, but I'll go through and name them in a moment and you'll see how that updates. You can clearly see what it is that is animating and when it's happening. So just another brief point on animations when we come over here, come over to the build order, I'm going to go through and just sort of explain what's happening with this. You know, one of the frustrations I have with the keynote is that this build order box, you can't have it just sort of persistent as in constantly open somewhere. And if you play the slideshow, quit the slideshow, then the build order box disappears and you have to just reopen it again. It seems to me something that if you're playing around with animations like this and you want to test it, then you would think that when you come back to it, the build order box should just be still open. But alas, it's not so you have to come down here and just click on it again. But let's see what we've got here then. The sidebar, first of all, which is this yellow part here, we've got that as an iris. And now that is where it just sort of expands out from the center. Now actually what I wanted it to do is wipe out like from the center and basically go up and down. There is a wipe function on here. So if I go into the different things here, we've got wipe. But the options that you've got with that are you can either have it go up, you can have it go down or left or right. You can't actually have that go out from the center. So if I go to the wipe function here, you can see that we've got from the bottom, from the left, from the right. So I could change that to the top. And then that would now come down from that top side. But what I wanted to do was have it come out from the center. Call me picky, but that's what I was trying to achieve with this. So I just went into iris here. And from this one, you can choose whether you want it to sort of come out from the center or in from the outside. So if I have that go in, you'll see the difference there that it sort of goes down from the top. Now, technically this is happening in a sort of circular fashion. So it's going radially from out from the center. And if you sort of notice right in the center there, if I just sort of play this animation again, then technically it is not a clean wipe up and down. But honestly, nobody is necessarily going to notice that. Well, some people will always, but you know what I mean. So that is the first part of the animation. And then the next thing that I wanted to do was have those things come out from the other bar come out with my name on it. So let me just zoom out from here a little bit. And what we've got in there is we've got the name background. Now you could think, well, I'm going to have this wipe function where it's going to wipe out. One thing about the wipe function, which is let me just show you what that looks like is if I go to wipe, you probably can't see it too much. But the wipe function sort of does this thing where it puts a transparent, slight transparent edge to it. You saw it there when it wiped out of the way as well. That there is this sort of the leading edge of it, if you like, that's coming out. It's sort of basically fading in as it goes. And I didn't actually like that. I wanted it to sort of move out so that the very edge of the element here is just completely sort of solid. And so it kind of appears that it's just moving out from this element here. So that's why rather than using wipe, I actually use the move tool. Now the thing about the move tool is if I just put that back in again, move in. The thing about that is the move tool is moving things in from the edge. So if we just sort of preview that again, and what I'll do is I'll come over to this one in fact. If I do a, I'll show you the difference on this one. If I do this as a wipe on here, you notice that the edge stays where it is and the shape sort of wipes out from that. Whereas if I was to change this to a move, move in, then it's coming from the edge. And this is actually one of the things I was talking about right at the beginning where I said, you know, some people will start with the full frame of their, you know, their window that they're going to be using these lower thirds. And then they'll have the, you know, the objects appearing within that where they need to be. Well, the thing about that is a move in, if we imagine something like this one here, if all of these elements were actually sort of moved somewhere else, so they're not up against the edge, you can see what's going to happen with this. The elements move from like the top and the bottom. So that's why having the shape of the keynote slide as exactly the same slide size as the animation that you're looking to create means you've got a little bit more versatility then because you can have things sort of move out that are hidden behind other things if that makes sense. So let's go back to this one again. And I'll just move that back to where it was. And we'll open up our build order again. So that is why I've got the name moving in. My actual name itself, so the name background is moving in. The name itself is just a wipe, so we can see what that looks like again. And that's just sort of wiping out, which I think works okay with text. The title background, this one I wanted to appear that it was kind of dropping down from behind the top bar there. So that one is also just a, in fact, that one is a wipe in. It's wiping, moving in from the top. And then the name background and title background are then when they finished moving out. Now this is something, this is all animated automatically. This is the other part about Keynote is when you are setting up these animations, you can choose when these things are going to happen and you do that with this section down at the bottom. So if you've got any animation here, start either, you can start on click. If you're obviously doing a slide presentation, you might want to be sort of clicking through these, but we're obviously trying to create something automated. So you can choose to have it either start with the previous build or after the previous build. And you can, and by the way, the builds are just each of these things. Build one, two, three, four and so on. And you can also add in a delay. So you can see how I've got this all completely automated. The sidebar initially, immediately, obviously. And then the name background though, I wanted a bit of a pause. So I've said, well, let's start that one with this one, but put in a half second delay. The text then I want to happen also with the previous build, but again a bit of a delay in there. Then I've said that I want the side yellow bar and the name to come out of the top, but then the title background that drops down, that's happening after all of this. So that's why when you preview this, the name comes out first and then the thing drops down from the bottom. But those two things are happening pretty much the same, but I'm just giving 0.4 of a second after the things move down for the text to appear. Now all of that needs to stay on the screen and then it all needs to move off. So the name background, this is now the build out. You can see here, this is the build out. This is basically going to happen five seconds. As you can see here, I've put in a delay after that. So the effect of this means that when we play it, what happens is, if I just preview it, everything comes on. Once that happens, there's then delay of five seconds. And then after five seconds, everything moves out again. And that's basically what's going on. All of these things pretty much I think happen at the same time, apart from the sidebar just collapses after everything else has moved out of the way. So anyway, that is a sort of in-depth look at how that was actually done. So let's go ahead and create a few more options because there are loads of options that you could come up with this. And here is my preparation for today. I've created a little sketch of a few of them that we might want to consider. So you might want to have something that incorporates your logo as well. So let's go over to this one. We could actually use this as a starting point. I'm just going to delete that. And we could have something with a shape. Here we've got a shape, and let's say we want to have a logo in that. When you've got any kind of shape like this in Keynote, you can always drop an image directly onto it. So if I go and get my logo and I'll just drag and drop that and drop it over the top of that shape and then you see how it basically drops into the shape. You can then zoom it to sort of get it to fit exactly where you want it in the cropping of that and then click on Done. So we've now got a shape that has an image in it. By the way, if you do download this template, then you can click on that and you can always go to the Format, Image, and then you can go to Replace. So although this template I'm just going to provide exactly the one that we're creating right now, you'll just be able to click in here and go to Replace and then go and find your image or another image to drop in here. But what happens though is now that we've got an image which is basically a part of a shape, one of the things about that is then you can add all of the same styling that you otherwise would be able to as well. So you might want to have a border. Let's change the color of it. So we'll make that a white border perhaps. You could also add drop shadows and things like that. So I'm going to just move this to the edge because what I want to happen is I want to have something where the text comes out of it again. So let's just think about this. I might do something similar to this one actually. And because of that, to sort of speed things up, I'm literally just going to copy those elements and then we will just come back over to this one and I'll just paste them in there. And so what I'll do though is I'll just make this a little bit smaller, move those over. Those colors aren't necessarily going to work. So perhaps what I'll do is also just move this up a little bit to make it a bit smaller there. In fact, how about I do something completely different? Let's do this as a yellow line. So I'm just going to move this out. Now some of this may, depending, because it appears to be on a black background. Oh, incidentally, let me just step back quickly. Also in the document settings or in the slide settings, I should say the format, the other thing to do is although we've created our blank slide, the default is that a slide is either black or white. I think depending on the way that you've got your keynote set up, but the other thing is that I always have my slide background as transparent. So that's another thing to do is to just come into the format menu and you can see where it says fill. So normally the color fill will be black or white as I say, it's just a standard. So you see how that looks exactly the same as when it's transparent because it's black on the background. But just note that when you do specifically set that to no fill, then it is going to be transparent and you won't see that that thing on the background. You won't see the background when we export it. I beg your pardon, mints in my words today. And let me just come and change the text color. We just try something like this. I'll just put that over there and put that over there. So let's see what animations we've got on this. In fact, that I think that will look better in white actually. So we'll just move that over. Move that over. There is a line tools in keynote. So if I click on all of these different elements, I could go over to the arrange. And then in here you've got the alignment here. So I could say align left. And now they're all just perfectly aligned to the left. I could just bring that one in a little bit. This one now I think what I'll do is if I go to the animation again, because I copied over these elements, it's copied over the animation from before as well. So what I might do is actually just change this one here so that was move in, but we've now got a gap there. So maybe this one, I might actually just do that as a wipe now. Wipe in. We've still got that box appearing on screen, so we don't need that one anymore. And this one, we don't have any animation on this because we've literally just placed it there. So let's add a new animation. I do quite like this one. Where is it fade and scale at times because it just has this sort of light little sheen that comes across it, little shine, I should say. So if I just reduce the time on that to make it a bit quicker, the default for these is always it seems painfully long, so I always reduce these. You'll notice that because this is a new animation that I've added in, it's just appeared at the top. And what I'm going to do is I'm going to also add a build out. And we will add an effect here. And let's do the fade and scale for that one as well. So it's basically going to fade out in the same way. And I'm going to just put that down to 0.5 seconds. And I'm going to here go in and change the... Put this one at the top because this is the first one. And these should all have remembered their build. So remember before the name popped out five seconds after the first build. Well, now that we've just dragged that other one up to there, then it is also remembered that build that we had before. That's the delay that we had before. This one didn't actually have... Hasn't remembered anything because it's a new element.  And if I remember rightly, the delay was about 0.3 seconds. So save me going and working all that out. Some of this is just kind of like tweaking and playing around and testing how things are going to work. The other thing is this at the moment is called Take One Tech Logo Dark.png, which is the name of the file. But I can just go in and change that element name. So I'll just come in and change this here just so that when you go in and replace it, it's called something different. And you can see that that appears there. If you go in and change the text itself, obviously you can see the name of the text. If you go in and edit this text, then it will say something else in there as well. But let's take a look at how this one looks. So I tell you what I've done. There we go. This is what happens. You go through and now I need to go back into the build order because the default is always on click. What I need to do is have this start automatically. So after transition. So the very first one, rather than have it start on click, I need it to start automatically. It will actually work like that in the export anyway. But just for the sake of this, now when I click play, you'll see that the thing appears just like that. So let's go through and just quickly create a few more. As I say, I've got a handful of these that we could try out. And so I'll go and create one a little bit similar to that. But in fact, I'll tell you what I'll do. I'll do one of these instead. I'm going to just start with this one because I think this has got some more useful elements. You may well want to sort of increase the size of this and have your logo as part of it as well. So we could just expand that out and make that a square. I'm just looking at, I'm actually just sort of eyeballing this because you can see the width and height there just popping up onto screen. So that's about the right size. And then if I grab the logo again, I can drop that directly into there. And just zoom and scale this out so that it fits into that space. And then with this one now, I will also just change the build of that. Maybe just with this one try a dissolve. So it dissolves in and then everything moves out afterwards. And then the same for the build out. And because this one previously did already have an animation associated with it, then now all we're doing is it's just literally changing what that is. So we can just move this up here. But you see how it says dissolve? It tells you what the different animations are in there. And I'm just going to move this one back up here. So I'm doing something here, which I haven't mentioned, which is that you can go in and sort of explicitly say where you want these to start from here. But you can also just sort of drag them. So if it's separated from the others like this, there's a gap between it. But if I wanted that to happen directly after those, I can just drag it and drop it just like that as well. And I'll just put this in here like this. So there we've got that one done. These are all pretty similar, but they're just sort of showing the point. And I tend to, you know, you can get really fancy with these, all kinds of things animating on and off the screen. But sometimes I think a bit more subtlety goes a long way. Let's try one that does look a little bit different though. I will go to here, duplicate this one. So in all of these, if you do get the download, all you're going to be doing is just going in. You can adjust the size of these to adjust whatever text you've got in there. Obviously just changing the text is just clicking and editing. But the timings will all still stand as they are. And then just once again, anything with an icon in it, you can just go to format image and then replace the image. But let's do a different one here. And sometimes, as I say, these might be a little bit more tricky to see on the black background. But we're going to look at how you actually bring these into Ecam and some other things, because one of the things that I do is I have these sort of linked to comments in the chat as well. So when I trigger these in Ecam, it actually triggers the comments in the chat as well. So how about this one? And with this maybe I might do just a simple wipe on the background there. So if I go to animate and we will change that one. Oh, it's already set to wipe. For the build out, it's the build in that I want to change. Like this. We've got that rogue white thing down there. Let's instead actually make this a box. So instead of it being a thing like that, we could actually make a box around the thing. So I'll go to format style of this box. Instead of it being a color fill, I'm going to have no fill, but we'll add a border to it. And the border can be that blue color that we've got. And maybe just make it a little bit larger. When you do the alignment, you can do alignment by center, but the thing about text is it's not necessarily always completely centered in the box in any case. So I always just do the text and the box as two separate elements. But if I was to play this one now, again, you're not really seeing it too well, because it's on a sort of blue background. But depending on where this was going to be in your scene, this may well show up very well. So another thing we could do though is let's change that to white for the time being just so that it does pop a little bit more. And I'm going to change that to white. Or maybe yellow as those are some of the other colors I was using. And maybe what we might want to do is actually have a sort of partly transparent color in here. So I'm going to go back to giving it a fill. But what I'll do is I'll give it a color fill. And what I'm going to do is give this a slight transparency. So instead of it being this solid blue color, what I'm going to do is in here where I've got my color palette, I am just going to reduce the opacity there, the 50%. So that's mean that this is going to be slightly see-through. Now, once again, right here, if I was to play this, then you're not really going to see the transparency, opacity because it's on a black background. But in a moment, we'll bring these into Ecamm. And then you'll see that you've got basically a slightly transparent background going on there. So let's come back into this again. I'll just do one more example of this. And what I'll probably do actually is just put a few more of these in before I upload the file. So there will be sort of more examples of this. But I don't want to go spend too much time just doing more of the same. But I will just do one final example. And let's think what we could do with this. Maybe some sort of circular thing. So what I'll do is I'll start with maybe something a little bit less boxy. So I'll say New Slide. And then I'm going to add in a shape like this. And we can then add in not a circle, but maybe a rounded rectangle, something like that. And with the rounded rectangles, you've got a little handle here that you can adjust the corner radius. You can also do it in the Format in the Arrange section. You can adjust it in there as well. But I'll just do it in there for the time being. Maybe actually make this a bit bigger. And here you can see that the rounded rectangle, these are both blue. But if I just quickly change the color of them, that one's over the top. I might want to say, well, let me put the circle on the top. And then I'm going to do that same thing of just dropping the logo in there for the time being. So I'll drop the logo onto that shape. And we'll click on Done. And then let's give that a border. And then we can drop our titles in here. And maybe even do something like this. If I have the main title up here, and then let's do a smaller version of that down at the bottom for the sort of subtitle. Or the name and title, whatever you want to say. There we go. So I'll take that one and that one. Just copy these over. And we'll paste those over there. I'm going to change the color of this one temporarily so that we can see. Or in fact, let's make that actually, but let's make that the blue color. I'm just clicking in there. One of the things that as well catches me out with a keynote still is the color fill. You just have to make sure that when you've got the color fill palette open, that you are conscious of which one is selected. So if I was to have a border on here as well, you might think that if I click into here and pick a color, but then if I want to change it, if I click in the color palette, it's going to change that. But in actual fact, you need to make sure that the color wheel is sort of selected on the screen first. So that would be something like this. And now we've got the color fill selected. So I can choose that one. Bring that down like that. Name like this. And then it would just be a case of adding in the animations again. So I'll just get these all a little bit more centered because it feels like that's a little bit too high up. And move that down just eyeballing this. And what we could also do is you can, we've got these different elements here, but what I could do is I could group things together. So I could click on those two there and right click and select group. And now that we've got those as a group in that side, I could call that sub title. It's title, really name and title. I'm getting my terminology mixed up here. Let me call that title instead. And then in here, we want to select the name and this one and we'll group those together. And we'll call that name. And you'll notice that it has also sort of screwed around order a little bit. So I'm just going to reorder these. I'm going to move the title to the top and I'm going to put this one up here as well. But now if we go into our animations and incidentally if you've got something grouped, you can only animate that as a group rather than animating individual things within that group. So if I look now, I've basically got three things that I can animate. So what I'll do is I'll come in here. We'll do a add an effect. I'm going to do that to fade and scale again. And I'm going to change that to 0.5. And then on this one and this one, I'll just do the same thing just for speed and I'll add an effect here. Let's do a wipe on both of those and we'll leave those at one second as well. And if I go to the build order now, you can see we've got these three things happening. So maybe what we'll do is we'll have these two happening together. And then the, so the logo coming out first, then we'll have the other things happening both together. So I want that to happen after and I want this one to happen with build two. So basically build two is happening after build one. So when the logo has appeared and this one is happening with the other one. So if we just preview that, you can see what that looks like. There we go. So then if I go to the build out now, what I'll do is I'll just have, let's say I want to have those just disappearing. So for these two, for the build out, let's just have those dissolve. And then this one, we can have that to do that fade and scale again. So build out, add an effect, fade and scale. So let's look at how that looks. We again want to have that delay. So we want it to happen after. Let's give this a four second delay. And then these two can just happen at the same time. So I'll put with previous build. So now the whole thing together then if we just sort of preview this and let's make sure that our first one is happening after transition. So if I was to play this now, you'll see what happens. We've got the thing appears. The other elements wipe out from that. There's actually something weird going on there. And now that I look at that, which is that the let's go back to that one. Yeah, you can sort of see the line through it, given that that's all coming out at once. I think what I might do is actually just group all of those together instead and have that just come out as one big group. So now if I have to go back and correct our animation. So I'll go to the build order. So now that we've grouped those, you see how it's removed those other animations. So I'm going to go back to the build in, add an effect and click on wipe and then build out, add an effect, click on wipe from there as well. And I want the one where it's wiping out to go right to left. So now I just need to reorganize these. I'm just going to move them where I want them to be. And basically this is going to happen after build one. This one here is going to happen after a four second delay. And then this one here is going to happen after that. Or maybe let's have that happen at the same time. A slight delay. So now this should work. If I press play, it should just look a little bit better. I think there you go. It all comes out together. You don't get any of that weird sort of overlapping. And then it should disappear off the screen as well. So that is another one there. So those are just a few different ones. There is this one though. Now this one may look a little bit, you may wonder how this one was done because if I play this one, what happens is it sort of comes out from the center and then it wipes out. And this is that thing where I was talking about. I wanted something that moved out from the center but moved out sort of, what's the word? Not using the iris function. And so the way to do that was to use the wipe function, but there is no wipe from the center. So I had to kind of like cheat with this one a little bit. So what you can see here is there is actually sort of two halves to this. So I've got this yellow bar here, but I've also got a duplicate yellow bar over this side. And then I've got two halves. So this is half of the blue part at the top. Here's another half. And then the white background is also in two halves as well. And what that means is that when it plays, I can animate the yellow bars to come up from the center. And then I'm animating them to move out at the same time as I'm animating the wipe out on the other. So it gives this effect that, you know, it's expanding and collapsing. So let's take a look at how I've actually built that animation. And I'm just going to go into the build order again. Once again, it would be nice if it just stayed open. But you can see here what we've got is these different rectangles. So we've got, they both do the iris out. So they both do appear in the same way as I did on that very, very first one where they just appear from the center and, you know, sort of come out. But it's the moving parts that I wanted to do. And that's actually a thing in here. So if I just go into one of these ones, let's see. It will be... I just want to show you which one is which. So it's actually... You'll also notice that as I'm clicking in the sidebar, it is highlighting any elements in here as well. So I'm going to call this rectangle right so that you can see which one it is. And this one is basically rectangle left. Because although they're both in the center at the moment, they are going to move. One's going to move to one side and one's going to move to the other. I mentioned at the beginning that there are three different builds where you've got a build in and you've got build out. And so far, that's all we've been using. But there is also another one which is action. And that's anything that's going to happen whilst the element itself is on screen. And what you can see is in here, the rectangle that's ultimately going to be on the left-hand side, there's an iris for it where it basically comes in. But then also the next thing is there is this move option. And that is something that is one of the actions. So you can, if I just come and add in... I'll just add a new one. Oops, should have added just something blank. But if I go to shape, then you can go to action and you can add an effect and you can add move. And it's going to move from one place to another. And you literally just move this to wherever you want it. You can also change the path. You can also add different points on the path. So now if I was to preview this, this is how that would animate. You can also do other things and you can chain these things together as well. So if I look at the build order, there is just one thing there. But I can also just add another action. I could scale it. So if I click on scale, you can see that's basically showing me the start position and the end position. So I could scale that like that. The point is with build in and build out, there's basically only one action or one animation, I should say, per... only one animation per element on screen, per object. But with things that are happening, actions on screen, you can basically chain those together because you might want things to move all over the place. Anyway, that's just to show you that you've got these actions. I'm basically just using the very basic move is what I'm doing. So if we come back to this one here and we go back to our build order, you can see that I've got these two rectangles. They're both doing the same thing. They're basically just wiping out from the middle or Iris out from the middle. Then the next thing is that they are moving and they move out to the side. And then what I'm doing is I'm using the wipe command on the rectangles that I've got on the left and right so that as you are... as the yellow bars are moving at exactly the same time, the rectangles are also doing that wipe. And so that's what gives it this effect of, when you play it, if I press the button, it wipes out and then the bars move out to the side. And so it gives this impression that everything's sort of moving out from behind the yellow bars. And then I'm doing exactly the opposite in reverse. Basically, they move back in again and then at the same time, those rectangles are wiping away at the same time. So let's get rid of this slide here. And so that is what's going on here. So we've got basically... now you can see the Iris in of the left and right, the move of the left and right. You've got the wipe of all of those rectangles behind that form the background of it. Then you've got the actual text is appearing and that's just that fade and scale, the one that has that slight sort of shine going across it. Then you've got the thing down at the bottom there, the book of call... sorry, so this is all the build in, 0 from 1 to 10. And then what happens is there's a delay again of five seconds and then that's why it stays on screen. And then after that, everything all sort of disappears again and it's basically just the reverse of what we've just been through. So that's how this was made and that's how these things that I've got on my screen. So when I actually press this now on my stream deck, it's appearing on the screen. That's how this exact thing was created. So that's 50 minutes to answer and this question in the Discord server. So that's now we've got the animation but there's the next step obviously which is the exporting of it and getting it into ECAM or OBS and we're going to use this. So to export from here, now that we've got the animation, we want to go up to, and I'm not quite sure why my window is right up there when it should be losing a little bit of valuable screen real estate there. So from here, I'm going to go to File and then Export and we're going to export this as a movie. And now what you're going to do is you can export an entire keynote presentation as a movie. So if you've got a whole slide decorated with a whole load of animations, you can export the entire thing as a movie. But obviously we've got individual slides here and each of those is going to be its own individual animation. So first of all, what we want to do is rather than just having all of the slides, we're just going to export them one by one. So what I'll do is I'll export because we've got a few in there. I'm going to export the one that had that semi-transparent background which was slide number five so if I go into slide number five bearing in mind that, you know, keynote is presentation software and, you know, you may be wanting to export a whole series of slides, as I've just mentioned, then you might want to bake into this, you know, delays in going to the next slide after builds in your animation just sort of bake those in when you are exporting it. But in our case, we don't want to do that because, I mean, it's not actually relevant because we've only got one slide in any case and everything's automated. But these things here though, the go-to-next slide would be if you were exporting multiple slides of an actual presentation. The go-to-next build would be anywhere where you don't have automated timings but you've got basically a click, then this would just put in some arbitrary time in there. So I just always leave that as zero in any case just in case there's any that I haven't changed. But in here also, we've got the size. Now the resolution is set to custom, but it will actually show you here what the resolution it exports as. And we want to make sure that those are actually the same. So just so that I don't get this wrong, I just want to double check. We've got 1,500 by 240 was the size that I set for this. So I'm just going to go back into that again, export as movie. And if I type in 1,500 there, it has actually just put that in as a default. Now the frame rate, I'm going to leave that as 30 frames per second. That's what I stream at as well. Now when you come into here, the standard compression type is going to be H264. This is basically the sort of video format that it's going to be exported in. The default will be that. And you'll notice that when you've got that selected, export with transparent backgrounds does not show up. But we've already set the slide to transparent and we do want to make sure that that comes through. So you want to click in here and go to this one, Apple ProRes 444. That's just all you need to know. It doesn't really matter what all these other things are. That's the one that you want to select when you are exporting. And you see it's just defaults to export with transparent backgrounds. Now I can click on save. And what I'll do is I'll just save this into there. I'll actually just save it right there. It is now creating a movie. And if I go over to that, what we should see is that we have got that now, a little movie file. And it is here. So I've now got a QuickTime movie. Here it is. I think I actually exported the wrong one. We could still use this one. It still proves the point. And now that is exporting out from there. So if I now come into my eCamp, I'm going to show you how to bring that into there. So let me get out of that demo mode for the moment. All we're going to do is basically just take the thing. Let me just put a few other things back on here so you can see. And I'll do my eCamp demo mode. So there you go. You should be able to see my full desktop now with the eCamp and everything. Well, it's just got the eCamp window actually, but there you go. Now what I've got is that movie file. I can drag and drop that into the scene. But actually what happens sometimes is it will default to your scene source in eCamp being that movie file, whereas actually what we want is we want it as an overlay. So rather than do that, what I tend to do is actually drag it directly into the overlays window. So I'm going to just pull my overlays window on here. I've got quite a few up there, but if I just come into these little animations, this is where I keep them all in a little folder in my overlays, I'm just going to drag this in and drop it just there. And you see that when I do that, it then started playing or rather appeared there. Now I'm just going to pause that for a second because what we want to do, and I appear to have exported this extremely long for some reason. I don't know quite why, but anyway, I'm just going to leave it so that you can actually see it on the screen for a second. Let me just play it until it's come out. And we'll make that a little bit smaller. And we could place that wherever you want it on the screen. You can resize it. And as I said, right at the beginning, I know some people just have the full frame and then they create the lower third where they want it to be on the screen. It becomes a bit tricky to position it then. And also the other thing is, you know how in Ecamm, when you are sort of hovering your mouse, if you hover over any overlay, that then becomes the thing that you are moving. And obviously we can lock overlays and things like that in Ecamm. But yeah, if you've got something that's just the full screen, then you're kind of taking up, you're potentially dragging it when you don't want it to be. So anyway, I'm going to just make this a little bit bigger. There are a few settings here though. So you've got the play button to sort of play it. But on this little playhead that appears below the overlay, when you click on that scene is locked. Let me unlock the scene. When you click on that little playhead, you've got some things that you can choose for what happens. You know, first of all, do you want it to auto play? So if it was embedded in the scene, it would auto play when you go into that scene. For me, all these kind of things, I don't have them in a specific scene generally. They are sort of global, so they show in all scenes. The next thing is start from the beginning. So yeah, we always want the animation to start from the beginning. But this one here, what to do when it's finished? Now do nothing means basically when the animation is finished, it's still going to be there on the screen. And so even when the animation has sort of disappeared off the screen like that, there is still technically an overlay there. And so I don't like that because I don't like it to stay in the, you know, as an element on screen. And it also makes it tricky as we'll see in a moment to sort of re-trigger it again. So what I always do is for this one, I'll change this to hide and stay hidden. What that means is when the thing plays, it plays and then it gets off the screen. And I can show you that in the overlays window, if I find it wherever I put it, I put it over here, I should probably be resizing this so that you can see just the overlays. I'll actually show you an example with this one. So if I go to my name pop out here, notice that this name pop out here is shown as hidden at the moment. But if I show it, what's going to happen is the name is going to pop out. Where is it? Just down there. But watch when it actually disappears again, then it will disappear from view here. So this name pop out at the moment is not shown. If I show it, then after the animation happens, then it's going to automatically hide it again at the end. So now it's disappeared, so it's not physically shown. So that means that although I've got all of these different things that could be in here, all of these different overlays that I can trigger, they're not physically being shown in the scene at that time. Hopefully that makes sense. One last thing then would be how do we actually integrate this with Stream Deck? And what I do personally with my Stream Deck is I also, because these are things that I'm generally triggering during a live stream, I want to have things like, you know, if I want to say, you know, go and check out my icon packs in the store, for example. When I press that, you'll notice that there is also a link that has just been dropped into the chat as well. So the way that I trigger these then is in Stream Deck. And as I say, I use Ecum Live, but if you're using OBS, you could do something similar. I'm basically just in here. If I share the right place, let me do this a little bit better. I don't need to be in demo mode to do this. I could do this in a much better way. Okay, we'll come back over to this scene over here. So now we've got Stream Deck open. And in Ecum Live, you've got the option to show hide overlay, but also you've got play animation. So because this is an animation, that is the one that we want to use. So you've got their show hide overlay, but play animation. Now, actually, the show hide overlay will still work because it is technically an overlay, and we've set it to hide after the fact. But the play animation is also going to auto hide it. But here you can see that if I click on here, it gives me a list of all the different animations. Let me put up a different one for a change. So I'll just use the Academy one. And then if I just click on that button now in my Stream Deck, now it's going to pop up that one. You'll notice that that looks exactly the same as the consultation one that we used earlier. But this is the beauty of this. Once you've created a few templates and adjusted all the colors to match your branding and put your logo in or whatever, then you've just got a template and keynote that you can just go through and quickly change out all of the text and make multiples of these for whatever use cases you've got. And as I say, I've got quite a few in here. But that at the moment is just literally triggering the animation itself. But what I do is I create a multi-action. And then in the multi-action, that is where I go and add in the show hide overlay. Where is it? The thing about e-commerce, they've got so many buttons, which is great. It means that I always lose where they are. There it is. Play animation again. I'll use this one as this one. Like and subscribe. Actually, that's a bad one because I wouldn't have a link with that, would I? How about this one? Streamdeck icons. So this one's going to play my animation, which is check out my store for Streamdeck icons. But it would be great if I could also be dropping in a link to that as well. So in Ecamm, we have the ability to add in a comment. So in here, you'll see this one, post comment. You're not using Ecamm if you're using OBS. They may have something similar, but certainly there is a YouTube plugin for here that you can add a comment in as well. So this could be something like check out my store, or check out my icon packs in the store. And then we could have my URL slash store like that. So now what I've got is I've got two things that are happening with this multi-action. One is during the animation, but it's also going to post this comment in the chat. So if I come back out of that and now I press that button on my Streamdeck, the moment of truth, it should pop up. And also we should see that it's just dropped down into the chat as well. So that is how I'm doing all of this stuff with Keynote. And once again, you'll find a link to go and download the free Keynote template, which will be exactly what we've just created this past hour. And I will go through before I upload it. I'll just add in a few more. So I think we've got about five or six. I'll just add in a few more variations of it so that we've not all got the same looking lower thirds. But I will just say as well, you can of course customize this. So just coming back over to this one here, you'll see that any of these elements, you know, you can just go through and change these colors, change the color of the text, change the font, change all of those to make it match your style. We've got six in there at the moment. I'll just go through and add in a few other variations of those so that you've got a few more to play with as well. And don't forget to change that logo that is up in the Format section image and then replace that there. Another thing that you might be interested to check out if you are interested to learn more about Keynote is the Keynote Masterclass as well. You'll find a link to that in my store as well. So if you head over to the store, which is linked in the description, I've also linked directly to this. I've actually just added in a couple more sections to this and I've got more to add in later today as well for Keynote. And it's not just about how to use Keynote for presentations. I also talk about immersive presentations in there as well and using it for graphics and so on. So you can go and check that out over on the site as well. So that's going to give you all you need to do know to learn the ins and outs of Keynote. Let me just come and check in with the chat because I realize I have been rattling through this, wanting to just have a good solid tutorial section. But let me just go through to see where we're up to. Hey, Keeley, great to see you here. And let's see as well. Peter, great to see you as well. Hope all is well. Let me see lots of chat. Hey, Paul, great to see you here as well. And Aubrey, all the cool kids are here now. Hey, Dan, great to see you as well. Oh, by the way, I haven't responded to your Facebook message, but the answers are yes. I'll definitely be interested in that. I'll get back to you later today, though, about it. And George as well. All the Creator Camp kids are here as well. And Eileen as well. Thank you for stopping by. Glad you like the templates. Well, there we go. So I think there are no questions, which is perfect. If you've got any questions, though, don't forget to head over to the Take One Tech community. It is free to join that. And that is where this entire live stream came from, actually, because it was just something that was asked about in there by Andy. And so if you do want to join the community, then head over to takeonetech.io. Family and then you can come and join in the Discord. Ask any questions you've got in there. It's a better place, by the way, than in the comments of YouTube. I always find it a bit of a fire hose of things to keep on top of, but the Discord is the best place to ask those questions. Thanks so much for being here. Thanks for joining me. I hope this was useful. Don't forget to grab that download. And then I'll leave a link to some of my other eCamp resources over on the right-hand side as well. Thanks also to my wonderful channel members. Really appreciate your support. Have a wonderful day, and I'll see you all again very soon.


Good afternoon, everybody, and welcome to our talk. Today, we're going to talk about how we at Databricks are using the Argo ecosystem and combining it with multiple cloud-native technologies, such as Prometheus, Kubernetes, Envoy, to support our model-serving system and how we're using it to scale to meet our customer requirements. We'll talk about a couple of challenges and how Argo is helping us address those challenges. This talk will be fairly introductory, given the time constraints and the number of challenges we want to talk about. Awesome. Your presenters for today are Rohit Agarwal. Hi, this is Rohit Agarwal. I work on the traffic platform team at Databricks. And then my team mostly handles the ingress and egress stack, things like service mesh. And I'm here with my colleague Arjun. Hey, and I'm Arjun Dikuna. And I work on the GNI Serving Team at Databricks. And I focus on the ML ingress stack. Before I continue, I'd like to introduce Databricks to those of you who don't know about it. So Databricks is a SaaS platform. And with a very simple mission, we want to democratize data and AI. What does that mean? Is we give you all a unified platform where every individual, not engineer, but individual has the tools and capabilities required to make sense of your data and drive better data-driven decisions. This includes your ETL workloads, your model-training stack, your model-serving stack, stitch it together with really good lineage tracking, and combine it to the governance framework. We've grown rapidly over the past few years, where over 7,000 bricks are strong globally. And we are hiring. So do check out our careers page. Let's talk about the AI lifecycle. When you start with the AI lifecycle, you will generally start with some raw data set. You take that data set, clean it, and make your trained data from there. Optionally, also a feature store. From there, you train a number of models on that data and evaluate all those models on some metric that you care about. And then you choose the best performing model and deploy that model, which means that with all the investments you have made to the entire lifecycle, the actual business utilization or potential is only realized once you deploy that model. In that case, you need to make sure that deployment is a good deployment with a good production use case deployment. Enter GNAI serving with Databricks.  It supports CPU and GPU serving. In addition, Databricks also curates a list of top foundational model APIs so that you can start experimenting with model serving without having to go through the training process. And you can also use GNAI serving as a gateway to external model providers, such as OpenAI. You get all of this with a unified UI, API and SDK to manage all these types of AI models. It is serverless out of the box, which means that our customers can now make the availability versus cost trade-off using request-based auto scaling. It also comes with the scale to zero option, so it's really useful when you're developing your models and you're testing them out before you productionize them. As with any real-time serving system, it has an SLA-backed availability, low latency overhead, secure deployment. It integrates really cleanly with your feature stores, which could be online in nature, and your vector indexes to power your RAG applications that everyone cares about today. And then you have your governance with Unity Catalog and request response logging to reduce your errors with inference tables. Cool, our next slide, one more. So since its launch last year, it's been less than a year since we G8 GNAI serving. We serve 1,000 weekly active customers. There are about 5,000 plus active endpoints being queried. We support a max of about 25,000 QPS per cloud region, and it's currently G8 on AWS, Azure with GCP are coming soon. So let's talk about the first focus of our talk, which is the GNAI serving ingress stack, and see how Argo helps us release this ingress stack and update it with high conference and stability. The ingress stack is crucial to our serving system. As we said, it supports up to 25K QPS for our customers. In addition, it does authentication and authorization verification. It does request-based and concurrency-based rate limiting, and it exposes metrics for consumption to both GatorBrick's engineers internally and our customers externally, helping us power their dashboards, which means we really need to be careful with this ingress stack. Next slide. So now, updating this ingress stack is tricky, right? Because our customers use GNAI for a myriad of applications across multiple verticals. This could be healthcare, banking, manufacturing. My favorite use case is GoGuardian using GNAI serving to monitor the internet usage of school children to try and prevent self-harm tendencies. Given these mission-critical use cases, it's imperative that whenever we update the ingress stack, we have zero downtime. We cannot have any 4x or 5x access errors during an update. We cannot have any regression on latency or performance. A lot of these applications are very latency-sensitive. And finally, if there is ever an issue that happens during a rollout, it should roll back automatically to restore the last known LKG status. Wow, updating the stack is kind of scary. So you could say, hey, let's not update the stack. Let's deploy it once, make a really awesome ingress stack, and call it today. Unfortunately, that is really not good deployment practice, with security patches coming in regularly and just improvements that we can constantly make in our ingress system, we have to constantly update the stack on a pretty regular cadence. So if you're updating our stack, let's look at what makes a release safe. There are two primary factors that you can talk about when you look at the impact of an outage caused by a bad release. The first is the number of impacted customers, and the second is the duration of that outage. Therefore, both these factors kind of give you the two important principles to reduce the impact of an outage. The first principle is reducing the blast radius. So you can catch breakages before the effect a large number of customers. And the second is reduce the rollback time. Reduce rollback as soon as you find an issue so that you can reduce the impact of your outage. Cool. So let's look at what Kubernetes today does as a standard deployment. So you have a deployment and you create a new version of your service. What the deployment does is it manages two replica sets. It manages the old stable replica set that's running your current stable version of your service. And the second is the new canary replica set where it's gonna deploy your new service. And what the deployment rolling update does is that it moves from the older replica set to the new replica set as soon as possible. It'll try and create your replica set pause and terminate the older pause. But that kind of violates the first principle of a safe rollout. Hey, if something goes wrong, it completely takes down our service and impacts our customers immediately. Let's say there's a womb that hits us a new service after five minutes. After the rollout is complete, it affects every single customer using that service. The second is during this update process, you can collect metrics. So we use Prometheus internally. And we have a lot of alerts that has been set up on these metrics. So let's say there's some alert that fires during the solar process. It generally pages an on call. Everything's on fire. And the on call looks at your standard operating procedures. The on call looks at dashboards, tries to figure out what's going wrong. And then when they realize that, hey, there is some issue with the rollout, they'll trigger a rollback. This is where our second principle gets affected, which is look at the end to end time between when the on call was first alerted and when they are rolling back the deployment. This is non-negligible. And the longer this is, the larger the impact of the outage. So what do we do? So we decided to start using Argo rollouts to update our ML address stack. And Argo rollout is nothing but a drop in replacement for a deployment with a couple of really interesting fine drain controls that we're gonna talk about really quickly. You'll notice that the rollout has changed the strategy file and gives you analysis and steps. Let's take a look at steps first. So now, rather than a zero to one rollout, you break your rollout up into steps. So we're changing how fast we rollout, how fast we can rollout at a particular time. So in our example, we first update 20% of our pods, wait 10 minutes, then the next 40% more, wait some more time, and so on and so forth. During this entire process, there are constant background health checks that are running via the analysis template. And I'll come to that in a second. So our first principle is met because now our first principle says that, hey, we're gonna try and reduce the impact by reducing the blast radius, by breaking up our deployment into smaller, more fine-grain steps. And at the end of your rollout, it all remains, it's like a deployment happened. It's the same out of the box. So with this fundamental foundation, let's look at what changes now in how we roll out the ML serving stack. So instead of a deployment, it's a rollout now, with an Argo rollouts controller, which is a microservice that's controlling this rollout, that's now constantly querying Prometheus to look at the health checks that we care about. Instead of a zero to one deployment from the old replica set to the new cannery set, it first takes those 20% of your pods, runs the background health checks, and if everything is green and the rollout is healthy until now, it continues the rollout. Now what happens is something is bad. Some health check fails based on the analysis template, and Argo is immediately able to tell the rollout that hey listen, this is not a healthy update, let's roll back soon. So we've met both the principles we really care about. A more staged rollout to reduce the blast radius. And if there is something that goes wrong, the human in the loop is removed, and the Argo controller can immediately roll it back, reducing the duration of the outage, thereby reducing the impact of that outage. An analysis is basically the background metrics that are constantly being verified to check that if some metric is going haywire, resulting in a unhealthy update. This is an example that we actually used during our analysis, and it's one of many, you can choose a list of metrics that you care about. So in our case, we have a prober called the heat seeker that's constantly checking that the ingress stack is up and running. And if we see any five X-axis during this rollout over a period of 10 seconds, and it happens twice, so the failure limit is twice, we trigger a rollback. And that's how we're trying to keep our ingress stack safe and supporting all these really good use cases of our customers. We don't just add metrics out of the box, we first test it so that we know that we are sure that these metrics are gonna survive and not give any false positives, and I'll leave the mic to Rohit to talk about this part. Thank you, Arjun. So in this second half of the talk, I'd mainly focus on workflows and how we use Argo workflows to do a lot of use cases here at Databricks. But then I'll take a minute to highlight this feature that Arjun just mentioned. So we added capability for dry runs in Argo rollouts, and I think it went out in version 1.2. So what happens when a developer is trying to add a new check, if they add this check in the veteran, and if anything goes wrong, we just initiate a false positive rollback. So prevent this scenario, we have this feature called dry run. So whenever a developer is trying to add a new check, they can simply just mark it as dry run. In dry runs, you can have as part of analysis, template, you can also have it part of the rollouts and experiments. If a dry run check fails, we don't initiate a rollback. We simply give you a result at the end of the rollout that you can use to analyze, and then based on that, you can tweak your checks and then make refinements. When you're happy with the check over unsuccessful runs, you can then graduate these checks to veterans, and then they start impacting the state of the rollouts. So just to see an example, here is the analysis template that we shared before. This is the analysis template that we used to update our ingress stack. Here we have two metrics. One is the 5x6 errors, which is marked in the dry run mode. And then another one is 4x6 errors. So in this case, if you hit the failure condition, which is like you are getting 10 5x6 errors in the last five minute interval, this dry run check would fail, but then it won't impact the final status of your rollout. But on the other hand, if you fail the second check, which is a veteran check, which is getting 10 errors in five minute window, 4x6 errors, it would actually initiate a rollback. Just to speak quickly how dry run mode actually works, our analysis template can consist of both, the veteran checks as well as the dry run checks. It's a good practice for any developer who is trying to introduce new checks to start with a dry run. They can collect the metrics over n successful runs, and then when they're confident about the maturity of the new checks, they can then graduate it to veterans. For instance, in this example, we can see there are seven veteran checks and there are five dry run checks. While some of the dry run check failed, since all the veteran checks are successful, we don't impact the final state of the rollout is still green. Now let's see a hypothetical journey for a developer who is trying to introduce new checks. They are trying to add two new checks here. One is to measure the increase in any 408 errors from Envoy, and then second is to look at the increase in number of the connection timeouts coming from the Envoy. They still don't know the correct red lines. So in this case, they add these two new checks as the dry run checks and they collect this data over next end runs. If there are no false positives, they just simply go and graduate these checks to veterans and then they start impacting the final state of the rollout. But if there are false positives, the developer would continue to refine these metrics, define the correct red lines, and then until all the false positives get eliminated, they will still keep running it as dry runs. Okay, so I think that's about safe rollouts and dry runs. Next, we want to talk about workflows. We use Argo workflows for various use cases here at Databricks with different set of goals and challenges. And I want to share some of the interesting workflows that we have for model serving. So we'll explore some of these in detail today to get a comprehensive understanding. I want to start with capacity planning. So Arjun earlier talked about model backends and how model serving request based auto scaling works. This auto scaling requires setting up the compute that we run model serving models on and bootstrapping these machines with our observability stack, health checkers, networking demon sets, and this all is very time consuming. So in order to speed things up, we maintain a small warm pool. We have two main goals here. One is the availability, which means we want enough machines in the warm pool so that we can handle the incoming workload. And then second thing is efficiency. Compute costs a lot of dollars, so we don't want idle machines to be sitting in warm pool. Now we have an Argo workflow, which periodically scraped the usage metrics from our ingress on by proxy containers. We aggregate these metrics and then we send it to a machine learning model. We use the output from this proprietary machine learning model to decide the fleet capacity. And this happens in all the regions. So basically we have like 70 different regions across all three cloud providers. So this is happening in every region. And then finally we upscale and downscale the warm pool fleet size based on what machine learning model tells us. There are some clear wins here. It's really, really easy to set up the whole pipeline. As I mentioned before, there are 70 regions. If we make any change, we can just apply it everywhere. We don't have to manually go in each region and do the same thing. Also, we get the observability at every step, every workflow step. If any step fails, we just trigger alerts and then our on call goes and look into it. Just to see this in practice, let's take a look at the workflow. In the first step, we scraped the metrics from Envoy containers. I think it's a very simplified view. I'm hiding one thing. So Prometheus is the one which scraped the metrics because there are like 20 containers for Envoy running. And then Argo workflow simply gets the data from Prometheus. The next step is to aggregate this data over all the interesting dimensions that we want and then send it to the machine learning model. And then finally we use the output coming from the machine learning model to decide the one pool size. If we think that the pool needs to be resized and we need more capacity, we go request machines and then add it to our one pool. And if we want to downsize the pool, we just let go of additional capacity. There's some very interesting patterns that we saw. This whole thing is still in pilot. So we are continuously refining the model. But then we see like there is a huge capacity demand in the middle of the night and then in middle of the day, we let go of everything. Next use case I want to talk about is container builds. So when a user creates a model and query their machine learning model, behind the scenes, we package everything and deploy it as a service. So the entire build process is divided into three steps. This is done to aim for better separation between what Databricks own and what user own so that we can surface the errors. Like if it's a build error from a user installing a dependency which doesn't exist, we just want to tell users that there is some problem with the requirements file. Versus if there is a Databricks error, we are not trying to, we fail to create the Docker image or we fail to push the Docker image. Then we need that alert to go to our on call so that they can look into it. The two main goals here are, we want to build the model serving container, we want to execute it, and we want to update the UI that user is using to mark it as ready. Second important goal is, we want to deliver the build logs that I talked about back to the user. So if there is any problem with the model that they are trying to deploy, they can just go look at those logs. To achieve this, we again use Argo workflow. We try to retrieve various artifacts from different sources. It can be PyPy, S3 buckets, GitHub. We construct a Docker image from all these artifacts and we push this into our registry. In the third step, we deploy a Kubernetes service leveraging this Docker image that we pushed. We update the UI state based on the health check probes. So once the service comes up, we have some readiness checks and once those readiness checks passes, we update the UI state to be ready and then user can send traffic to the API. And in the event of failures, we have logs for both Databricks as well as for the user. If it's a Databricks error, then we just go and alert our own calls. The benefits are, again, the entire pipeline is very, very easy for us to set up. We can set up alerts to notify in case of any issues and then we can enhance observability at every step of this workflow. Just to see this in practice, as I mentioned, there are three steps. The first step is a pre-built step. In this step, we fetch the base image and then we install various dependencies. These dependencies come from like wheels, PyPy, S3 buckets. So this is the step in which if it fails, we ship the logs back to the customer or the user and that they are responsible for fixing it. The next step is build step in which we package everything up. We create a Docker image and in this step, if there is anything which goes wrong, then we alert our own calls. The final step is a post-build step. In this step, we finally use the Docker image that we pushed or built in the last step and use it to spin up machine learning models. This is the step where we also probe. So once these services are up and running, we go and update the state in the UI. So here's a screenshot illustrating the user-facing interface. I think it's a little bit hard to see but then the state of the endpoint is still creating and then in the highlighted section, there is an error which says that the requirement file that we got has a dependency which cannot be resolved or which cannot be installed. The third use case that we use our goal workflows for is metrics delivery. So one of the key features for model serving is the emission and delivery of metrics. So these metrics include things like QPS, latencies, CPU usage, so that people can tweak their models accordingly and customer today have their own dashboards, own alerting based on these metrics. The primary objective for us is to capture these metrics at a periodic interval and then deliver them back to the control plane because control plane is the one where our UI lives and then once we deliver it to the control plane, we can show these things per model per customer in the UI. To achieve this, we again have our workflow which periodically scrape the envoy containers. We aggregate the endpoint per customer metrics over all the interesting dimensions and then we store these metrics in a time series database which is located in our control plane. So just to see how it works, the model serving comprises of two main components. There is a data plane where the model serving workloads are actually running. Here is, we also have an ingress stack, authentication authorization, rate limiting, everything is running on the data plane and then we have a control plane which basically enable customer to manage their endpoint. So this is where the UI is and then how customers create new models. Based on the SLA, a new workflow run occurs every X minutes. In the first step, it just scrape metrics from Prometheus which aggregates metrics from all the envoy containers. Then we finally aggregate these metrics over all the dimensions that we want. In the third step, we send this data to a metrics collector service that we have in the control plane and then we persist it into a persistent storage. Our UI just hit this persistent storage and then show these metrics based on per endpoint and per customer. Here is a screenshot you can see for per endpoint metrics. At the top you can see we have metrics, we have events and logs which we also pipe using the same mechanism. There are some graphs about latency, QPS and then we show things like CPU usage and memory usage. So there are a ton of metrics that you can describe the alerts on. These were just a few examples. I think we use many, many more workflows. We have workflows for auto scaling, real-time config delivery for our services and so on. But I think in interest of time, I'd skip those today. So that concludes our prepared material for today. I think we do still have some time, so we'll take any questions if you may have. Thank you. No questions? I have one. I have a great presentation. I have a question on transitioning to Argo rollouts. Think about this. How did you actually get your developers to transition to it? Because there's a few topics in Argo rollouts because this is devops or platform engineering driven and the developers have to learn how the Argo rollouts work and how to write Prometheus queries to actually know what conditions will cause the rollouts to move back. Yeah, that's actually a great question. So today, we have a wrapper over COOP-CTL. We call it like COOP-CFG. We just get the regular deployment file and then we generate a rollout CRD on the fly. So we generate a rollout CRD on the fly and we deploy it and then for the metrics, we provide our developers with some out-of-the-box metrics like database errors, basic service errors and then we give them a framework so they can easily define the checks they need and that's why we have the dry run feature. Like if you want to do something advanced and you're not sure, you can just start with a dry run and then you can with time graduate it to veterans. But yeah, it's all maintained by the DevEx team. Okay, so it's kind of like a centralized and that's some sort of overhead you have to maintain for the sake of everybody. That is correct, yeah. So our DevEx team gives us a library and then every service would just use that library to get out of the box checks and they can add on top of that. Out of curiosity, how big is your DevEx team now? 10 people. All right, thank you. Yeah, I think we'll be at the back of the room if you have more questions. Thank you.


Hello everyone, myself Pranapsai Kya, welcomes you all to this MOOC course on school management and leadership. Friends, you all know school management and leadership are essential components of the school system. The quality of the school management and leadership largely determines the quality of the school. School management includes functions like planning, organizing, financing, directing, supervising and evaluation. And leadership is a practical skill encompassing the ability of an individual or organization to lead or guide other individuals, team or entire organizations. In a school system, the school head is the educational leader and administrator. So, the personality and professional competence of the school heads have a tremendous influence on the growth and development of the school. The physical, social and emotional environment of the school largely depends on the quality of the school heads. The quality of the leader will lead to the direction he or she wants it to go. Effective leadership of the school administrator is an important prerequisite without which even the best teacher, curriculum and teaching learning materials cannot ensure desired learning outcome. Therefore, to be efficient, appropriate professional training for acquiring leadership qualities and techniques is a must for every school administrator. This course, School Management and Leadership is a professional program that builds the capacity of the prospective and in-service school heads for various levels of schools. The course is designed to help the heads of academic institutions or prospective educational leaders to acquire the skills necessary to manage educational institutions by utilizing the available human resources in innovative ways and identifying their potential to yield the best results for an academic institution. Presently, a huge number of teachers are serving as school heads at different levels of schooling. However, no leadership training is prerequisite for serving as a school head. Any teacher who is senior on the basis of joining the school is appointed as the school head. But looking at the changing scenario of education and the huge responsibility of the school heads in the development of the school, it has become a challenging job now. Moreover, it has been realized that proper training in management and leadership will help in augmenting the developmental steps in the field of education. Keeping all these aspects in mind, this course is designed with some specific objectives. These are to develop an understanding of basic educational management concepts and their application in educational environment to provide opportunities to the prospective and in-service educational administrators of the schools to acquire training in educational management and leadership, to enable them to understand the strengths and the weaknesses of the institution, to enable them to utilize the resources to the optimum for the development of the institution, to build a positive attitude among them towards management and leadership, to empower educational administrators and school leaders to effectively render their roles and responsibilities. This course not only filled the vacuum of trained leadership in the school but also ensured effective leadership from the grassroots to the administrative levels of the school education. This course will ensure optimum utilization of human and material resources in schools. Now, let's see who are the learners for this course. Of course, in-service help teachers of all levels of schools working in government and private sectors, all school teachers, prospective educational leaders, NGO workers involved in school education and other organizations in the field of education, and anyone who are having an interest in school management and leadership and wish to contribute to the field of school education are eligible for this particular course. Now, you see the course design. This course has been designed on a weekly modular content basis with a four quadrant approach of its delivery. Total credit of the course is four and the course consists of 12 modules. The duration of the course is three months and the medium of instruction is in English. So the 12 modules, let me introduce you. Number one, an introduction to educational management, a brief introduction to school leadership, introduction to school management, a rule of communication in school leadership, diverse rule of school heads, school as a learning organization, management of human and material resources in schools, managing teaching, learning process, institutional planning, community engagement in schools, school governance and financial management, leading innovation in schools. These are the 12 modules consists this course. And every module has been designed with e-tutorials, e-text materials, module-wise quiz questions, time in examination and asynchronous and asynchronous introduction through discussion forum. Assessment will be conducted in two forms, continuous assessment through MCQ with 30% weightage of the e-tutorial course and time in examination conducted by national testing agency with 70% weightage. And regarding certification of the course, a minimum of 40% passing marks are needed in internal and external assessment for being eligible for the certificate. So friends, what are you waiting for? Please come and join us. Thank you.