Now we're moving on to the third topic of chemical kinetics which is all about experimental methods. So we've done a bit of theory on what rate constant is and how it reacts to concentration. We've done quite a lot of theory on the kinetics of gases especially, how does collision affect the rate. Now we're going to move on to how would we actually go about measuring some of this in a lab. You want to go out there and measure some stuff. So this is just going to be the basic breakdown of how we go about it. I'm not going to be discussing in this screencast in particular anything about specific details of the techniques just a broad introduction to it. So we're going to start with experimental considerations about what do we really need to worry about when we're trying to get this because we want to get a rate constant to be accurate as possible and not just you know make a guess here we want to make it accurate so that means we require figuring out a couple of the limitations of the techniques. Then we're going to do two methods one mixing question and the other in situ. So these are two different approaches that we can do to get rate constants. They are quite conceptually different one involves stopping a reaction the other involves just letting the reaction go hence the word in situ it means kind of in place in the situation. So our first set of considerations when we are measuring kinetics all of our theory at this macroscopic level remember that whole triangle thing macro micro and symbolic the math sea world interpretation all of the observations of rates happen in a lab at the macroscopic wrong and that makes the assumption that I think microscopic wrong collisions are happening and their collision frequency happens at a rate determined by concentration. Now that only works if the concentration is even if it's not even then our assumptions are starting to fall down so in this case on the right here that is two sets of products or two reactants well mixed together you can see they're quite evenly distributed there's not far for any of them to travel before they actually collide with each other there is a reaction going to be happening pretty much everywhere so not those two those are the same molecule so you can see everywhere so we shine some light through here and try and figure out what the absorption is it's pretty neat. Here however that's not the case at all you can see that we've just dropped some of this green stuff into the middle and the concentration is really high here so the kinetics of what is happening is going to be based around this concentration here you can imagine that might go really rapidly out here it's going to be going really slowly so if the concentration isn't even things fall down so you will probably discover this in labs when we tell you to add things drop wise and to stir it this is sort of a related reason we want to get things evenly mixed in order to get reliable results if the concentration has something of a gradient in it and it's more concentrated in one area not in another our assumptions fall down our kinetics will not be reliable any measurement we do will be completely unreliable unless we can be sure that it is thoroughly thoroughly mixed so next we want even temperature this is for the exact same reason if things are even throughout here if we take a sample from here or we sample it here we can see that it will be running at the same rate here however is what you might expect in a lab you might be sticking something on a hot plate or something that's all done some burners these days I was going to draw this with a flame underneath and then we realized we don't actually use them do we we use hot plates so you stick a hot plate under here and it warms up here first obviously that's really hot and this is quite cold so if you sample from here the rates going to be much slower remember higher temperature means things go a bit faster the whole Horeneus equation is a function of temperature things are going to be different so if we sample from here really quick here kind of medium up here slow even if we start shining light through here the concentrations are going to be changing much more rapidly because the temperature isn't there so what we need to do is make sure that the temperature is stable throughout and even the temperature should also be as stable as possible in time as well so if you know you you can expect some kind of error in measurement here you might think that this is maybe 15.8 degrees C well actually it's probably fluctuating between maybe 16 and 15.6 okay that is a point four degree difference here maybe that's acceptable for what you're doing as an experiment maybe it's a bit too much so you have to balance out how hard is it to get the temperature even versus how much accuracy you want and the final consideration is one that's often overlooked but it's still important you need a clear way of distinguishing between your reactant and your product so if you ever look at a diagram and we talk about this schematically you're likely to see something like this the reactants if we take a spectrum of it an infrared spectrum for instance the reactant will go down and the product will go up over time and increase and that's really clear and obvious there is a distinction here and we can see one peak growing and one disappear really easy uh more likely you're gonna see something like this and this is a bit awkward isn't it um not here with this peak it's going down but this peak is coming up and you might think we are we can't kind of get these tips and figure them out but what tends to happen is if you get overlapping peaks so here is the peak representing your product and here is the peak representing your reactant they will start combining together so one side might go up and one might go down and maybe at the extremes of your reaction you'll get a reliable signal but in the middle it's going to be a bit of a convoluted mess so this is likely to what you'll what you'll see so in order to really track a kinetic experiment accurately you need to be able to distinguish between your reactant and product really clearly um if you can't you're in agony city so let's just recap those considerations we want to make sure things are mixed thoroughly if they're not mixed thoroughly concentrations differ from one part to another you don't get an even reaction temperature that also needs to be consistent it needs to be consistent in space as in your entire sample and it also needs to be consistent in time you don't want it to be wobbling too much you want to keep it very stable and then detection we need to be able to detect a real difference between the products and the reactants otherwise we are not going to be able to track any kinetics at all and that's and the difference between the products will be and reactants that you need to look for will become clear as you go into these next few methods so now i'm going to talk about quenching uh now in the simplest uh um case quenching just means stopping the reaction or we quench the reaction or stop it both mean the same quenching of the posh sounding word the easiest way to do that the absolute easiest is simply dilute it so we take some of this we dump it into another much larger beaker of solvent and the reaction slows down because you know rate is proportional to a concentration so if we lower the concentration we're going to lower the rate so while this may take several minutes to react this might take several hours so we get our reaction vessel we take a little sample out of it and we go analyze that and we've got a couple of minutes grace to go um figure it out uh we can also quench by adding something to stop the reaction so if something is very reactive we can add something that will react even faster just to mop it all up and take it out we can also mop by cooling it down as well um so if we can chill it down to stop the reaction we can dilute it to stop the reaction or we can add something in there just to physically mop up anything that's reactive and as long as we can do that we can quench it and then what do we do we take samples at different times so here we have we'll just pick a bit of it and we dump it into here and in this set of diagrams I've just assumed that we're diluting it not doing anything fancy to it and what we can then do is just take these away with five minutes 12 minutes different kind of intervals uh and then do some analysis doesn't matter what that analysis is right now we just do the analysis and we find the concentration we might get a kinetic looking graph so you can see the reactants come down here the products go up and yes this graph is actually based on the uh drawn from these molecules the number of molecules of each and these minutes so that is actually the graph representing the schematic diagram at the top so even if the schematic diagram doesn't look particularly realistic uh this at least matches it so the benefits limitation this this is something that we really need to get our heads around so the benefits we have fewer restrictions on the analysis method so that means we can take it away and we can do chromatography on it we could take our sample and run it through gas chromatography we could titrate to figure out a concentration we could go do m r i r u v whatever things that we need we can even go and do mass analysis or something and it's also relatively easy you just set your reaction away you take your action you quench it you go do your analysis so you're very likely to come and find these in the teaching labs so if you do kinetics in a teaching environment you're likely to do quenching type method but it's limited uh there are a lot of drawbacks to doing this mixing and quenching type method uh for a start we can only do it for slow reactions if your reaction is done and dusted within a minute uh you're not going to be having a good time quenching it'll take you the best part of a minute to you know do the quenching reaction so if your reaction is going to last for about two or three hours you can do this just take a sample every 15 minutes and you got enough data points uh you also must use relatively large volumes so if you're taking a couple of millilitres out for analysis every time you obviously need a couple of hundreds to have a good reaction going uh and your rapid quenching can actually be quite difficult so imagine you're doing the cooling method where you want to get it from 50 degrees to you know maybe on an ice bath how long is it going to take to quench a small sample down by 50 degrees probably a minute or so so what that does if this is your time and this is your concentration you've measured and that's your data point this quenching actually starts introducing an error in this kind of direction in the time convention so it takes you up to about a minute to quench uh you you don't have a data point that's exactly at one second you've got a one second plus or minus maybe 30 seconds at the side of it and so that when we come to kind of error analysis uh that's quite important uh so it introduces a new kind of errors that way how can we get over that oh well sorry let's just review so what we need to do is mix the reagents uh we quench by dilution lowering the temperature or adding something to mop it up and detection we can use multiple methods that's a quick review of the quenching how do we get over to limitations we do in situ measurements this means everything's still in their action vessel and then we just generate our graphs and kinetics we're not extracting individual samples here we are just looking at it so we go straight from one thing to another no sampling involved so we get over a lot of those limitations but we do introduce some new ones so how do we go about measuring it uh one thing we're going to be looking at is conductivity so if a reagent moves from uh let's just say it's a and b and then it moves to a it's a positive charge and b has a negative charge conductivity is going to change we can measure concentrations indirectly that way uh obviously spectroscopy is going to be a big one now in practice and this is probably the single biggest one that will be used for kinetics so we want to shine some light through and we see uh the intensity's gone down so remember via Lambert law we can get a concentration out of the absorbance so that's it sorry the absorbance concentration uh path length is that uh so we can figure out a concentration from spectroscopy uh and we can also do pressure so remember the ideal gas equation pressure times volume equals to the moles uh times gas constant times temperature so remember pressure doesn't really have that much to do with mass it is about the number of entities there so when we looked at that microscopically that was an individual molecule imparting some momentum um onto the side of a vessel and that's how we were detecting pressure at a microscopic level it's all to do with the number of moles so if we have in this case we have 2n2 or 5 going to 4n0 2 plus 2 we can see we go from 2 moles of gas to 5 so our pressure is going to almost double over the course of this reaction so we could track down pressure as a proxy to concentration also remember when we're doing rates on gases um you know we're looking at partial pressures not necessarily that kind of concentration so pressure is very much a direct analogy to concentration so we can get kinetic measurements off pressure so let's just kind of review this uh the method for an in-situ we introduce fewer errors we've got less time error going back and forward um so all of our measurements are effectively instantaneous it only takes a couple of seconds to run a UV spectrum or to get an IR spectrum but you do need equipment so it is a little bit of a limitation one of the reasons that you'll do a quenching method in teaching labs is simply sitting down for a couple of hours with the same spectrometer there's not enough equipment to go around the sense of undergraduates it's um even in research environment you're likely not to be able to book an instrument for that long to do a really long-term kinetics experiment you are very very unlikely to do say get a hold of an NMR spectrometer and hold it at lower temperature for 12 hours whilst you run a kinetic experiment on it um so you're likely to do quenching and monitoring instead so the methods for in-situ we use spectroscopy uh conductivity or pressure and these are the three things that we're going to cover predominantly in the next couple of lectures so how do we get spectroscopy spectroscopic measurements how do we do conductivity measurements how do we figure out pressure uh so put these slides in backwards but never mind uh the benefits and the limitations of um the in-situ methods i've kind of discussed already so let's review what we've done we are interested in the experimental considerations what do we need to think about when it comes to taking kinetic measurements we want to minimize the errors principally um so that means even temperatures even time time precise times that we want and then we want the reagents to be mixed properly uh if we start having temperature gradients or concentration gradients or we're quenching slowly for instance well we'll we'll introduce new errors that we don't want uh quenching we that this means stopping the reaction quenching just means yeah stopping the reaction we can lower the temperature we can dilute it or we can add something that physically stops the reaction by mopping up the reagents and then we measure it our main problem there is how efficient is that quenching does it take a couple of minutes or can it be stopped on a dime and then we can overcome a lot of those by saying we can do in situ measurements by spectroscopic means conductivity measurements of pressure a few others might be out there but these are the ones we're going to be interested in uh so that's it for this introductory lecture this is the first bit of the experimental considerations we're going to do we're going to do these three especially have a lot more details soon um so until then goodbye


Hello and welcome to the session. In this session we will discuss the following question and the question says, classify the following sets as finite and infinite sets. The first part is set A which is equal to the set containing the elements 0, 2, 4, 6, 8 and so on till 20. The second part is set B is equal to X such that X is a square, third part is the set M of multiples of 5 and the fourth part is set B which is equal to X such that 5 is less than X is less than or equal to 20. Now before we move on to the solution, let us first review the meanings of finite and infinite sets. Now finite sets are the sets whose elements can be counted. The set which has finite number of elements and infinite sets are sets whose elements cannot be counted that is the set which is not finite. So this is our key idea for this question and we will solve the question using this key idea. Let us move on to the solution now. The first part is set A which is equal to set containing 0, 2, 4, 6, 8 and so on till 20. Now in this case we can see that the numbers can be counted. The set A is a finite set. Now the second part is P is equal to X such that X is a square. There can be infinite number of squares like the squares of side 2 cm, 3 cm, 4 cm and so on till infinity. So we can say that the set P is an infinite set. Third part is the set M of multiples of 5. Now if we list down the elements of M, then set M is 5, 10, 15 and so on. The set of natural numbers is infinite. So the given set M is also an infinite set. The fourth part is set B is equal to X such that 5 is less than X is less than and equal to 20. Now we write down the elements of B which are 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 and 20. So we can see that we can count the number of elements of B. So B is a finite set. With this we end our session. Hope you enjoyed the session.


Sssssssssssssssssssssssssssssisssssssssssssssssssssssssssssss Restrunk. One thing I'd like to get a little more into is franchises that were featured on the Super Nintendo but continued onto other platforms. I've already looked into this a little bit with certain RPGs like the Breath of Fire series, which of course continued onto PlayStation with Breath of Fire III and Onward. I've looked at Mario Kart's continuation on Game Boy Advance with Mario Kart Super Circuit. at stuff that continued in arcades like the Battletoads arcade game. Of course, tons of Nintendo franchises continued from the Super Nintendo onto the Nintendo 64, so let's take a look at one of them in F-Zero X. You probably already know that the original F-Zero was a launch title that was released the same time the SNES came out in North America, and it wasn't just any launch title, it remains one of the very best launch titles ever made. It did an incredible job showing off what the Super Nintendo was capable of, where you could race at exhilarating speeds in a futuristic environment with four different cars to choose from, each with their own strengths and weaknesses, add on to all that a killer soundtrack and some surprisingly nuanced track design and difficulty balancing, and you have one of the very best Super Nintendo games ever made. Fast forward to 1998 and we get F-Zero X on the N64 and, impressively, the game does a nice job maintaining the same vibe the first game had. Of course, the controls, layout, and structure aren't the exact same, but they definitely feel familiar. The way the races are set up, have you race against 29 other cars at once, with you starting in 30th place and working your way toward the front, kinda like Top Gear, but in that game, you've only got four cars to choose from. In F-Zero X, you've got a whopping 30 choices, which is pretty dang cool, and gives this game a ton of replay value. There's also five different gameplay modes here, the traditional Grand Pre-Race where you have four different circuits to choose from, a versus battle, a time trial mode, a practice mode, and Death Race where you don't just beat the 29 other racers, you have to put them out of commission any way you can, and that's pretty dang cool. Now, I know what some of you may be thinking, why should I bother with F-Zero X when the series continued onto bigger and better things on the GameCube with F-Zero GX? Well, because F-Zero X has two major things going for it. Number one is that this is the only N64 game to run at 60 frames per second. Not only does that make this one of the very best looking N64 games, not that that means a whole lot, but it really adds to the sense of speed here. Even more impressively is that the omnipresent gray fog that seemingly in every N64 game is at a minimum here. This game is really well made. The other major thing F-Zero X has going for it occurs when you complete the first three Grand Prix circuits. The game unlocks what's called the X-Cup and it randomly generates a brand new track every time you race. Man, how cool is that? So yeah, not only do you have 30 different cars you can experiment with, you have a track randomizer as well. So even if you put a gazillion hours into this game and memorize every twist and turn of every track, you've still got a track randomizer to keep you on your toes. It's like F-Zero meets Excitebike. It's really freaking cool. It needs to be pointed out here as well that the music is fantastic, a blend of revamped and remade songs from the original F-Zero with some new music thrown in as well. So yeah, when it comes to games like F-Zero X for N64, it's always easy to just skip over the middle children of a series so to speak because it wasn't first and it's not the most recent. And besides, not all series continuations lead to good things. I mean, just look at Breath of Fire 5 or Mega Man X7. F-Zero X just has so much going for it though, with the best thing being the track randomizer. Yeah, you gotta put in some work to unlock it, but once you do, it is awesome. It's the perfect way to keep games like this from getting boring. What really impresses me though is that the game keeps the look, sound and feel of the original F-Zero consistent. It really does feel like a natural evolution of the series. So to answer the question, does F-Zero GX on Gamecube render this game obsolete? I certainly don't think so. F-Zero X doesn't render the original F-Zero obsolete either. Each game is comfortably its own thing and they're all well worth checking out. Alright, I want to thank you for watching and I hope you have a great rest of your day.


statistics and excel histograms and scatter plots with population data get ready taking a deep breath holding it in for 10 seconds and looking forward to a smooth soothing excel first a word from our sponsor yeah actually we're sponsoring ourselves on this one because apparently the merchandisers they don't want to be seen with us but but that's okay whatever because our merchandise is is better than their stupid stuff anyways like our trust me I'm an accountant product line yeah it's paramount that you let people know that you're an accountant because apparently we're among the only ones equipped with the number crunching skills to answer society's current deep complex and nuanced questions if you would like a commercial free experience consider subscribing to our website at accountinginstruction.com or accountinginstruction.thinkific.com here we are in excel if you don't have this workbook that's okay because we'll basically build this from a blank worksheet so you can start with that however if you do have access to this workbook there's three tabs down below example practice blank example in essence answer key practice tab having pre-formatted cells within it so you could focus in on the core concepts of the practice problem blank tab only having the data in it so that we can practice formatting the cells within excel as we work through the practice problem let's go to the example tab to get an idea of what we will be doing we're going to sort our data into a table format we're then going to be creating multiple histograms from the data in our table which is related to population and then we'll be combining some of that information to get our scatter plots so let's go on over to the blank tab on the right if you don't have this data you can look up similar data related to population or i believe we've retrieved this from kaggle that's kaggle.com so you can look for the data set there and pull it in and then we can work with this information so i'm going to delete that and now i'm going to do the first thing i do every time with our data set i'm going to first format the underlying formatting that i would like on the excel sheet so i'm going to select the entire sheet with the triangle right click on the selected area and format the entire sheet i like to go to currency negative numbers bracketed and red remove the dollar sign and if i scan the data you'll notice there's no decimals in it so i can say let's go ahead and remove the decimals and so there's my baseline formatting i'm going to make it bold home tab font group and bold and there we have that i'm going to hold control scroll in a bit so now i'm currently at 190 percent on the scroll in i'm then going to work with my headers so i'm going to select the header in a one drag over to j one notice that nothing is in column k it's just that this one's hanging over into column k so what i'm going to do is go up top and go to the home tab we can go to the alignment we might want to center these and we might want to wrap them so that we can see them so there we have that now i'm going to insert a table around the entire data set now note that you have blank data over here so sometimes that can kind of throw off where the table will be put in place but i believe if we just select any cell the table will properly but be put in place so let's go to a insert tab table group and insert the table dancing ants around a one to j 79 i believe that says which looks right so we're going to say let's go ahead and insert that so once done sometimes you might want to to take your tabs up top i'm going to select all of them and make them a little bit smaller right so because what it did is it widened out the titles so that you could see the whole title without wrapping it but we entered the wrapping so i'm going to select the entire thing and and then i'm going to put my cursor in between any of these cells and make it smaller and that will make all of them the same size now you may not need all of them the same length of smallness so you could adjust them as you so choose so this one for example we might make that a little bit smaller even still and so there we have our data so our data uh we have the the name we have the population we've got the age less than 18 age 18 to 34 35 uh to 65 65 plus number of households families and number of households uh with 100k plus all right so based on this data let's first just make our histograms with this data i can take any piece of this data we could sort the data it's currently sorted by the way a to z by uh location and we could sort it by population so i can sort it by population and of course i can see uh get an idea of the data by population i could sort it you know by by age less than 18 and so on and so forth and then we can go through here and we can make a histogram from each of these individual data sets if we so choose so we can do that i'm going to select for example this data set the total population and i can do that by selecting the dropdown up top if i want to include like the title sometimes i like to just go to the control shift method and then the down arrow and that takes me all the way down i want to be back up top to the data so i'm going to cool down control backspace to get back up to the top and then i'm going to go to the insert tab and we're going to go to the charts and let's make a histogram histogram pull pull that on over to the right i'm just going to copy the title here and i'm going to put that control c and i'm going to put that in the title now i'm going to do these fairly fast so because we've seen these techniques before we're just doing it all in one kind of data set now so we're pulling different items from this one data set so you can see this is basically skewed to the right and you can adjust the buckets and so on let's take the second data set and i'm going to put my cursor up top hold down control shift down so there we have it now i'm going to hold down control and select the backspace getting back up to the top and then i might want a better position i'm going to be like right here so that when i insert the histogram it's going to put it pretty close to where i want it to be so i'm going to go to the insert tab charts histogram add another histogram so there it is so and then i can copy the title and i'm going to put that in the title of the histogram so title of the histogram all right let's do a few more of these i'm going to go then to age what is that doing there get out of there we're going to go next from age 18 to 34 so i'm going to select e1 holding down control shift down arrow to the bottom of the data set and then i'm holding down control backspace back up to the top of the data set then i'm going to scroll down just a little bit to be where i want to be which is right here somewhere around k30 insert tab and histogram drop down enter there we have that one i'm going to scroll back up double click in e1 copy the name control c put that down here in the title okay i'm going to do the rest of them here i'm going to put my cursor in age 65 plus control shift down arrow and then control backspace scrolling back down to where i want to place it insert tab charts group histogram drop down histogram histogram and then i'm going to double click in g1 select the data control c or right click and copy and put that in our title so there we have the title all right next one that was 65 let's take the total households control shift down selecting all the data control backspace scrolling down to where we want to place it insert and then charts and histogram entering the histogram pulling it in place scrolling back up double clicking on the name selecting it control c or right click and copy so that i can then put it right in our title field all right let's do the next one families control shift down control backspace scrolling down to where i want to place it which is all the way at the bottom i could have stayed down there this time and then insert charts histogram there we have that one i'm going to go back up top double click on the families copy and put that in the title and let's do one more histogram and i'm going to put my cursor in this one now if i hit control shift down arrow it doesn't go to the bottom because of those blank cells so i have to continue selecting control shift down till i get to the bottom you don't typically want to have blank cells in your data set if you can avoid it because that causes some problems now this time i'm just going to scroll down and hit insert and charts and histogram so let's put our histogram down here double click on the data set up top and copy that and then put that right here so we'll paste that in all right so and then we might want to make some relationships between this data so let's say we're going to take the total population and see you know if there's a relationship between total population and age less than 18 so let's say total population is dependent x or horizontal variable and then less than 18 is going to be the dependent in a scatter plot so now i'll select uh this one i'm going to hit control shift down so there's that data holding control backspace now i'm holding control to select the one next to it and then control shift and down again so that i have the second set of data holding control backspace you could do that by just highlighting and scrolling down the most intuitive way would be to do it that way but this way if you get used to using the keyboard uh it could be a little faster now i'm gonna i'm gonna take the bar here go to the right so that i'm kind of close to where i want this to actually be placed and then go to the insert tab and go to the uh scatter or the charts and i want a classic scatter so there we have it so we've got the scatter so if i pull this to the right there it is okay so i'm gonna delete the title because what i really want is to show the x and y axes now in this in this case the the x the one on the left will typically be the one that was on the left the column on the left will be the dependent or x as we saw in prior presentations with the scatter and the dependent will typically be on uh the vertical or the y so if i add my axes axes and i want to look at the titles i'm going to select the bottom or x axis and hit equals so you could see that in the bar up top equals and then i'm going to pick the population uh the population right this is the population and enter so now we've got the total population at the bottom i'm going to select this axis and say equals which you could see up top in the formula bar and we want 18 or less so there we have it and so now we can see like as the population goes up the the number of people 18 or less has a trend line up which you would kind of expect because you would expect a larger population to possibly have more more people within any particular age range and so you can look at different trends such such as that right you can look at a trend and say well what if you had people that are that are in the range to have kids that maybe that would be a stronger correlation between uh an increase uh in in them and and the and the number of of kids right so you can graph these relationships if i was going to add a trend line let's add a trend line and i want to then more options on the trend line if i want to add a formula there's the formula for the trend line if i go to the box on the left we can then say maybe i want the trend line to be simply a line maybe i want it to be uh a different color like red and then maybe i want to glow around it so i'm going to say let's make it glow and we'll make it glow uh with the orange closing that out let's do another one let's say that we were looking at the population versus uh versus the people that are making over uh versus over what was that last one here this one number households uh uh 100k plus and now this one's missing some data down below but i think we could still plot with it so let's say that we're going to take the population so we'll compare uh the population put in my cursor here control shift down so that's the whole thing and then control backspace back to the top and then i'm holding down control to select this one a non-adjacent uh column and then control shift down to get to the bottom it's not at the bottom because there's these blank cells so i'm going to have to say control shift down again control shift down again and now it's at the bottom then i'm going to say control backspace to get back to the top i would like to get my cursor somewhere where i want the data so i'm going to put it over here and then let's say insert chart and enter our scatter so there's our scatter and so now i'll delete this and let's see so you can see here we don't have as big a correlation we could still we could still uh let's plot let's put our axes on here we're going to say that we want uh the axis title and down here i'm going to say this equals scrolling to the right so we had the total population and then this axis put in my cursor here equals and then we had the number uh 100 k plus so there we have it if we put a regression line in here i'm going to say add trend line so there's our trend line i can add more options to the trend line let's make the equation so we can say show me the equation let's make the trend line uh orange this time let's make it so it's a solid line let's go to the colors and say the glow we want now we can have a bigger glow around it so we can have a wider glow than we had up top and you could see although they could you could put a trend line around it you don't you don't have a not you know the trend obviously isn't as packed together as a trend like this so it might not be as meaningful of a trend line let's do another one uh let's say that we had then let's pull up another one now i'm doing these fairly quick because we've seen these charts before we're just going to practice putting them together now let's say we had the total population and we're going to compare that to we're going to compare the total population to let's say families over here so again you would think as the populations go up you'd probably have more families you would think let's check that one out see how close that trend line is so we're going to say population i'm going to say control shift down so that takes the whole thing i'm going to say control backspace now i'm holding control down so i can select families which is a non adjacent cell not next to each other control shift down taking us to the bottom take us all the way to the bottom i'm holding control backspace to get back to the top i know these are a lot of keystrokes but notice you don't have to use the keystrokes you could use just click and drag holding down control to get over here however the keystrokes will be faster so i'm going to try to emphasize those as we go i'm going to try to then be kind of where i want to be with the graph so that when i insert it insert tab charts scatter plot the graph we're basically located in general where we want to be i'm going to remove the title we're going to add the axes so axes and then on the x the independent we've got the population and then on the y selecting the y equals we've got then the families and so you can see this trend line you know is a lot closer together here population goes up you've got families go up that kind of makes sense so we're going to say let's say we hit the plus button make a trend line through that we can add some details on the trend line let's say that we want the formula again and we want let's just make the trend line red this time we'll make it a red line so there's a standard line it doesn't want to make it red there it goes all right and then let's now now notice that this is generally over here the independent versus the dependent but sometimes there's a question as to which which is the independent which is going to be the dependent kind of variable you can use the same graph to read it the other way you could say well yeah as families go up the population goes up but let's just make let's see if we can flip these and put the families over here in the population over here just to practice that graphing technique so we're going to say all right let's take I can take these two again but what I really want these are this one's on the left so it's going to automatically plot it as though it's going to be on the x-axis and we'll have to then reverse it so same starting point control shift down there's that one control backspace putting my cursor holding control down and on I1 control shift down and then I'm at the bottom control backspace and then I'm going to scroll to the right before I insert put myself where I want the chart to be and then insert charts scatter there's our scatter but this time it looks similar but this time we want to swap the x and y's so I'm going to go into the to the chart design I just go to the data and then I'm going to add edit the data so here's the x here's the y they're backwards so I'm going to go into the x I'm going to delete what's in there I'll select this one and then we're going to say in the x I want the family so I'm going to put my cursor well I could just select the data on families control shift down so there is that one control backspace back up and then I'm going to say all right that looks good and then in this one on the y I'm going to delete what's in there and then I'm going to go into the population I'll just go into the data here control shift down and so that looks good and then control backspace back up to the top and let's say okay and then okay so we've switched the x and the y so now I go down here and it looks like they have been switched because the 35 was on the x 35s on the y now so we've switched those so it looks like a similar trend line but now we've switched you know the x's and the y's so if I hit the plus button and I look at my axis titles now on the x axis we have scrolling up trying to move over to the right we've got the families and then on the y equals we've got the population and I can add then my trend line we can say let's plus button trend line adding more detail to the trend line more options and we can say show me that formula bucket let's make it let's make it green this time let's make it like a yellow line and then we'll make it so then we'll go to the glow and on the glow we'll make like a medium size orange glow something like that just to be different so I know I did those fairly quickly but that's just we've seen all these charts before so these are a way that we can take a full data set and you can kind of make a button obviously you can make basically an endless amount of graphs from a set of data such as this as we look at the relationships between multiple sets of data we could put graphs on top of each other we can make bar graphs and put them on top of each other we can plot multiple items on the same graph and so on and so forth


Welcome to NPTEL NOC course on point set ball V part 2, module 13, we shall continue our study of para-compactness. For subspaces of Rn, there is a result which says that every open cover has a subordinate partition of unity consisting of smooth function. The word smooth will not have any meaning when you are studying arbitrary topological spaces and para-compactness of that or partition of unity of that. Inside Rn such a thing is possible and what is the additional thing that we have to do that namely on every disk you can have what is called as a bump function. For more you can see this reference here. The second thing is the local compactness in a very special way for Rn namely the closed disk themselves are compact. So if you carefully study the proof that we have given earlier then we can get a similar result for any metric space with the help of decomposition of any open set into a countable union of increasing disk-like open set. What I mean to say that is the compactness is not all that necessary here the local compactness. So something else will come to help namely the metric property and that is what we are going to do for more general results you may consult again Kelly's book. So I will do the bare minimum here to expose you to the ideas behind this course is not something you can say concise or comprehensive and so on. Every pseudo metric space is para-compact. So this is a big theorem now. So slowly we have to have some patience slowly we will develop it and the development itself is quite educative. So first of all let us have some notation here for every subset of this pseudo metric space for each integer n let us have a notation a n. a is a subset and n is an integer. a n is set of all x inside x such that distance of x from a complement is bigger than 1 by 2 over n. a may be any set you take the complement and from there a distance must be at least 1 by 2 automatically these are subsets of a subsets of a. So one thing very easy to see is that using triangle inequality distance between a n and a n plus 1 complement will be bigger than equal to 1 by 2 over n minus 1 by 2 over n plus 1 which is 1 by 2 over n plus 1. So I again leave this elementary thing as an exercise clue. Note that for each a and each n what we have is this one this is also easy a n is contained in a n bar that is obvious always but a n bar is contained inside a n plus 1 and again a n plus 1 is contained inside a n. So already we have this is what we want it right only thing is these a i's are not compact or anything but we have this increasing even increasing the phenomenon a n contained in a n bar contained a n plus 1 contained inside a and each a n is open. So that is because this condition bigger than 1 by 2 over n. So closure will be what bigger than equal to that is all. So that is the reason why you have these are open subsets and a n contains a n bar etc. Moreover if a itself is open then only a will be the union of a n. In what we have proved earlier was when you have locally compact Lindelof space every open subset can be written like this with each a n bar compact and so on that is not that is not what we have here but something which we have saved here namely with the use of matrix space we were able to write every open subset union of countable union union of a n with this property a n contained a n bar contained a n plus 1. So that is what I meant by you know writing every open set as a union of dislike open sets since a n minus 1 that is a n and the whole thing is that a slowly you will approach this a n. Okay they are nested very strongly in the sense that the the previous thing is contained in a n plus 1 that is just nested but the closure itself is contained in a n plus 1 okay. So these are just notations now you have to remember this one for the rest of the proof let now you be an open cover for x. We want to extract a locally finite open refinement that is our purpose finally choose a well order on you. So again here you have used axiom of choice every set can be well order okay for each n belonging to n and for each u inside u let us set up another set of notation now u n be the be defined as in one u n that is no there is no change okay u n is just instead of a here put u okay u n is except all x belong right such that distance between x and u complement is bigger than 1 by 2 power n but more definition I am going to give you namely u n star is a subset of u n wherein I have thrown away this is the sectaric complement sectaric minus interior of all the v n plus 1s where v occur before you u is some element in this curly u it is well ordered okay so it is an ordering you take all the initial elements to u and take all their u v n plus 1 power only not the full v then take the union of all of them okay n is fixed here v is varying v is varying only this part initial segment okay take the interior of all this union and throw it away okay u n star is that so here is a picture of u and u 1 and v 1 okay u is the given one v occurring this v occurring before you okay so if you look at v 1 star there is nothing suppose v 1 was v was the first one and u was the second one there is no throwing because there is there is nothing below the before that so v 1 star will be a full thing here but u 1 star what will happen I will have to throw away v 2 right v is there so v 2 has to be thrown away here okay so that is u 1 star only this part okay because of u n and v n definition if you take any element of u element of v 2 here the distance will be at least one fourth in particular distance between any element here and any element here will be at least one fourth okay so this is the picture that is showing so why we are making this kind of you know adding or subtracting some portions of earlier elements only that is what we are doing here okay u n star is this one so only u 1 v 1 picture I have shown so you have to do if you selecting one element you here you have to do this for all v okay so for all v before you which occur before you in this well order well order would be any order no matter just one well order you have to fix once for all okay then u n star is a closed subset of u n okay contained inside u so why is a closed subset what I have deleted some open subset that is interior of something whatever it is if you delete an open subset it is a closed subset of whatever wherever you have deleted closed subset of u n okay so that is what it is and it is a subset u n is contained inside u if u and v are not equal they are different distinct elements of u then u n star is inside x minus v n plus 1 or v n star is in x minus v n plus 1 depending on whether v is first or u is first okay v is before you or you is before me all right because if v is before you v n plus 1 will get subtracted from u n other or otherwise the u n plus 1 will subtract from this is all okay so that is the definition therefore in either case what happens is from this general remark here distance between a n and a n plus 1 complement is bigger than 1 by 2 power n plus 1 which I showed you in this picture what happens is distance between u n star and v n star is always bigger than equal to 1 by 2 power n plus 1 so in this picture it was n equal to 1 so it is one fourth okay so you don't have to do any pictures at all if you follow the logic one by step each step is a very small picture in your mind okay after that you have to just use whatever you have proved before all right so if you use property 2 this should be obvious the next thing is each x belongs to u n for some n and some u right first of all it belongs to some u because u is a cover but once it belongs to some u from the complement of u its distance will be positive so there will be some 1 by n for which it is be smaller than that bigger than that so that is all you have to show then it will be inside u n okay so first you chose u first okay u such that x is inside u and then since u is open and we have union of u n is equal to u okay so one of x must be inside one of the u n's okay we put now u n hat is see you can get board so first you have u n star here now u n hat is set of all x such that distance between x and u n star less than 1 by 2 power n plus 3 okay and u n griddle is all those x such distance x and u n star is 1 by 2 power 1 more 2 power n plus 4 okay so both of them are here this is less than this is less than or equal to that you have to pay attention each u n is open once again and u n griddle is closed because there is equality here and because it is 2 power n plus 4 u n griddle will be contained inside u n hat once again the same property 2 will tell you the distance between u n hat and v n hat is bigger than or equal to 1 divided by 2 power n plus 2 okay for every u for every v inside u so this time you can directly use the fifth property here that distance with u n star u n star is 1 divided by 2 n plus 1 okay so u n hat v n hat similarly you can talk about u n griddle this u n griddle really will not be needed in the final proof but it will play some auxiliary role so I have kept it okay so distance between u n griddle and v n griddle is 1 by 2 power sorry u n hat or u n hat 1 by 2 power n plus 2 and they are open subsets no matter whether u occurs first or v occurs first next for each n inside a natural number put v n equal to this collection u n hat where u range is over all of you okay so each member is a open subset so this is an open family of open sets all right take v to be union of v n's so we have written v as a countable union of these families what is the property of these v n's and v v is an open cover for x not v n's but when you take all of them v that is an open cover for x and v is a refinement of u okay so how to check x this 10th one this can be checked as follows as in the case of 6 what we what we have done here that each x belongs to some u n okay so each x will belong to some u n star also is what you have to say okay in as in 6 choose first u so that x is inside u then x will be inside some u n first okay but then it is also union star because it does not belong to any v all those v's which we have subtracted it will not be inside v so that will be in u n star all right but why it is in u n hat since u n star is contained inside u n hat we are done okay indeed it's also prove that x itself is in u n twiddle also because u n stars are contained in the u n twiddle also okay so remember these are less than less than so u n hat and u n twiddle actually fatten the u n star right all those which are of distance smaller than that one so you have to understand this inequality he has in the beginning we are bigger than bigger than right so both of them are used left and right you are cutting down things all right so we are we know that this u n's and u n twiddle u n twiddles are close v itself is an open cover okay so that much we have done okay and it's a refinement of you because all these elements are for each u n is subset of u corresponding u right so they are inside all right now look at u n star is contained in the u n the u n hat which is actually all those x belong to it so the distance between x and u n is 1 by 2 power n plus 3 I am just recalling this definition is contained inside u n plus 2 okay and that is contained inside see u n was contained in u n plus 1 but u n hat is not contained in u n plus 1 but it contained in u n plus 2 okay so that is contained inside you okay so all these all these u n hats are also it is also an open cover for it is also refinement of you okay so finally I will have one more notation here let u n check equal to u n hat minus union of all v k twiddles v belonging to you and k is less than n so this is where the twiddles were used okay this is only case where we have to do what we are doing now u n check case I don't want even u n hat I am I am checking away some portion of that namely these are close subsets now take the union of all these v k hats where v is inside you but integer k is smaller than n now okay all we are taking inside you but k must be less than n so you throw away that part note that this v k twiddle where k is less than n there is a bound for under k v k twiddle but v is servicing the entire of you this is a locally finite family of closed sets okay therefore it follows that each u n check is open when you have locally if I remember this thing about locally finiteness locally finite family of closed sets when you take arbitrary union it is still a closed set okay so this whole thing is closed set the complement will be an open subset now u n hats are open subset this u n twiddles were not they were closed subset so u n check these are open subset okay I have question why this family is locally fine because you have taken only finite limiting of them okay so what is v k if you take any two of them different from same v the same k they are actually disjoint so that is what this property may have to use u n hat v n hat don't worry about u and v I mean what they are they are two different elements of u v of capital u or curly u okay their distance between them is bigger than 1 by 2 power n plus and 2 power n plus 2 okay sir I have one more question here so starting with the open cover first we made u n stars the collection of which is also a cover for x but that was not open that's why you consider right right so they are not they are closed subset yeah yeah and so this u n hat collection was open refinement but that may not be locally finite so that's why you are coming to u n check right yes that this precise is subtracting these things you know v k hats that will make it in u n check locally finite we will see that okay yeah so first of all u n check is open now you see we we didn't even stop it to u n hats also okay so first of all these are open itself you you have to look for that these these things are locally finite that is fine we can't but they are closed things right so now these are opens are set first thing so what we want to do is that this is now take w to be the collection of all subsets of the form u n hat u raise over u n raise over n okay that is like all u n's first n fix it and then taking the union over n you can say double that that is a cover of x it's an open refinement this is locally finite itself all right there is no sigma locally finiteness here this w is actually locally finite so we have to prove this 13 14 and 15 all right so say how do you prove 13 13 is that x that w covers the whole thing okay given any x again let n be the first inches as x belongs to u n twiddle for some u okay once it's in some u there will be some n for which it belongs to okay so let's take x belong to some the first u n twiddle for some u it follows that it is not occurring here at all right it's always before that I have k less than n I have taken but n is the first one to which it belongs to it will not be inside some other uk k less than n so this part it is not there so it must be inside u n check once it is here it will be inside u n check so that is the trick here so these things cover okay 14th is what it's an open refinement we have we have told this open and these are refinement they are all subsets of you that is clear 15 is why it's locally finite okay to see the 15th one notice that u n twiddle chosen as above is a neighborhood of x and does not intersect any v m check for m bigger than n because these n twiddle u n twiddles would have been subtracted from v m right so it does not intersect v m twiddle at all therefore if we choose 0 less than r less than 1 divided by 2 power n plus 3 okay then this ball v r x which will be contained inside u n twiddle okay I sorry what I want to say r must be less than this it may be even further smaller so that v r x is contained u n twiddle because u n twiddles are open subsets neighborhoods okay they are open subsets also then v r x will intersect at most one member of v m okay because m less than equal to n n less than equal to m both of them it cannot be as soon as m m it will not intersect anything smaller or bigger one six one of them it will intersect okay so that is why this one by two power n plus three I have to show once there is an r such that v r of x is in u n twiddle you can make it smaller than any further also you can take it smaller than one by two power n plus three also okay so such a choice is possible then it happens that it will intersect only one of them okay so this completes the proof of a theorem there is a remark here which which is a bit takes you a little deeper so I don't mind even if you don't understand in the first reading okay so but I will make this remark a family a of subsets of topological space is called sigma discrete family if each x belong to x has a neighborhood which makes at most one member of a so one of you ask this question that is why this remark will be even more relevant here now so why is it my lovely what happens is see this condition right in the beginning distance between these two is bigger than my two power n plus one so this u n star and v star same n but you and we are different elements of the same cover what happens to these sets they are disjoint right not only that this is stronger than being disjoint namely I can take small open subsets around them right for all of them around all of them simultaneously so that all these neighborhoods are disjoint so because of this metric property we are able to do that one such a thing is you can make that as an axiom in the general case okay then it be it's called sigma discrete or that's what I am trying to say here family is discrete family if each point x belongs to x has a neighborhood which means at most one member of a okay you see if the distance between as something positive each point x I can take the ball of radius half of that distance whatever positive I have say half the half that radius then what I get is that that open ball cannot intersect both of them that's all okay so that is what we have achieved here okay it is called sigma discrete if it is a union of countable union of a n's where each a n is discrete okay so that's why that n has come when you fix n it is a discrete family you take the union it becomes a cover and so on okay only countable union you need to take such a thing is called sigma discrete this family a itself is not discrete okay that's one thing you have to understand is sigma discrete properties is 8 to 9 say with that this v which we have constructed is sigma discrete open refinement of u so in general what one does it without assuming matrix space you would like to prove this one out of some other properties by making this high this definition sigma discrete okay we have not used this concept anywhere in the core and so that's what I want to say if you prefer you can simply ignore it for the time being if you are interested more then you can look into Kelly's book okay so coming back to Rn we have remarked earlier that due to the existence of some smooth functions we get partitions of unity subordinate to an open cover moreover since step one of the proof of 3.6 is valid for all open subsets of Rn it follows that every open subset of Rn is paracompact indeed it's also true that every subspace of Rn is normal because it's a matrix space but what is important here is that given an open cover for any subspace there is a smooth partition of unity subordinate to that open cover but the functions are all defined on the entire of Rn okay not on just to that open subset thinking a little further along this line okay you will be able to prove the following theorem okay this is this I will get it as a corollary to whatever we have done so far all this remark is for getting such a motivation from Rn let X be a second countable locally compact half-dark space then every closed subset of X is the precise zero set of a continuous real valued function you can choose the the codement to be 0 1 the closed interval 0 1 once you have this it follows that such a thing is a g delta set also because the precise set is zero set of a continuous function is a g delta set okay you can just write it as intersection of inverse image alpha inverse of 0 closed 1 by n open okay so how do we prove this one it's not difficult start with any f contained in the X closed subset for each X in the complement choose a function alpha X from X to 0 1 such that alpha X at X is 1 and alpha X of f is 0 okay consider the open cover U is alpha X inverse of open 0 1 closed X belonging to this fc I have such function as alpha X so take U to be this open set this will be an open cover for fc okay fc being a closed subset of a second countable say is second countable locally compact and t2 okay therefore it is para compact so any open cover so this open cover U there is a locally finite open refinement further by second countability any open cover you can get a countable sub cover it will be again a locally finite refinement okay so we get a countable locally finite open refinement U n and belonging to n I can write like this of U okay these Un's are not necessarily subsets of U I mean they are not members of U but they are refinements they are contained in some members of U since each Un is contained in some alpha X inverse of 0 1 that is the way it of course right for some X we can select one alpha X such that and relabel it as alpha n instead of alpha X if we alpha X n I am cutting it short to alpha n that is all okay so define alpha now from X to 0 infinity no index here right equal to sum of all alpha n's but divided by 2 power n each of them after divided to power n take the sum these 2 power n's are there obviously to make the whole sum convergent these alpha n's are bounded by you know they are 0 to 1 so any number 0 to 1 divided to power n summation is convergent okay not only convergent uniformly convergent so alpha will be automatically continuous function now it's elementary thing to check that this alpha X is 0 exactly on F that's all we wanted to prove okay so go through this this proof carefully again and again maybe three times it doesn't matter okay the each step each way why you are doing all this somewhat circus kind of thing they have meaning there next time we will do some general rate result which comes from nowhere but the motivation is here if you know this one you know where it is coming okay thank you


We've got Ukraine. A big news out of Ukraine this morning is that Zelensky, President Zelensky, basically has replaced the commander-in-chief of the military, the commander-in-chief of the military, who has been responsible for the military since the Russian invasion. And by all accounts, at least in the first year and a half, did a phenomenal job of both preventing the Russians from winning in those first few weeks and then taking back significant territory from Russia in the fall of 2022. Unfortunately, as we all know, the counter-effects offensive in 2023 failed. It failed for many reasons, but I don't think the Ukrainian military took into account the full scope of the defensive preparations or the defensive alignment of the Russian military. And as a consequence, they got bogged down and not much happened. In the meantime, Russian offensive is going on across the entire front. Ukraine is primarily in defensive mode, not a good situation for them to be in. And the Russians are making small, fairly insignificant, but small progress in certain regions, particularly in the east and the Donbass. One of the advantages it seems like the Russians now have over the Ukrainians is Ukrainians early on in the war did a phenomenal job using drones to attack the Russians and disable Russian defensives and reach deep into behind Russian lines. They also used American-guided Hymars and other systems that used GPS in order to reach their target and destroy their target. And Ukraine made a lot of progress using those weapons and did phenomenally well. The Russians have developed electronic warfare techniques, and we'll get back to electronic warfare at the end of the segment to talk about China. But electronic warfare that basically disrupts the ability of these missiles and these drones to use GPS coordinates, to use GPS satellites. And that has proven incredibly successful. So what the Russians have done, developed since the beginning of the war, but mainly in the last six months, I'd say seven months, is this capacity to completely disrupt the advanced weapon systems that the Ukrainians are getting from the U.S., which I hope the U.S. is paying attention and will adjust, basically by disrupting their GPS capabilities, the GPS abilities. Ukraine as a consequence is developing their own drones, they're building factories and they're trying to build large numbers of drones that are immune from, that don't use GPS, and therefore immune for some of these electronic interferences, right, that the Russians engaged in. Russia has its own drones, those drones the Ukrainians are having a hard time dealing with. Anyway, so all of that is background why the war is kind of hunkered down and why Ukraine is under defensive and why, if anything, Russia is pushing forward. Of course, Ukraine is also being denied from the West. Weapon systems, it's being denied from the West, the ability to fight with the best weapon systems. The United States is holding back. We know that, we'll talk about that in a minute, that the United States is holding a military aid back from Ukraine and the European Union is delayed because of obon. Now they've got to approve, but that has been delayed.   F-16s still haven't arrived yet, or the training hasn't finished yet, but they will enter the region soon. What else do I want to say about Ukraine? Yes, the general replacing the fire general, the new general that is stepping in his place, is a Russian born in Russia. His family is originally from Ukraine, but of Russian speaking family. So it is interesting, right, Putin in much of his propaganda argues that this whole war is about liberating the ethnic Russians in Ukraine who don't want to be under Ukraine and bringing them under Mother Russia. Well, here is a Russian-Ukrainian ethnic Russian in Ukraine, educated in Russia, speaks fluent Russian. Born in Russia is now the supreme commander of Ukrainian forces fighting Russia. Yeah, so there you go, so much Putin's rationalizations, which you will hear many, much more of tonight when Tekko Carlson breaks the internet with his interview of Vladimir Putin. Instead of watching that, you should all be right here on the Iran book show, where I will be interviewing somebody a hundred times more interesting. Well, no, that's an insult. A million times more interesting than Vladimir Putin, and that's Jason Rines, will be talking about the rise and fall of civilizations. He is a Greek philosophy expert, but he's also taught a class on Emmanuel Kant. He is generally an expert in intellectual history, in philosophy. He knows, he's an expert on a lot of different things. We'll be talking about that. I'm sure some of his other expertise will come out. But Jason is a lot of fun and really is a great guy. So hopefully you'll tune in 7 p.m. East Coast time to my interview with him tonight on the rise and fall of civilizations, which has been a topic of our discussions here on the Iran book show for many, many months, where we discuss Christianity and the Enlightenment, and we'll discuss a lot of that tonight, starting with Greece, starting with Greece. Jason will be on at 7 p.m. East Coast time, 7 p.m. East Coast time. We will talk about Putin's interview with Tucker Carlson. We'll talk about that tomorrow. I will watch it. I'll hold my nose, close my eyes, have a bag to throw up in next to me, but I will watch the Putin interview, so you don't have to. And whether I will use clips on that interview and comment, or just comment broadly on the interview, we will see, depending on how colorful the interview lands up being.


So, hola. Buenos tardes. Hello. Thank you for coming to our talk, Enhancing the Performance Testing Process for GRPC Model Inferencing at Scale. Yes, that is a mouthful. That's like 20-plus syllables. So, yes, I am Paul Van Ack. This is my colleague Ted Cheng, we're both from IBM, Silicon Valley Labs in California. Still a bit jet lagged, very tired, but we're here to talk to you about kind of what we use for production model deployment, case serving model mesh, which there was a wonderfully artistic talk introduction today earlier by Alexa. So, a little bit of overlap, but it will be a good recap. Then some performance testing and monitoring setup, which Ted will talk about. Then we'll kind of go into a brief demo. First, let's just talk about model deployment in general. It's of course an integral part of the ML Ops pipeline of the AI lifecycle. You do your training that you need to, obviously you need to host it somewhere for your applications to consume the model. So, deploying a model as a microservice is probably the most common model serving strategy, especially in production settings. So, in this paradigm, the models are exposed via an API endpoint, whether it be REST or GRPC. Then clients make an inference request with their payload to receive inference response to get what they need. And as we speak about microservices, of course, Kubernetes is the kind of deployment target of choice. So, Kubernetes, as you probably all know, solves a whole host of problems for you, right, from scaling your service up and down, launching and spinning up new model server pods as maybe request load goes up and down. Then it allows for zero downtime model upgrades using rolling deployments. Of course, the aspect of resiliency where, you know, model serving pods, it restarts automatically, right, if there's a failed pod. But, you know, with all this, even just getting production grade model serving is tough. There are some additional complexities you have to be wary of, you know, complexities everywhere. There are quite many things to consider, especially when you're dealing with a variety of frameworks, you have to know how to containerize them for Kubernetes, how you should deploy it, how should the inference or inference request be formatted. Then, of course, making sure inference response times are acceptable, especially when deploying at scale. So, these are some of the things that the user would have to navigate when considering production grade model serving on Kubernetes. So, back to K-Serve. For those who were here earlier in the morning, Alexa did give a good introduction to K-Serve, so I'll just keep it brief here. So, K-Serve is an incubating project in the LF AI and data foundation. This was recently added. Originally, it was under the Kubeflow umbrella, and it allows highly scalable and standards-based model inference on Kubernetes for trusted AI. So, the key features are the serverless inferencing workload. You can serve your models in a serverless manner using Knative. You don't necessarily have to use Knative and Istio with K-Serve. You can also use what we have, what we call raw deployment mode. This just uses the native Kubernetes resources like deployments, ingress and services just to kind of deploy your model. Then, one good thing about K-Serve, it provides the standardized inference protocol, what we call the V2 protocol, and this is something that's been collaborated and developed in the community, especially with folks from Salden and NVIDIA. So, the good thing about this protocol is that it'll work, your inference request will work across all these different cloud providers and, I guess, model-serving runtimes like Triton or Salden's ML server. I think even PyTorch's Torch-Serve supports the V2 protocol. Of course, K-Serve provides an easy-to-use YAML where you just supply a storage URI, which is the endpoint to your model file. Then, you can actually just, in K-Serve, we'll handle the rest and we'll determine what type of container or image that model should be loaded into. So, you apply a YAML, then K-Serve will spin up the Kubernetes deployments necessary to serve the provided model for inference. So, as mentioned earlier in Alexa's talk, there are scalability concerns with this pod-per-model paradigm. Each inference service has a resource request and, of course, how Kubernetes is resource allocation. You'll quickly hit the limits of your node. Then, of course, Kubelet has a maximum, I think the default maximum pod limit is 110. I think Kubernetes best practice dictates or suggests that you shouldn't have more than 100 pods per node. There's also the aspect of the maximum IP address limitations. Each specific pod and replica of the pods, each has its own IP address. You might quickly, especially if you're dealing with thousands of models, you might quickly exhaust your IP addresses. So, all of this leads us to the notion that you need to be able to serve multiple models in a single pod per container. Oh, sorry, you need to serve multiple models in one singular pod. So, we want to reduce the overhead and avoid hitting all these limitations. So, this leads us to ModelMesh. This is something that I worked very closely with, and this is something that was open sourced last year as a part of the case of organization. It's intended to serve as a multi-model serving back in for case of. So, ModelMesh has been used in production for several years, underpinning a lot of the Watson services, like Watson assistant, natural language understanding and discovery. For stuff like that, you have maybe hundreds of thousands of models, and all of these models are being used. Some people create the model and might not perform inference on it for several weeks, and so you don't necessarily have to keep it available in memory. So, ModelMesh has the capability to page out the dormant models. Pod's not receiving any, or model's not receiving any traffic, and can load it just in time if it does receive traffic. This kind of falls in line with the K-native serverless approach, but just using it in one single container. So, ModelMesh handles the intelligent loading and unloading. He's trying to find an intelligent trade-off between responsiveness to users and their computational footprint. So, the overall architecture, I'm not sure if you can see that. So, a user would, you know, so as multiple predictors or models are deployed, compatible serving runtime deployments are scaled up to host these models. So, you might see several serving runtime deployments. Default, it's two deployments, or two replicas per serving runtime. So, in each pod, you can see that there are three containers, the ModelMesh container, adapter, or polar container for retrieving models from the external object store, like S3 or Google Cloud Store. And then, of course, the model server itself, which are third-party serving runtime, are infant servers, like Triton or ML server. And all of these support loading multiple models into one container. So, the ModelMesh sidecar, they're all connected together. They help route traffic, which is performed through the singular Kubernetes service at the top. So, external inferencing requests are made via the service and the Ingress ModelMesh pod, which could be any of these routes sent to other pods as needed in order to, yeah, and so that kind of creates kind of like your ModelMesh. And in order to coordinate operations and persist model and instance states and at CD cluster or instance is used. Yeah, so briefly, some of ModelMesh's key features are the cache management. So, ModelMesh treats the set of pre-provisioned serving runtime pods on Kubernetes as an LRU cache. So, ModelMesh decides what models are loaded or unloaded based off of the usage recency and current request volumes. Next, Model Placement will be done in such a way to balance both the cache age across the pods as well as the request load. So, this just means more commonly used models are placed on pods that perhaps aren't getting as much traffic. And models that may not be getting much traffic or traffic is sporadic will be placed on less utilized pods. Then there's resiliency, you know, if a, for some reason, object source unavailable, it'll keep retrying. Then there's operational simplicity. So, rolling hand, rolling updates are handled. You can, traffic will continue to be routed to an older model as you're deploying a newer model. And once the newer model is loaded in the cache and available to use, then it'll switch traffic to the newer model. So, yeah, so ModelMesh does have quite a lot of moving pieces. And, you know, especially when running something like ModelMesh in production for thousands and thousands of models. And there are several aspects that can really impact the effectiveness of the platform and, you know, from varying configurations, environments, runtimes, and, you know, the different types of models you might load, right? And so, this is why performance testing automation and monitoring are critical. So, as we develop ModelMesh and as pieces change, you know, performance testing automation becomes very important. So, you know, this is a platform that serves hundreds of thousands of models. So, we need to be able to validate performance with different config and different code bases, you know, different dependencies, models, and runtimes. Then we also need to ensure that new code doesn't introduce performance regression. And we need to keep doing this periodically throughout the development cycle, right? We don't want to test at the very end of the release and just be caught by surprise by some performance degradation. So, you know, this is all vital. And, you know, by creating automation for this and adding performance testing as part of our CICD process and by creating tolling for effectively monitoring our ModelMesh performance, you know, this really helps with finding, you know, costly defects sooner.  So, here I'm going to pass it off to Ted, who will kind of show what we, what we, what our performance testing setup and what we use for our performance monitoring. So, as Paul mentioned, there are many critical reasons for running performance tests, right? So, now I will talk about how we actually run some of the performance tests. So, it all boils down to three things, at least for us. So, the first thing is that the automation framework should run repeatable tests, should be able to run repeatable tests for every code release. And then second is the load driver. It should be very flexible in writing the workload. And the same workload should be able to run tests in both HTTP and GRPC. And it should be fast and it should have low overhead. And we are currently using K6. We have tried other load driver before and K6 is what we're currently using. Metrics monitoring should be able to monitor CPU memory utilization from worker nodes and containers inside the cube cluster. Right now, we are using Prometheus operator. So, this is kind of like our environment, the performance test environment. So, we have three nodes. So, the first node is the automation. In the automation, we use KFP Tecton. This is a Kubeflow pipeline. And then we have K6 inside the Kubeflow pipeline as part of the task. And then on the second node, we have our Prometheus operator, which has the Gorfana and Prometheus and also Inflex DB. And then the third node is our model mesh. This model mesh deployed on only one worker node because I'm using a very small deployment here. So, let's talk about the Kubeflow pipeline. So, Kubeflow, as you may know, is an umbrella project for many other smaller projects. A Kubeflow pipeline is one of them. This particular Kubeflow pipeline is running on top of the Tecton backend. So, next, the K6 tools. The K6 low tools is, you know, an open source low testing tools. You support sending payload in HTTP and GRPC protocols. And it's written in GoLane. So, it's pretty quick. And you can define your workload in JavaScript. It also provides CLI, which you can run the script using K6 run. And then it also provides some functionality for you to check whether your test has met any threshold to pass or either fail. And then it also provides output integrated to sending output to Inflex DB. So, later on, we can use the Gorfana dashboard to visualize it. Now, we've been talking about GRPC, right? So, GRPC is the main API for model mesh. So, that's why we keep talking about GRPC. But the GRPC plus the protocol buff is usually faster than the REST plus JSON interface because the GRPC is built on HTTP2 and it can send payload in binary format. So, last thing I want to talk about is Prometheus operator. This operator provides many things, you know, by default, such as Prometheus DB and also the node exporter, which collects the Linux metrics on your cube cluster. And also, it provides Gorfana, which can visualize the metrics and you can view it on your browser. So, right now, I'll probably show you some demo. Let's switch to... So, let's take a look first. We have three nodes and then... This is because... Why is it so slow? Okay. So, yeah, we have three nodes. So, one node for... And then this particular node is for model mesh deployment. So, our model mesh deploy is running on a relatively small worker node. It has two Triton inference part. Only Triton... And then the node itself has eight CPUs and 32 gig of memories. And all the model mesh component is running just one worker node. And this is the Gorfana dashboard. So, this Gorfana dashboard is set up to monitor the model mesh metrics. And as well as the cluster level system metrics, such as CPU and container utilizations, CPU memory utilizations, and as well as the K6 metrics from the load driver. So, at this point, let's start a test. And this is the Kubeflow pipeline UI. So, I'm going to start my test using the Kubeflow pipeline UI. So, this is a pipeline. This pipeline has two components. So, first, the pipeline will deploy 20 models. And then it will run some load tests with the K6 driver. So, let's start tests real quick. Okay. So, while it's running tests, let me show you the number of models on my system. So, I have 10k models already deployed. And on the system, there are 5,000 MNIST ONIX models, as we can see. And then another 5,000 CIFAR PyTorch models. All these are very small models. And when the test is running, you can see the log here. So, you can actually see 20 more MNIST ONIX models has already been deployed. Now, it's running the performance test using K6. So, the K6, while it's running, it's sending metrics to influx DB, which we can graph using the Grafana dashboard later. Okay. So, let's switch back to the dashboard. So, these are on the dashboard. These two numbers are the same because it's basically saying that, okay, I have 10k model registered and 10k model also loaded in the cache. And these two numbers here are the number of models on each Triton runtime parts. So, there are roughly 5,600 and 5,400 here. You may be wondering, this don't add up to 10k, right? Because some models are replicated across the two parts. And right now, as the test is running, you can see that each Triton is taking 1,000 requests currently. And the request latency is single digit below 10 milliseconds or so. And also here, you can see the number of total requests coming in from the model mesh server side. And so, this is all the server side data. And as the test is running, you can see the CPU also increased. The serving runtime containers also have higher CPU, also the Triton containers. CPU become higher. And this is the memory. So, you can see Triton uses the most memory. Okay. So, I think our test has finished. Let me just zoom in here so you can see a little better. So, this top three charts are from the K6 driver. So, the test I was running, I was running roughly 100 second low test. The first 30 seconds are like ramp up. So, you'll see gradually ramp up and then run for 60 seconds and then ramp down. So, on the client side, I'm using 40 virtual users to drive this test. And these 40 users are running sending payloads as fast as they can. Sometimes, if you like to emulate real users, you may want to add some delay or timers for each user. But for this test, I'm only curious about what's the maximum capacity of my model mesh deployment. So, as you can see, 2K, it can take 2K requests per second for this particular model I'm testing. And it's very similar to what the server, the model mesh server metrics as well. But the GRPC request duration is a bit higher. Like here is reading about 15 millisecond to 20 millisecond. But down here is a single digit. So, that's because the client side may have some network delay and may be spending some CPU time for processing the response data. So, it's always good to look at the metrics from both sides. Now, the error, we didn't have any errors or the error is empty. The error is nothing. So, some of this chart here shows that when, you know, initially when we load 20 more models, it shows that model loading and unloading activity here. And also the loaded model size here. We don't have any activity here in the cache miss because basically all the models are already in the cache. So, to test this, I have some tests also made for this corner case. And I think we can run it just to show some cache misaction. Okay. So, I'm going to run this pipeline. Only has one test in it that's running a K6 stress.  So, all I'm doing here is that if I hit enough, I'm trying to hit some models that have not been used for long time and then to see if that we can get some cache misses action. So, let's switch. So, while this is running, I guess we can take some questions because we're almost at the end of our time. So, we had a question on Slack. That was the question was, should I run model mesh if I just have a few models? I think that was the question. Let me double check. Yeah, should I consider model mesh when I just have a few models? That is before running into KS limits on pods, IPs, etc. What would you recommend? Oh, it's my mic. Okay. So, I think if you just have a few models, so the main, the main, I guess use case for model mesh is for the high scale, high density, right? You have thousands and thousands of models. If you only have a few models, I think just using this case for single model serving is fits the bill well enough. You can easily plug in transformers and explainers just using case for single model serving. But it's when you really need to kind of load in and out of memory multiple models just to make room and well utilize your cluster is when you want to use model mesh. Okay. It's like, so if you're not already hitting limitations, and I think just using case service fine, it's perfectly fits the bill. Awesome. So, Ted, I wonder if you want to explain. Yeah, sure. So, if we don't have any more questions, so let me show you. So, yeah, because we are sending tests to so many different models, now we are actually getting some cache misses. Now, in real life, this may not be a good thing to do to your server, because this actually break the LRU cache. But for this for the test, we want to test this is how you can test. And here because I'm sending so many payload to two different models, so I'm getting two different response time here for two different models here, so I can actually toggle different models here or both. Yep. So, that's it for our talk. So, today we have show you what model mesh is, and then we have show you how to run performance test on model mesh. And we're actually using some of those tests in the public model mesh GitHub repo for our nightly build process. And we do have a few more talks coming up that's related to this co-located event. So, feel free to participate those talks. Thank you very much. Thank you. I think we have time for one or two more questions. Is there anyone that has questions in the audience? There's a question in the back. Thank you very much for the presentation. In the beginning of the presentation, you mentioned that you could post models or to save resources and money. So, I'm curious how do you do this? How do you post models which you're not going to use and then you recover them? So, one of the main components of model mesh is the third-party inference services or servers. So, we have NVIDIA's Triton. Could be Intel's OpenVINO or Seldin's ML servers. All of these servers support loading, have a load and unload API where you can load in models and unload models. And so, model mesh acts as kind of like a management layer on top of that to load and unload based off of usage demand and based off of usage recency. So, pretty much model mesh handles the loading and unloading. It treats all of the serving runtime deployments and these servers as an LRU cache. If it's already used of all of the memory capacity allocated for these models and it'll bump out the least recently used model using the unload API for the model servers, then we'll load in or scale up the model being requested. And so, that's kind of the notion behind model mesh and kind of making use of all the cluster capacity as much as possible. Do more with less.


Globalization of production and trading has generated a rapidly evolving policy landscape. Gone are the days where you had a central government and the diplomats making agreements as to what the policy was going to be and shaking hands and going back to their countries and implementing these approaches from the top down. And now the reality, the policy making reality involves a wide variety of new actors and a wide variety of methodologies that previously operated at a much more limited scale. So what we're seeing now is we're seeing lobbying groups that are both rooted in activism and are also in some cases financed by corporations. We're also seeing groups of scientists and engineers organizing themselves and being organized by different governments entering into the equation of dictating and creating rules and regulations for the environment. Finally, we see cities emerging as models for how a certain type of mitigation may take place and creating a number of different laboratories where concepts can be tested at a much smaller scale. Modern environmental governance may have diverse sources and diverse actors. However, the asymmetries between the developed north and the developing south still exist and there is a great deal of mistrust that comes from a long history of interactions between countries with very different degrees of industrialization.