Welcome to my talk on flexible, authenticated and confidential channel establishment, analyzing the noise protocol framework. This is joint work together with Benjamin Dowling from ETH Zurich and Jörg Schwenk, who is at Ruhu University Bochum as well as I am, and my name is Paul Rösler. In this talk, I will explain our analysis on the one hand, the results and on the other hand, the methodology that we used in four steps. I will first introduce the noise protocol framework that we analyze here. I will then talk about the history and our approach to model and define security of secure channel establishment. I will then give you an idea of what the results of our analysis are. And at the end, I will shortly discuss small fractions of how our security model looks like. The noise protocol framework is a framework for defining and deriving patterns for establishing confidential and authenticated two-party channels. It has been established and invented and also developed by Trevor Perrin since 2014. And due to its lightweight and modular nature, it has been adopted and deployed in WhatsApp, WireGuard, Slack and Amazon. So it protects the communication of multiple millions of communications per day. It is developed for homogeneous networks, which means that all entities communicating via this protocol within Vine environment all agree upon a set of parameters. So there is no parameter negotiation as it is deployed and implemented, for example, in TLS. It allows for a modular extending and defining patterns. And it is very lightweight because it uses very efficient and very few powerful building blocks like authenticated encryption, hash functions and the Fihelman groups. It exists or it contains 15 base patterns for specific features and properties, but it can be extended by multiple other features and multiple features and properties can be modulally combined. And when I say it is modular and it can be extended, then, for example, one way to modulally define patterns is by the authentication mechanisms. For example, it can be used for communication of entirely no authenticated users at all. It can also be used for unilateral authentication, but also bilateral authentication. And furthermore, it can be parameterized by whether the authentication keys are pre-established and pre-distributed or whether these authentication keys are distributed and sent during the communication within a session. Then there are multiple further extensions like pre-established or pre-shared symmetric keys, or the authentication keys can, for example, as indicated in the graphic on the right side, be sent confidentially such that the identities of participating members in a session remain anonymous or hidden towards outsiders. There have been multiple analyses of noise patterns and the noise framework in the past, for example, by Kobayci et al. who analyzed noise in a symbolic model in an automatic fashion such that they were able to derive multiple security guarantees and multiple security properties for almost all patterns that can be defined by the noise protocol framework. This work has been published at your S&P 2019. In computational models, there have been two analyses, both focused on the noise pattern that is implemented in the WireGuard VPN protocol. One has been conducted manually by Dowling and Patterson, published at ACNS 2017, and the other one has been published at your S&P 2019 by Lib et al. who analyzed the WireGuard protocol automatically. We will now look at different patterns within this protocol framework in order to understand how one can derive and obtain single protocols from this large noise framework. And we start with the N pattern that allows for unidirectional unauthenticated communication from initiator A to responder B. Already within the handshake, this pattern allows for the confidential transmission of payload M0, which is encrypted under a key derived from the Diffie-Hellman G to the lower A to capital B. So G to the lower A is an an ephemeral Diffie-Hellman share sent and generated during this first handshake message from initiator A and G to the capital B is the long-term secret or the long-term Diffie-Hellman share from responder B. Now, this first ciphertext, which already authenticates the G to the lower A as associated data, is now also authenticated within the associated data in the encryption of all following payload messages within this channel. So also after this handshake, multiple channel messages can be encrypted with the same key all taking the first ciphertext as associated data. This N pattern is now also part of this extended NK pattern which adds a second handshake message from responder B back to initiator A such that first of all, B's payload from B to A is now authenticated and additionally both A and B can now send payload to each other such that a bi-directional channel is established. Within this second handshake message from B to A, the B generates and sends a fresh Diffie-Hellman share G to the lower B to A such that G to the lower A, B is now also part of the key derivation for encrypting both payload from B to A within the handshake but also for encrypting all future channel communication between A and B. As said before, the last handshake message, the last handshake ciphertext is always the associated data put for all future channel communication between A and B. Now finally, in order to also authenticate A, the last pattern that we look at today is the XK pattern which adds a third handshake message to this protocol in which the long-term Diffie-Hellman share of A can be encrypted from A to B such that on the one hand, this G to the capital A is encrypted and thereby the identity of initiator A is hidden towards outsiders but also now A authenticates towards B by also using G to the capital A, lower B as part of the key derivation for all future encrypt and send payload. The question that arises from these three patterns already but one can imagine that there are multiple more different patterns within this framework is how to analyze such multiple kind of similar but still different protocols with different security guarantees at different stages within one single protocol in one computational model such that the analysis results can be compared. And in order to answer this question, we will now first look at the history of how channel establishment can be analyzed. Firstly, the most natural way how to analyze and look at channel and channel establishment is to differentiate between the channel establishment via a key exchange and a symmetric protocol that uses the established key for protecting payload. The problem arises if the established key for protecting the channel payload is already used during the establishment of a symmetric key. This problem has been looked at during the analysis of the TLSDHE protocol within the paper on the security of TLSDHE in the standard model. In this model, the author defined a method how to encapsulate and combine channel and key exchange within one framework which is called the authenticated and confidential channel establishment. Now still one only has the ability to exchange exactly one key that is then used for the entire lifetime of this channel. In order to allow also for multiple stages within one protocol and thereby allow for the exchange and establishment of multiple keys for having multiple different channels with different security guarantees, Fischlin and Günther proposed the multistage key exchange model which initially was used for analyzing the quick protocol. The problem is still if the key that is established for securing the payload of a channel is already used during its own exchange between two parties A and B, then this model, the multistage key exchange model gives no guarantees for the security of the payload as that is then transmitted. And as a result, in order to overcome this problem of both having multiple stages but also keys being used during the establishment of the channels for these stages, a multistage ACCE model, so a multistage authenticated and confidential channel establishment model has already been proposed in various works, among others also within an analysis of the quick protocol. In this first variant, it also only allowed for two stages within a communication but also in various other works, multiple stages have been considered. A significant problem of all these works is that for them, a stage always consists of first the establishment of a key and then the transmission of payload. Now in our work for two reasons, we entirely disregard the internal mechanisms for the key establishment in the model but rather define our model only with respect to the functionality that we analyze, which is the channel. The first reason for this is that the noise protocol framework allows for in every stage the transmission of confidential payload at this exact same moment at which the key for protecting this payload is also transmitted. So the establishment of keys and the transmission of payload is kind of entirely merged within noise. And on the other hand, we think that in order to define security for some primitive, it should play no role how this is constructed but rather what the construction is aiming to provide as functionality. In addition to messages encrypted to the channel and messages decrypted from the channel, we also consider it as a functionality that constructions output the level of security that the message that is going to be transmitted via the channel or that has been transmitted via the channel reaches. So the construction itself says which security it reaches for transmitted payload. From this information, we can then define a very simple and clear syntax definition for a channel establishment that consists of four algorithms. The first algorithm key gen outputs and generates a long-term authentication key pair for each party in the environment. The init algorithm then starts or initializes a local state for an instance that realizes the execution of a channel. For this, the init algorithm takes the long-term secret key of the party that initializes this channel plus the public key of the partner with whom this party wants to have a channel and the role that the instance that realizes this channel takes within this channel. Lastly, it also takes the data that is associated to this channel, for example, a port number of an underlying protocol or some further information that just gives some context. The encryption and decryption algorithm take the local state that is output from the init algorithm in order to process the real channel. In addition to this, they also take as input the authentication secret key of the party that they represent within the channel and they either take as input a message that is going to be transmitted via the channel or a ciphertext that is taken from the channel and to be decrypted as a payload. The output is in both cases the new local state of the instance that processes the channel and either the ciphertext giving to the channel or a message giving to an application that uses the channel. Lastly, as I said before, it outputs the security level that signals the security guarantees that hold for the message that has been decrypted or is going to be encrypted with the channel. With the security level, we then define our security with five parameters. Two parameters refer to the authentication that is to be reached. One parameter refers to the forward secrecy of a channel and two refer to the replay attack resistance of a channel. And these parameters are consistently compared to the security levels output by a construction during the security game. For example, if the security level is higher than the parameter of the security model that refers to the authentication of the initiator, then the initiator must indeed be authenticated within the respective channel. That means if the authentication breaks, then this either refers or indicates a successful adversary or a trivial attack, meaning that, for example, the initiator has been corrupted before and then impersonated. A second example would be if the security level of a construction output for a certain message is higher than the forward secrecy parameter, then this means that forward secrecy must be reached for this specific payload. As a result, after having output such a security level that is higher than this forward secrecy parameter, it means that the participating parties can indeed be corrupted without breaking the confidentiality of messages sent via the respective channel. In our security analysis, we consider eight out of the 15 base patterns of the noise protocol framework and provide reduction-based proofs for them. For the remaining seven patterns of these 15 base patterns, we also provide conjectures for the parameters that I just introduced at the last slide. But for now or within this talk, we will just ignore these remaining seven patterns. For the eight patterns, we provide fine-grained security guarantees and proof them with reduction. And these properties include, as I said, the authentication of parties, forward secrecy with respect to the long-term keys of parties, and security with respect to replay attack resistance. In an extended version of our paper, we also consider key compromise impersonation attacks and the security with respect to reveal of random coins of single instances participating in a session. For now, we will ignore these further properties and only consider authentication, forward secrecy, and replay attack resistance. In order to illustrate what the security guarantees means, we will now look at the three patterns that we introduced at the beginning of this talk. So the end pattern here on the left side and in the uppermost row, we see that the security achieved by this pattern only includes confidentiality of payload sent from initiator A to responder B. No authentication nor forward secrecy nor resistance against replay attack is reached. By just adding a second handshake message, the NK pattern reaches authenticity of the responder, forward secrecy, and replay attack resistance with respect to both participating instances. Finally, by just adding a third handshake message, the XK pattern additionally reaches authentication of the initiator. At the end of my talk, I will now shortly discuss how in general, security is defined in game-based computational settings but also specifically how this is reflected in our model. Usually in such settings, the security is defined via a game played between a challenger here on the left side and an adversary here on the right side. And this adversary has then usually the ability to control invocations of algorithms of the primitive that one considered. In our setting, this is the init algorithm, the encryption algorithm, and the decryption algorithm. Also, the adversary usually, as well as in our setting, has the ability to control and determine the public inputs of these algorithms when being invoked as a result of the query of one of these oracles. This is used to say or to reflect that an adversary can create its own victims and its own targets such that one can derive statements about the security of every victim and every target of an adversary. In addition to this, the adversary usually has access to the secrets that are used for algorithm invocations that are conducted as a result of the queries that are the oracles that I just mentioned before. In our setting, the adversary has the ability to corrupt the long-term parties within our environment that is simulated by the challenger on the left side. And in addition to this, the local states that are used for processing different invocations and executions of a channel. And this is used to demonstrate that, for example, different parties are independent of each other such that a different party can be corrupted while the other party still has secure communication and still secure channels. Also, for state reveals, this is used to demonstrate that different executions of the protocol derive different states and therefore, one cannot attack one channel with the local state of an instance that participates in another channel. Then in order to derive a security statement, one would need to define what the security goal is. And usually this is an event that should not trigger during the execution of an adversary with the oracles just defined above. In our setting, we consider confidentiality and authenticity as the security goals. So an adversary should not obtain information of transmitted payload and it should not be able to manipulate traffic sent via a channel. Now, all these oracles give an adversary so much power that it can conduct attacks that no construction can prevent. And as a result, one would need to declare such unpreventable attacks as non-successful towards the adversary. So the adversary when conducting such attack is not considered as a successful adversary against the previously defined security goals. In addition to these unpreventable attacks, usually security definitions and security frameworks include preventable attacks that are still not considered as successful attacks for the adversary. This is used to allow for more efficient constructions and it also allows for more precise security guarantees. In our model framework, for example, these exclusions of preventable attacks are controlled via the model parameters that we just previously discussed. And as a result from these exclusions of preventable attacks, one derives further soft security goals which we call them here. So for example, forward secrecy is just a soft security goal that is defined via when and under which conditions a corruption of parties can take place. Also replay attack resistance is just a soft goal as a derivation of authenticity. And all these soft goals are just a result of the treatment of preventable attacks. We now look at the relation between state reveal as an ability that an adversary has in the security gain and replay attack resistance as a soft goal that is the result of our security definition. State reveal on the one hand demonstrates and illustrates the real threat of attackers to obtain the local secrets of an instance that executes the protocol. So in reality, there are devices that run channels and executions of channels for a very long time. So it is practical that attackers can obtain the local secrets. And in order to demonstrate that this threat is or has effect only to the channel that is executed by the specific device, we should enable adversaries in our security game to obtain via state reveal the local state of single instances. Replay attacks are just a derivation of breaks against authenticity. So what they model or what they result in is the delivery of same messages via just one honestly sent ciphertext multiple times to multiple receivers. And in some cases, such attacks are even unpreventable. For example, if the participating parties of a channel have static long-term secret keys, then for example, the first ciphertext that is sent from the initiator to the responder is always replayable by attackers. Now, the relation is that such replay attacks do not only result in multiple messages being sent to multiple receivers, but also multiple secrets being established by these multiple receivers of the replayed ciphertext. So replay attack resistance does not only say that ciphertexts must not be replayable, but also that if a ciphertext is replayed, that different instances processing the ciphertext differently and replying to this replayed ciphertext differently must eventually become independent. And as a result, we need state reveal to be allowed for attackers to result in a meaningful notion of replay attack resistance because it also reflects how far the local states of receivers are dependent or independent throughout the execution of a channel in which initially a replay attack occurred. Okay, I will now shortly wrap up my talk. So it started with a short introduction into what the noise protocol framework allows and what it captures and what it contains. Then we looked at the history and our approach of how one can model channel establishment. Our idea is here to understand the primitive via its functionality and not as related work did via its potential constructions. We then looked at the analysis result and saw that we analyzed eight out of 15 base patterns and derived precise security guarantees for different properties at different stages within the protocol. And at the end, we discussed the security model, how it is usually designed and that different security guarantees are sometimes only derivations of each other and can therefore not be analyzed within independent security models. For further information, look at our extended version, which you can find at E-Print. And if you have any questions, contact me via Twitter, for example, via this handle röselpa or via email. Thank you very much for your attention and stay safe.


So much and welcome everybody and thanks for joining. So my name is Guy Salton. I'm a solution engineering lead at RunAI. And today we'll talk about Kubernetes for AI workloads and we'll see what works and what doesn't really work. And we even have a demo so we can run some jobs live. And so I hope that that will be cool. We created a public GitHub repository with the example that we're going to show in the demo. So we'll post it later on the chat. So let's begin. Let's start with covering what we're going to cover today is part of the agenda. We'll start by talking about the world of AI and how it's adopting containers. So I assume that most of you are familiar with containers and maybe mostly for deploying containers and microservices as part of application deployment. But then we'll talk about how the world of AI and deep learning is also adopting containers. And then we'll talk a bit about Kubernetes and how and if it can help us orchestrate containers for running AI workloads. And so we'll see what works and we'll also then see the limitations of Kubernetes and what doesn't work. So to begin with, I think maybe we'll just start with a quick poll. So I'll pop it up now. And I'd love if you can just get your familiarity with AI and deep learning to see how deep we should go. And I see, okay, I see a lot of people are pretty familiar, maybe not very familiar. Some of you, you know, heard about it, but maybe didn't dig too deep into it. So this is great. Thank you for participating. And great. So what we've seen in recent years is, and yeah, I think I'll end the poll now. So again, thank you for answering. Is that the AI ecosystem is adopting containers. It's built around containers. And for those of you who are familiar with AI and maybe even played around with it a bit, you might heard about some of these tools and frameworks that we show here on the right hand side, like TensorFlow and PyTorch and Keras and Jupyter. Maybe some other frameworks that are designed, especially for Kubernetes like Kubeflow and Argo. So these are now like, you know, the most popular tools in the world of AI and they're all built on containers. And even NVIDIA, and we'll talk a bit more as part of this session about NVIDIA GPUs that are highly and very popularly used for AI workloads. NVIDIA released their NGC, which is a container registry with pre-trained models, Docker images, Helm charts, things like that that are meant especially for AI experimentation on containers. So we see that, yeah, not only the world of software development and microservices deployment is using containers, but the AI is also adopting containers. Yeah, very much in the recent years. And as you probably know, and without lunch, another poll is that, yeah, one of the popular or maybe the de facto standard for container orchestration is Kubernetes. So, yeah, let's see how familiar you are with Kubernetes and launching another poll now. And here, yeah, we see that a lot of you are pretty familiar as was some of you are very familiar with Kubernetes. And that's great because we are going to show Kubernetes today in the demo as well. So for those of you who haven't heard about it or not know much, Kubernetes is an open source tool originally released by Google. And it's commonly used today in many, many companies for container orchestration, right? So companies that are developing software, developing applications and using containers, they usually do it with microservice architecture. Each microservice is deployed as a container, but they want to have things like availability and portability, being able to easily deploy these containers to different environments, maybe some on-premise, some in the cloud. They want to declaratively define the state of the application and they can easily compose that using YAML files. And they want to easily scale to support the load from users. So Kubernetes helps with that as well. So I think I recently read that CNCF said that them from companies that are using containers in production, more than 78% are already using Kubernetes. So Kubernetes is the fact of the new standard for container orchestration, again, designed mainly for microservices deployment. But today we're talking more about AI so AI is a bit different, right? AI, first of all, in terms of the accelerators that the AI workloads run on, you would see that it won't be only on classic CPUs. There are new accelerators that are more suitable for AI workloads, mainly GPUs, maybe also ASICs in the future, as well as that the whole development and execution of AI workloads is based on experimentation. And we'll talk about that. And this is different from just deploying microservices. So let's go and see it live a real example and we'll go into a demo and we'll even run some workloads today and train a deep learning model on Kubernetes. So this link is a public GitHub repository that contains a containerized deep learning model and we'll go and show it to you. So it's now also is available on the chat. You should be able to go and you can clone it. You can fork it if you want. And let's see what we have here in this repository. So this is a repository. It contains a deep learning application, which is again containerized. What does that mean? It means that we have a Docker file. And we can see in the Docker file that the base image of this Docker file is NVIDIA CUDA 10. CUDA is the framework that NVIDIA released for developing AI models especially for AI models and for running on GPUs. It's based on Ubuntu 18.04. And you can see that the data science framework that is used here is TensorFlow where we're going to install TensorFlow in our container as well as Keras, which is another framework. We're going to use Python 3.6. And yeah, we won't go over everything here but we're going to install some additional packages and dependencies that our model actually needs.  So you see that there is some entry point script here that will run once the container is up. You can also see that we'll talk a bit about what does it mean to train a deep learning model. So a deep learning model at the end of the day is developed with code Python in this example. And once the model is already developed, we want to train it on a dataset and then help it learn and then be able to give us results. And then eventually it will be deployed to production. It will be able to serve requests from real users and give us some interesting analytics based on some data. So here we're going to copy a dataset called CIFAR10. And this is a very popular dataset for AI. It contains a lot of different images. So this will be the data that we're going to train our model on and we're then going to copy our Python file and run it. So we can even go pretty quickly through that. That won't be the main focus of the demo but here is the actual Python file. And you see that we're going to define here things like the image size, how many images we're going to use for this execution and the batch size. And of course these can be overridden to the containers as environment variables. But of course this repository is public so you can go and play around with it and have a deeper look at it. But yeah, exactly. This is what we have here. So we have our Python code defining the model. We're going to mount a dataset into it and we're going to run it all from a Docker file. And prior to this webinar I already built a Docker image from this Docker file and pushed it to a Docker registry that we have in Google Cloud. So we'll see once we go and want to run this model on Kubernetes I'll show you the actual image that was already built and pushed. So let's go and open the terminal and I'll show you what I prepared here and we'll also again run a live example. So here I prepared a few files and we're going to explain a bit about Kubernetes. I know that most of you are familiar in a way with Kubernetes which is great because we're going to talk about some basic concepts of Kubernetes.  Maybe you already bought a few GPUs whether it's on-premise GPUs or cloud hosted GPUs and you want to help manage this operation and let the researchers in your organization run and train their models on GPUs. So what we have in here I have a Kubernetes cluster that is deployed on Google Cloud and I can show you if I run kubectl getpods. Sorry, getnodes. I'll see all of the nodes of my cluster. You know what, I'm actually looking at a different cluster. So let's change the context. We now should look at the relevant cluster. Sorry, did I do? Oh, right, no, I'm at the right cluster. And so I have my Kubernetes master node. I have another CPU node and I have two nodes that have GPUs. And just to show you, I'm going to use a different CLI than kubectl something that we developed internally in run AI called run AI top node. This will show us exactly how many GPUs I have on each of my nodes. So on the master node, I don't have any GPUs as well as on this node. I don't have any GPUs, but I have two nodes that do have GPUs. This worker GPU three and worker GPU four, each of them has two GPUs. Okay, so I want to use these nodes to run my containers on them and train my model. Now, let's say you have a team of researchers and you want to somehow let them fairly share the GPUs in the cluster. You don't want one researcher to use all the GPUs and then cause starvation where the other researchers won't be able to use any GPUs. So the way that you can do this in Kubernetes is you can create namespaces. Okay, so I already created some namespaces. So I can go and run the kubectl get an S sense for namespaces. And I have a bunch of namespaces here, but let's just focus on the two ones here in the bottom. One namespace is called team A. The other one is called team B. Let's say I want the researchers from different teams to use different namespaces. So researchers that belongs to team A, I would want them to run their jobs on the team A namespace. And the researchers that belong to team B, they will run their jobs on the team B namespace. And then you can also, if you just don't want, you want to make sure that researchers from team B don't run jobs on the team A namespace and then use GPUs that are not assigned to them, you can create a service account and roles and then role bindings in Kubernetes. This is, I won't go to this in the webinar today, but this is just to define your users in Kubernetes, which can be defined as something called a service account and then make sure that specific users only have access to a specific namespace. So users, researchers that belong to team A will only be able to run jobs on the team A namespace. They won't be able to do anything on other namespaces. So you can define this in Kubernetes and I can share maybe a link on how to set this up, but this doesn't really relate to AI. It's more like a general thing in Kubernetes. But also, even though we already created these namespaces, and let's say we gave some users access only to team A and then some other users access only to team B, we can then also use another thing in Kubernetes called resource quota. So a resource quota can be used to limit the amount of compute resources per namespace. So here, when we say compute resources, we will talk mainly about GPUs, but this can also be run memory, it can be CPUs. So I'll show you what we have here. If we look at the other YAML files that we have here, we have this GPU quota team A and GPU quota team B. If I go and yeah, I'm gonna show you these files. So this is defining something called a resource quota in Kubernetes. And like I said, it's going to, I'm gonna give it some name. This is just the name. It's the name of this resource quota entity. I call this resource quota GPU quota team A. It's going to limit the resources for the namespace team A. And then I chose which resources I would like to limit and what would be the limitation. So I said, okay, for team A namespace, I only want to allow using one GPU. Okay, I don't want to allow more than that. And then same thing for team B. So for team B, there would run on their team B namespace and they will also be limited to using one GPU. This way, there won't be any starvation across the teams, right? We won't be able to, one, like a researcher from team A won't be able to use all the GPUs from all of the cluster and then cause starvation to the other users. So to apply these resource quotas, I can then just use the kubectl apply command and then give this YAML file. And this would now apply and create this resource quota on the different namespaces. I can apply both YAML files. You know, then maybe I'll just do it full screen. That'll be easier. I see that it says that they are configured. We should now be able to see these. So if I go and run kubectl get resource quota on the namespace team A, okay? I will see that I now, I have a resource quota. The name of the resource quota is called GPU quota team A and it would limit this namespace to use up to one GPU. So I see that the limit is one GPU. Currently, zero GPUs are being used. Same thing. If I look at the resource quota entities in team B, I'll see a similar thing. So we created namespaces. We then provided resource quota to limit the amount of GPUs that can be used for each namespace. Now let's go and run a job. So, you know, we saw the GitHub repository and we saw the Docker file. We saw the, you know, the Python code and the data. We then built an image from this Docker file. So this image contains the code. It contains all of the packages, all of the frameworks, all of the dependencies, the data. Everything is inside and it even has an entry point instruction inside the image. So it knows what to do. Whenever like the container starts, it would just go and start, you know, a script that will install the dependencies and then run the Python code, which will actually train my deep learning model. And now I have this image. Let's see how I run this image on Kubernetes. So I have another YAML file in this folder, which I called AI train job. And let's go and see the content of this file and then we'll run a job. So you see, and I don't know how you guys are familiar with a job in Kubernetes, right? So this is, it's not a pod. It's not a deployment. It's a resource of Kubernetes called a job.  And because these pods are some things that, you know, they can just run in the background and serve requests. But here we don't want to do that. We want to define, you know, a job that will run to completion and unattended job that will run to completion. Why? Because, you know, we have our model, our deep learning model. We have the data. You know, once we run our Python code, it should start training the model and what this training activity will eventually be completed. It will finish training on all of the dataset. And then we want this job to terminate and free up the resources. So for this type of workload, a job is more suitable than a pod or a deployment. Okay. And now let's go and see what else we have here in this file.  I call it job one. I choose which namespace this job needs to run on. And I chose a TV namespace. And then under spec, I can choose the image. So under the containers, I say I want to run this image. So this quick start image is the image that I built from, you know, the Docker file I showed you earlier and I pushed it to GCR, right? Google Container Registry. And this, by the way, is also public. You can also pull this image and try to run it yourselves. I can also paste it on the chat. And once I define the image, I can then ask for how many resources and which resources I want to allocate to this job, to this container. So here I said I want to use nvidia.com slash GPU. This is how you refer to GPUs in Kubernetes. And so unlike other compute resources, if some of you are familiar with, you know, allocating CPUs or memory to a job or a pod, with the other resources, you can set a request and you can set a limit.  So if I say let's say eight CPUs, then this would be the minimum. And I can also set a limit of like, let's say for like 16 CPUs, meaning, you know, don't run if you don't have eight CPUs available, but also make sure that you don't go over 16 CPUs. With GPUs, Kubernetes doesn't currently have this support. So there's no point in setting both limits and requests. So you can just set one of them and it would be the same. Like the limit would mean, you know, if I ask for one GPU, the job won't be able to run if I don't have a GPU available and it will never use more than one GPU. So it's both the request and the limit. I see some questions here. Let's see if I can answer them, you know, during the webinar. So regarding FPGA accelerators, we, especially like myself in run AI, we work with many enterprise customers and companies that are doing deep learning on Kubernetes. I don't think I've ever seen FPGA accelerators being used. It's currently mostly, mostly GPUs by Nvidia, but we are sure that there will be other accelerators, you know, Intel are working on their own AI chip and Google are working on their own called the TPUs. They're also another company in the UK called Graphcore. So these we believe will slowly enter the market, but currently it's mostly Nvidia GPUs. So yeah, I see that there is also a request here for the definition of service accounts and cluster roles and roles. I'll check and send these same materials later on. Another question from Asim. Since we already have a quota for the namespace, why do we need to put a resource limit on the job? So yeah, think about it this way. Here I set the resource quota as one GPU and in the job I'm asking for one GPU. So maybe you don't really see the point here, but potentially I can say, okay, the, I can say that the namespace would have a quota of two GPUs and then two users can each run their own job and ask for one GPU. But here I define the GPU for the number of GPUs for the job and in the resource quota, I limit the number of GPUs that would be available at any given time for a namespace. So it can be the same number or it can be that the resource quota on the namespace would be larger. But if this number is larger than the resource quota, then obviously you won't be able to run your job. Another question is, do we need to install NVIDIA drivers on the node before using GPUs? Correct. So there are a few things that you need to install before called the NVIDIA container toolkit as well as the NVIDIA drivers to make sure that you can run jobs on GPUs. And so you can look it up. We even have this document that didn't run AI documentation. I can share it. And this also answers the other question. Yeah, I see a question here about NVIDIA Docker. So this is also a very great command line to use. If you don't want to run on Kubernetes, you just want to run a container on GPUs. Instead of using the regular Docker CLI, you can use the NVIDIA Docker CLI, which is built for running on GPUs. I see also an interesting question here about using schedulers like SLARM instead of resource quota. This is interesting. For those of you who are familiar with SLARM, SLARM is an open source scheduler that was built a while ago for HPC world, for the high performance computing world before the people actually started talking about AI and deep learning. So SLARM is a scheduler with a lot of capabilities. It wasn't really designed for cloud-native technologies and Kubernetes and containers. It does support containers, but it does not support Kubernetes. So I would say it belonged a bit to the old world instead of the new one. And yeah, I think we have a lot of questions, but maybe we can continue with the demo and I'll get some of these at the end. So we saw that we have our job defined. It's going to run a container from this image, allocate one GPU on this namespace and then train my deep learning model. So how do I run my job? I can go and clear the screen. I'm going to run the kubectl, apply dash F to say the file, and then I'm going to say I want to apply this YAML file.  And so I can go and then run kubectl get jobs dash N for namespace on team A. And I see that job one was created 14 seconds ago and it didn't complete yet. And this is expected because this job can run for a couple of hours. So it started, but it didn't complete. Now a job in Kubernetes behind the scenes also runs a pod. So a pod is like the smallest entity in Kubernetes that will go and actually run a container. So if we go and run kubectl get pods in the teammate namespace, sorry, we would see that we have one pod running. Okay, so this job job one created a pod for us and this pod is in running state and it's running for 47 seconds. And I can go now and run the kubectl logs. Oh, you know what? Let's first describe this pod. So we see what's happening here. So I can run describe pod and the pod name. And I can see that you see both the limit and the request are set to one GPU. I see that it successfully pulled the quick start image. It's going to schedule it on this worker node on this GPU 3D worker node and the container was created and it already started, right? So I can then go and we can now go and look at the logs of this pod. So let's just get the name of the pod again. Get pod because it has like a random name here. I can then run the kubectl logs and pod name then dash n team A and I can add the dash F for follow. This will follow the logs as they run. So this shows me that indeed my model is now being trained. So these things that you see here, the losses, this is what happens when you train a neural network, a deep learning model. It will go and try to guess what should be the correct answer for each of these images and then it will go and correct itself. So we should see that the accuracy is getting higher and at the end of the day, it has a lot of steps and different epochs and it will eventually just finish. Once it finishes training on all of the dataset. So this can now stay running and have a few cool things about jobs. We saw that we created a job and the job created a pod. Kubernetes for jobs does have some kind of auto recovery mechanism out of the box. So if I go and wait, let's go and see the pod again. If I go and I'll try to delete this pod and this is in the team, a namespace, this will delete the pod, but it will not delete the job. So the job will still stay up and it will see that the pod was deleted and it will then automatically create a new pod for me. So this is good because sometimes you would have, if you want to run on spot instances or maybe there is some reboot on the node or something happened, then Kubernetes will make sure to spin up a new pod instead. So it has this capability. The job is you can look at it as like the manager of the pods. And so we were able to run a job. We saw that it started training and it's used one GPU and you see if now we run the get pods again, we now have a different pod name. And this is now is running for 10 seconds. So this is the auto recovery that I told you about. If we want to completely delete this whole activity, we should delete the job. So we can go and run kubectl delete job, then it's called job one. And once I delete the job, indeed, if I look at the get pods, I won't see this one is terminating and then we won't see any new pods. And this will now be deleted. And if I look at the get jobs, yeah, I won't see a job anymore. And so we saw that it's possible, right? You can train a deep learning model on Kubernetes. You can use GPUs, right? And you can have a separation between teams. You can give different quotas to each namespace, assign different users to each namespace, and then make sure that you don't have starvation between the teams. So this is what works, right? Now let's see what doesn't really work. So, and somebody here mentioned Slarmy previously. So this can be relevant and interesting. So going back to where we are, we looked at the demo. So what's missing, right? We saw what's working, now what's missing. And so this is interesting. This is a graph that we got from a real customers of ours. It's an automotive company in the UK. And this shows the usage of GPUs for multiple data scientists in the organization across 24 days. And what you can see here is very interesting because you can see that user one for a few days didn't use any GPUs. Then suddenly he wanted to use about 16 or 17 GPUs. Then the day after he used like five or six, then he used like two for the rest of the time period. While user two started with zero, then it used about 17 or 18, then again went completely to like two or one GPUs. And you see that the patterns are very different. Like this guy didn't run anything for like three weeks and only then he started using, but using much more GPUs, right? Using like 22 GPUs. So the point here is that with Kubernetes, it only provides a way to give static allocations of GPUs. You can set a static limit for the namespace of using two GPUs or three GPUs or whatever. And then each user can then, when he defines the job, ask for how many GPUs he wants. But this is not good enough because these static allocations does not really make the researchers productive because let's say one day, we have one user that wants to use more GPUs and the other user is not currently using any. Why not give this user all of the GPUs in the cluster?  Second of all, he has a model that he wants to train and he can't. He can't get more than what was assigned to him, right? And just to see that indeed this is clear, if we go and now let's go and edit this job YAML again, and let's see what happens if we try to run on two GPUs because currently, we deleted the job, no jobs are running on the cluster and we have two GPUs in each node. So I want this guy from TMA to run a job on two GPUs. So I can go and run the kubectl apply on this AI train job. And the job was created, right? So if I run the kubectl get jobs, I should see it here. Okay. And it didn't complete yet, obviously. But now let's see the pods in this namespace. And we see that there are no pods, right? And let's see why. Let's describe this job one. I'm going to describe the job, job and then job one. And I will see here in the events, you see that the container didn't start. Why? Because we exceeded the quota, right? We asked for two GPUs. However, we are limited to using only one for this namespace. And this is a shame because there are free GPUs in the cluster. But the configuration in Kubernetes does not let me use more than what I were originally assigned with. It won't look and see that currently there are more idle GPUs in the cluster. So we would just let you use more. So this is one of the main limitations. But let's go back to where was that? Okay. Too much to the slide. So we saw that the patterns are very different. And like you understand by now, Kubernetes is the de facto standard for container orchestration. But it lacks a lot of capabilities for AI and deep learning. For example, automatic queuing and dequeuing, managing multiple queues, some fairness scheduling algorithms, setting priorities and policies, preemption of jobs. So what does these things mean? It means that ideally what we would want to achieve is to set priorities for different users based on who we think is more important. And we want to make sure he gets more GPUs. But then let's say if the cluster is currently empty and even if somebody has a lower priority, why not just let him use all of the GPUs? But if suddenly somebody with a higher priority goes and tries to use and allocate GPUs, then we will see that this guy has a higher priority and we would like our scheduler to automatically preempt a job of the guy that has a lower priority and allow the new job of the guy that has a higher priority to run instead and use GPUs. We want something more intelligent that will help us utilize these very expensive resources better. And these things does not come with the default Kubernetes scheduler. So for a bit deeper into Kubernetes, Kubernetes comes with a built-in component called CubeScheduler. And this is the scheduler that is in charge of scheduling pods on nodes. So this scheduler, based on the definition of the pod or a job, it would see if the job is requesting, let's say one GPU. It will look for a node that has a free GPU and then will schedule it on it. But it does not have this automatic queuing and dequeuing. It cannot manage multiple queues. It does not provide you a fairness algorithm to make sure that the researchers fairly use the GPUs in the cluster. So just to dive a bit deeper into this and explain Kubernetes, again, it was not designed for this. It was not built for running deep learning train jobs. It was built for deploying microservices. So it's just not what it was meant for. However, containers obviously provide a large advantage and obviously is very good also for AI and deep learning. And we saw that all the AI and deep learning popular frameworks are all adopting containers and it's great. Like researchers like using containers, it helps them easily run their jobs and make sure that they will run exactly the same way on their local environment, on maybe some cloud cluster, some on-premise cluster. So it has this portability. It's very easy and quick to spin them up. So they want to use containers and Kubernetes is the best container orchestration, but again, it was not designed for this. So what does it mean scale out or not scale up? So scale out, it means that Kubernetes was designed for deploying microservices and making sure that these services stay up and alive and they can easily scale and they can then support requests of users. But it was not, it does not scale up, scale up systems. They enable workloads that require a lot of resources and sometimes distributed resources to coexist and efficiently, some of them might want to use fewer resources, some of them might want to use a bigger group of resources and it does not build for this. So to go a bit into detail, what's missing and something called beanpacking and consolidation. So Kubernetes doesn't currently take care of that, but we would want to make sure, because we know that some researchers might run very large job that will ask for a lot of resources and some other researchers might run smaller jobs that will ask for less resources. We would want some beanpacking algorithm to make sure that, let's say I have a node with two GPUs two nodes with two GPUs each, like we had in our case and somebody asks for one GPU and then another guy asks for one GPU. It's better to schedule both of these jobs on the same node to free up the other node. And then if suddenly comes up a larger job that asks for two GPUs, it will be able to run where if you don't have any beanpacking and Kubernetes would just do this randomly, it can schedule the first job on the first node and the other job on the other node and then we won't have two GPUs available. We only have one GPU available here and another one here. So this has been packing. Another thing is, this also relates to backfield scheduling also elasticity. So sometimes as researchers or as data scientists, if you have more resources, a lot of more GPUs available, that's great. Maybe your model can run faster and it will finish faster. But you don't want your job to just wait in the queue until 10 GPUs are freed up. You want to say, okay, if currently there are only five GPUs available, no problem, start my job on five GPUs and let it expand and shrink based on the availability in the cluster. Kubernetes does not provide this elasticity. Another thing is gang scheduling. So sometimes because we might have multiple nodes and we don't have and we have a limited number of GPUs on each node, let's say we have two nodes with two GPUs each and somebody wants to run a job with that ask for four GPUs, then you can just run one container and use four GPUs because each node has only two. But there is a concept called gang scheduling or distributed training and that again, Kubernetes does not really support out of the box. But ideally we would like Kubernetes to help us schedule multiple containers, each container on each node and then each container will utilize GPUs on the node that it's running on. And we would want Kubernetes to make sure that these containers are starting together then ending together. We want to aggregate the logs and results. So these are things that are required for deep learning but are not available with Kubernetes. And the second challenge is scheduling for batch jobs. And so again, batch jobs is the concept of like we talked about before, we want a job to run to completion. We don't want to run a deployment or a pod that will just run forever in the background. So yeah, Kubernetes does have the job resource and we used it and it's nice. It has this auto recovery mechanism and it does free up the resources upon completion but it does not allow you to queue and launch when resources become available in an intelligent way and manage multiple queues. And you can set fair share policies and priorities and decide which jobs we wait in the queues and which job we start instead. And lastly, there is another concept called topology awareness and this can also affect the performance of our jobs. We talked about GPUs but obviously these nodes they have both GPUs and CPUs. And for deep learning some workloads and even in the same workload, at the beginning you might need to do some data processing or something that does not require GPU. This will run on CPU. Then for the training itself, it will run faster if you have a GPU. And there are some internal topologies within a node also in a cluster and like with internal communication. And if your scheduler is aware of these topologies it can make sure to schedule your jobs considering this topology and then make sure that the performance would be best. So these are all concepts that they came from the HPC world high-performance computing. We also need them in AI and deep learning and Kubernetes does not provide all of these things out of the box. What we did and I didn't talk about run AI but run AI we actually built a platform for managing AI workloads on GPUs on Kubernetes. So we actually we built our own Kubernetes scheduler. So we said you have the kube scheduler which is the default scheduler of Kubernetes which is what you have in default with every Kubernetes cluster when you install. We created our own Kubernetes scheduler that can be installed next to the default scheduler and it provides these HPC concepts to Kubernetes. So managing multiple queues, managing priorities, topology awareness, preemption, fairness algorithms all of these things specifically for deep learning and AI we provide them on top of Kubernetes. So if you're interested of course you can go and check this out and read a bit more about run AI. But I hope that this was helpful and you have some better understanding on what you can do with the default scheduler of Kubernetes and what you can't. Let's see, I have some other questions here that we didn't get to yet. So there's a question about what's the difference between run AI community version and enterprise version. We don't have a community version. Run AI is a commercial platform and it does not have a free version. However, if this sounds interesting for you, Gian, then we can reach out and we can discuss and tailor a plan for your needs. Another question from an anonymous attendee is the entire GPU assigned to a pod for the duration of the pod's runtime? What if your job does not need a whole GPU? This is actually a very good question. So this is also something that we didn't discuss but Kubernetes does not allow you to fraction a GPU. So with CPUs you can ask for less than one CPU. But with GPUs in Kubernetes, you can only ask for whole GPUs. And for people who are familiar with GPUs, GPUs are sometimes very, very, very powerful. And sometimes you would have specific workloads that don't really need all of this compute power and all of the GPU memory. So with default Kubernetes, you can only allocate the full GPU to a workload and then your workload might utilize only 10% of this GPU or 15% and that's it.  With Run AI, we, by the way, do provide a way to fractionalize GPUs and then run jobs on fractions of GPUs. And this can also help you get better utilization. Another question here from Mohamed, do you know any container for CUDA 11? So definitely there's a lot of containers for CUDA 11 and you can go maybe, yeah, we have a few more minutes. I'll just show you if you go, I recommend either go to NVIDIA NGC. Yeah. And or just go to Docker Hub. And then you can look for, let's say you want to use TensorFlow or you want to use PyTorch. You can just search for the image that you want to use. Let's say I look at TensorFlow and then at the tags, you would see the version of TensorFlow and this correlates with some version of CUDA. So I don't know if it would say it here. It will say it in Docker Hub for sure. So if you go to Docker Hub and you search for say TensorFlow, then you will see that if I look at the tags, where is that? Yeah, it should say that, yeah, and you see some of these images are built in with support for GPUs. Some of these already have Python 3 on them. It should also, yeah, of course. But anyways, yeah, you should have different versions of CUDA. You can just search for NVIDIA CUDA and then here in the tags, you would see CUDA 11.4, CUDA 10.2. So you can use any version that you want. You can start with this as a base image. If you remember, we looked at our Docker file. So here I'm using CUDA 10.0, but you can just use the base image as NVIDIA CUDA 11 or 11.3 or 11.4. And then in going install any of your frameworks and dependencies. How about using Kubernetes operators? So this is also something that we actually do in run AI. Our installation is using an operator, but we created some CRDs, so custom resource definitions for Kubernetes. So for example, in the demo today, we saw the default Kubernetes job, which is available for any installation of Kubernetes. We created a new resource, a custom resource definition called run AI job that provides additional capabilities for, I don't know if people here are familiar with it, but for something called HPO, hyperparameter optimization, as well as distributed training. So this is also using operators and CRDs. And yeah, I think we answered the questions. If anybody has any additional questions, I see that the YouTube channel for the Linux Foundation was also posted on the Q&A. You should be able to go and grab it. And I pasted the GitHub repository so you can go ahead and clone it or fork it and play around with it. And yeah, if there are any other questions, feel free. And this is the time. If not, then I guess we can wrap up. Okay, great. Thank you so much, Guy, for your time today. And thank you to everyone for joining us. As a reminder, as Guy just said, this recording will be on the Linux Foundation's YouTube page later today. So you can check back if you want to review it or send it out to other folks. So we hope that you will join us for future webinars. Thank you so much again and have a wonderful day. Thank you guys for joining.


Hey everybody, Mr. Sandwich here, bringing you a look into one of the ways Canada's Wonderland can rescue a stuck coaster. On Friday, June 10th, Behemoth failed to complete its course and valied during a morning test run with no riders on board. When a train fails to complete the course, it usually ends up in a low section of the track or a valley. They call this valying, and while it's not ideal, it isn't unsafe as the coaster will simply gently roll to a stop. A lot of things can cause a coaster to valy, but ultimately it all boils down to energy, and an empty train on a cool morning before the sun has been on the track or the train wheels have warmed up can sometimes be a recipe for something like this. It's fairly rare at Wonderland, so we were lucky to be able to record this for you. This 40-ton sliding rotating boom truck was brought in to get the job done, but most of the work involved getting everything set up. Wonderland maintenance had to attach a pulley to one of the helix supports using a sling, and then chain another pulley to the track on the mid-course. From there, they were able to get the right angle on the train to start pulling very slowly. On the video here, the movement is way more obvious, but in person there were times when we weren't sure if it had stopped. You can see here they use chains and hooks to hold the train in place when they need to release tension on the winch. The truck had to reposition further up the road to finish the lift. Finally, we see the train at the top of the mid-course, held there under the power of the ride brakes and the rigging can start to come down. At this point, we didn't know if we would get to see Behemoth's lost train make it home, but just as we were starting to talk about going back inside the park, we got a hauler from the boom truck operator, and Behemoth was off and moving. A bit slowly, so I sped this up. And with that, the train has been rescued, and it can make its way back into the station with the long job finally complete. If you liked this video, don't forget to leave a like and subscribe if you aren't already. And if you have any questions about the process that weren't answered here, ask them in the comments and we'll try to answer any we can. Thanks for watching, see you next time.


Hi, my name is Tracy Takama-Spinoza. I'd like to give you a brief synopsis of my new book, Making Classrooms Better, 50 Practical Applications of Mind, Brain, Education, and Science. And we do this with a backdrop of some other research or previous research that I've done trying to ground our teaching practice in better information from neuroscience as well as psychology. This means trying to improve teaching by nurturing our practice from other disciplines. What we want to try to do today is to look at this in three different pieces. First, we're going to start off by having a look at how and why teaching practices have actually changed in great part due to technology that's given us better insights about the brain. And then combine that with information from better educational research. Then we're going to have a look at the mind-bin education field itself and then how that combines to actually change our teaching practices. Finally, we're going to have a look at the 50 best practices or changes that we can make in our classroom that would actually have a greater impact on student learning outcomes. As we start this, the first piece then has to do with actually better knowledge about the brain. The improvements in technology have been amazing over the past 20 years.  All of these different ideas have now been found to be actually just myths. And we still unfortunately have a lot of these drawings flowing around in public and they do mislead teachers because they're not really sure what kind of information is really true. What they should be looking for what we as teachers need to be looking for is actually better information. Now thanks to wonderful tomography we're able to actually see the brain. So we have better insights as to how different reasons of the brain are receiving blood flow during different types of learning experiences or we can do 3D renderings of brain processing. And then we can actually what is really going out of all of this is showing us that there's not just one little piece of your brain that's responsible for reading or writing or math or spatial abilities or creativity or whatever we're actually being able to now connect and see how these things are actually networks in the brain. So the new information that we have we're going from these old drawings to actually trying to do replicas of connections and modeling to actually being able to map the way that synapses are occurring in the brain and which networks are actually being linked to which pieces of the brain are connected to other pieces when we are in the learning process. And this has actually changed a great deal. It changed the way that we're looking at learning because we're appreciating the more complex processes in the learning process as well as the sub elements for example in reading.  And we're seeing now those things actually relate to distinct learning processes or methodologies. There are things that we do in the classroom will actually have an impact on certain networks and not on others. So it's really important for teachers to become aware of how changes in technology are actually going to change our teaching practice. They're benefited by new changes in educational research. What we've found now is that there's a lot more good, high quality longitudinal studies which compare age-related learning processes as well as international comparative studies. So we're not just looking at what happens in the states but we can actually now almost begin and this is just beginning but to we depart things that are universals that are true for all human beings versus things that are actually very highly culturally bound in learning context. And we've also now, thanks to work by John Hattie, come up with some methodological comparative skills so we can actually compare studies that were done in one context with another to see which of those actually has the best impact on student learning outcomes. John Hattie then has been one of the leading forces in this in educational research to actually be able to come up with some comparative data that helps us as teachers now make big decisions in our own classrooms. Now that we know more about the ring, now that we know more about how people are aware of what is more important then how would we prioritize that in our classrooms. One of the things that he found which is really key is that he was able to identify at least 150 different influences on student learning outcomes which ranged from the obvious things of being low birth weight or poor health in the early years to summer vacation impact on student learning, television as well as several teaching interventions the role of the home. And of those 150 if you take a close look at them you can find that 47 of those are things that teachers can have a direct impact on. So what I did is take those 47 areas and divided them into 10 kind of groupings and these include students self-efficacy reinforcement learning knowing students well as teachers as a personality seen by the students thinking about thinking, helping students develop metacognitive awareness self-improvement, clear objectives group learning, managing and the way that we run certain activities in the class. So when we look at those piece by piece it actually gives us a clear indication of the types of things that we as teachers need to be doing now slightly differently or more or improving in our classroom situations. These 47 things are laid out in my book in the appendix and they are related to how these affect sizes. He basically found that things that are just sitting in the classroom you're going to learn. So there's got to be better than that. So he found basically after a point four affect size is really where we want to be working on. So there's only a handful of things that actually decrease student achievement and those include things like summer vacation and television things that students would do without school versus things about just sitting in a classroom and maturing over the school year as well as the minimum things that teachers can do organizing lessons in an orderly way and so on. But here in the zone of desired effects are really where we want to be. These are the things that teachers can do or change that actually have a greater influence on student learning outcomes than others. And if we look at these things there are some things that are actually counterintuitive because if they're grouped they can be grouped into things that are related to certain actors or influences. For example how does the school like the size of the school the size of classes influence learning or parents versus as well as their home environment the teacher themselves as a personality or the student or influences of the administration curriculum or the way that we teach. If I were to ask you to put these into a rank order very very often teachers mistakenly list things that are not as important as first. It's pretty much natural given the old information we used to have. But given this list if I were to ask you to put it in the correct order many teachers still place or believe very strongly that the role of parents or the home overrides their influence. What's very interesting to note is that due to the time that students spend with us and the direct objective of school the whole goal of school is to actually learn it means that the student learning objectives or student learning outcomes are actually more highly influenced by the teacher and teaching than they are by the home. Number one by far is a student's own self reception as a learner. However if you think about it students think they can learn if and now who makes the student feel that way that doesn't just come out of nowhere. In fact it comes from the teacher. If a teacher believes in a student or if the teacher believes in him then there's a greater likelihood of success. So these are things that are really important to keep in mind because it actually makes us own a lot more of the processes as teachers.  Right now we have to sort of take that back to our own. You know this is our job. These are our kids and actually we do have a bigger influence than we think on their learning outcomes. So what does this mean for changes in education? This is not a slight influence but it's actually very interesting to note that more impetus for modifications in education have come from the 21st century skills learning movement. Now why is this?  The way we do banking is different and we even elect officials in the different ways we can tweak them into the government. Our supermarkets are totally different but one of the things that's really distressful is that our schools have not kept up with other social institutions even though individual human beings will spend more time in that social institution than before at the time of their 30 years old. So it's really important that we take a look at these things. Unfortunately one of these is in 1910 and the other is in 2010. But guess what? No, they are both in 2010. These were taken in Michigan and Illinois. So what do we have to do? We can either try very slowly to sort of catch up or we can really take some bold steps and actually change some significant things about our teaching practices and what goes on in our schools as well as in our own general life that can make a difference in the way students learn. So one thing that we have to take into consideration and is that there's at least four huge points of change that have happened globally. We've gone from the focus of desiring just equal access. Everybody gets into school to equal quality mainly because most of the OECD countries, most of the well-off countries in the world have already really dominated this minimum objective. So everybody gets into school but now we need to worry about quality education. We're moving away from this idea of teaching in silos. You teach your math class and you teach your history class and we do these things in separate rooms and separate times of day to actually looking towards a greater transdisciplinary integration of skills. Why is that? Because most of the world's problems are more transdisciplinary. They're not just located or isolated to a specific subject area. We've also made this change now from helping our students pass a class to trying to develop lifelong learners. And we've also tried to move from traditional resources like general textbooks to better technology integration. And these things have changed the way that we're really looking at teaching now. Sorry there's a fifth here. We also are now moving very much from instead of just focusing on the individual or betterment of the individual we're looking now towards enhanced collaboration, cooperation, communication, cultural awareness better understanding of communities, greater contextual application of information. So this is moving slightly from the group gets better when the individual gets better obviously. But the idea now is that the world is so interconnected that we have to be able to learn to work together. This general idea of 1 plus 1 is 3 You know I might have a good idea, you might have a good idea, but the minute we join those we can probably have something better than any one of us would have come up by ourselves. So the idea is a focus of general education. The goals are actually changing. So what does all this mean? This means that what are we looking for at the end of the day? If we're going to put through kids through general, formal education what should be our overall goal? And this is really important because depending on our goal we change the way we measure things and based on how we measure things we also will change the activities we do in our classroom. So the first step is coming to an agreement about the type of goal or what is our outcome? What is it we're looking for at the end of the day when we finish formal education? And hopefully we're looking at critical creative thinkers people that look towards lifelong application of their skills. In PISA they look at general competencies, people who are able to identify problems for themselves and use tools to be able to resolve those. People who can work with others and self-starters, people who are autonomous. This leads to people who know how to work with other groups, people who are different than themselves, but that they can be creative and innovative as well and that they're independent they're self-motivated, they show initiative, they're problem solvers and they also understand how and appreciate complexity and problems in the world as well as being able to apply and use technology in a creative way. This leads to, we hope, lifelong learners. These are skills that we're not just wanting them to learn in the school context for school, but hopefully we are helping them cultivate a way of life that they will be able to actually apply this in any job that they might take in the future. This is actually using Wiggins and McTay's design idea. What is the desired result? I'd have to say that we're looking for somebody who is a critical creative thinker and a lifelong learner. How can we measure that? That's a lot more complex than we're used to doing in schools and especially with standardized tests, but then what do we actually do in the classroom? So if all of those pieces come together now if we're going to mix the information we have about the brain, information about changes in these priorities and education and actually information about what we know changes student learning outcomes. This is going to lead us to a different kind of a model. So I want to invite you to consider yourselves if you're teachers to where this had to be a learning scientist.  I'm somebody who actually, instead of just, you know, has some general pedagogical skills or general didactic abilities, you know, sitting on my podium here and imparting knowledge that basically I need to now as a professional nurture myself with information from psychology and neuroscience from the biological sciences because learning sciences are much more complex than we're used to in our own field. However, it's something that's become a necessity based on the new goals that we have for formal education. So in my own personal experience started off as a PhD dissertation. It turned into a basic book by Columbia University Teachers Scholars Press that has to do with the new science of teaching and learning. The screw into a deeper historical review of where mind brain education science came from to now actually a practical application of this. Just most recently I've had the wonderful honor of being on an expert panel on the OECD to help look at or reconsider this idea of teachers' new pedagogical knowledge now that it's nurtured by neuroscience and technology. If you want more information about the general development of the mind brain education field there's a lecture that's shared here that I hope you'll have a chance to have a look at. But we're not going to go into those details in this particular presentation. What we really want to actually look at is a clear understanding. What are the basics that teachers need to know about brains? Leslie Hart said several years ago that designing education experiences without an understanding of the brain and designing a globe without understanding the hand if the brain is the organ of all of our learning then it's something and teachers that's our profession we need to know more about the brain than we actually do right now. This means that taking general educational practices now turns into adding cognitive neuroscience information as well as educational psychology to yield a better foundation upon which we need to begin our interventions in the classroom. And this is harder. It definitely is harder. It's a lot more professional it's a lot more science grounded but it's actually because of this evidence based angle it's a lot more easy to defend our practice. It's just not the gut feeling with what I want to do with Johnny tomorrow in the classroom but it's because I can ground my interventions in evidence and this is very very important I think for re-establishing or giving more value to the teaching profession which I happen to believe is the most important profession in society so hopefully we're able to build ourselves up or build up our practice with better evidence. This means that we can have mind brain education scientists who are teachers or who are psychologists or who are neuroscientists and this is actually a wonderful new field there's a great coordination of efforts now between teachers as well as neuroscientists and psychologists to try to to better the teaching field this doesn't mean that if you know this kind of things still scare you off alright you know you can still work as a purist there are still just teachers and just neuroscientists and just psychologists out there. The main takeaway here is that interventions in our classroom that are supported from all three fields if there's evidence that says this is a great way to teach not only because we say that in pedagogy but we also say that in psychology and also say that in neuroscience and there's studies to back that that just gives us more credibility so I would say that you can be a purist if you want however intervention in the classroom should have support from all three fields if we actually are going to apply them. This comes at a time which is kind of tremendous you know over the past hundred twenty five hundred thirty years of psychology and education studies we've learned a lot about how the brain learns and we have not learned a whole lot about how to teach to take advantage of how the brain learns and that is the biggest challenge of teaching these days. This means that we have a lot of changes that are coming up and these are pushed by actually just history. We've spent a long time trying to figure out the best way to teach and there's an awful lot of books out there that sort of sell you ideas of quick fixes to the classroom or teaching for dummies or whatever it is and that's not the way to go. I mean it's complicated education is complicated the brain is complicated, learning is complicated each kid is a universe to themselves I mean we have to accept and celebrate the fact that we're going to have people with a huge range of abilities in our class and that's life that's humanity and that's our responsibility so we have to improve our practice with more information from the hard sciences in order to actually have better interventions in the classroom. So this means though before there's these traditional ideas that okay we are waiting to be enlightened by the neuroscientists we used to do that, we used to wait and I've gone to many teacher conferences where a neuroscientist will come in and share their knowledge and everybody's just waiting to hear the word from on high now the practice is different we've got to flip this around a bit now we're looking towards the classroom, it goes from the classroom to the labs and back to the classroom again and we inform each other teachers inform neuroscientists mutually and psychologists usually broker those interventions but there are now more interventions that are occurring thanks to collaboration between neuroscience and educators so hopefully we can find support in each other as opposed to neuroscientists inventing things that they think might be interesting to study actually grounding them in real problems that we have in the classroom and instead of teachers just waiting for the answers from neuroscientists we should be in partnership with them to actually develop better interventions based on real life practice and on real science so in summary what does this mean? We're looking at a mixture of what is mind brain education science mixed with the ideas of better educational interventions from Hattie's work primarily and then looking at this as teacher development across a life span this is not a quick fix this is not something you do in a single workshop this is something that is a lifelong practice of improvement so you might be introduced to a very cool concept and throughout your teacher span or your professional development span you're going to go and get deeper and deeper into that concept as you go along so we know that there's different stages of professional development we know that teachers as professionals are modifying their practice continually but we'd like to put some logic into that you know how do you go about doing what what's more basic than something else so that's the idea here is that we're basically proposing that we marry a couple of concepts that before were not connected and look at them in the best way possible to improve our practice as teachers this means that by using the foundations from mind brain education science we actually can try first to get rid of the myths that teachers are exposed to about the brain and then look up things that are actually principles which are things that are pretty much universal for all human brains there's very few of them for example all new learning passes through the filter of old experience so that's true for any brain you know a newborn baby to an older adult so there's a few things that are principles and then there's other things that are tenets which are things that are also true but that they vary greatly for humans for example nobody will argue that for example sleep is important for learning we know that as well as dreaming sleep helps us pay attention dreaming helps us consolidate memories but nobody can really dictate how much sleep you should have some people sleep 5 hours a day and some people sleep 12 and the average might be 8 but there's a wide range of human variants so we can't really say how much you should sleep even though we can say that sleep is very important so anyways if we look at those things then we can actually feed into certain instructional guidelines so this is what we want to look at today are some of the practical applications of this information in your classroom we'll take a look next at looking at the 50 practical applications of mind brain education science


Everybody forced here ripping 21 22 mosaic basketball hobby 4 box number 37 picker team style Got Aaron S. Jazz Aki W with the Celtics Antonio P bulls Bernie with the Nuggets Pacers heat wizards Brandon D. Blazers Brian C. Hornets Chunwei Warriors Daniel K. Pistons Daniel M. Timberwolves David V. Has the thunder Frederick B. Cavs Rockets Harper with the Magic Jacob B Raptors J. R. W. Mavericks Jinxon with the Hawks Joel B. Clippers Spurge Joshua B. Lakers Kosuke Kings Lauren has the Sun's Michael Michael S. Has the Sixers pangency bucks Salman K. Nex Steve U Nets Vaughn has the Pelicans and Zach T as the Grizzlies Vaughn also has in his ordinal herb Jones herb Jones herb Jones herb Jones No tray Murphy for Vaughn for Vaughn just herb Jones apparently I Seem that it was really confused It's like I don't know who this herb Jones guy is Pelicans rookie from 2122 come on in Donnie All right, who is the number one pick and the 2022 NBA draft? Yes, you know number two was was it Thailand Chet Holmgren. Yeah, let's just say mosaic Yolkich for the Nuggets red mosaic Duncan Robinson heat Rising stars was a Kate Cunningham Pistons I wasn't sure if his name was like how it sound how a spell or if it was like some weird pronunciation But after that, I don't know Kate Cunningham base Cameron Thomas national pride Silver Finney Smith Mavericks red mosaic rookie Aaron Wiggins thunder Jalen Green national pride. We have a Charles Bassie rookie auto mosaic Philly some rookie Davion Mitchell national pride Kings a Purple mosaic Peyton Pritchard Celtics numbered 1 of 49 Celtics with a purple P P Kevin Durant overdrive for the Nets Cunningham Scotty Barnes base Silver drew holiday for the Bucks you got red mosaic who's my grubber rookie Rockets Wartey mosaic rookie Bassie for the Sixers. We've got red mosaic the Angela Russell Timberwolves Stair mashers mosaic Yana sent it a kumpo Bucks Who gets injured in the all-star game come on come on LeBron and Yannis. What are y'all doing out there? mosaic hero heat red Bogdanovich Hawks Julius Randall bronze Wagner debut Shengyun base for the Rockets Silver Terence man Clippers red mosaic RJ Barrett Nix Yeah, Tatum Brown. We're going against each other too for a bit mosaic Kyrie all-in-v-a for the Nets red rookie day run sharp Nets Silver rookie primo debut spurs blue mosaic rookie primo debut spurs 18 of 99 mosaic Bucks starting five mosaic Porzingis for the Wizards red mosaic Patty Mills for the Nets Introductions mosaic Franz Wagner box two Kade Cunningham debut Silver rookie Bant and Raptors red mosaic Derek White for the Celtics mosaic Dwight Howard Lakers red rookie Jalen Suggs magic bones Highland Got a falcundo compaso nuggets mosaic autograph there. There's some peeling on the Composal in the top. I'm gonna send a box and wrapper with this one Silver City Bay Pistons red Cameron Payne for the Suns Overdrive Devin Booker Suns Yo, you what's up, man? You sign up for Thursday the cup Silver wheel Barton nuggets red mosaic Bogdanovic for the or I'm sorry Marjanovic for the Mavericks obon starting five Clippers they're starting my looks a lot different now than this one right here. Let's see this one It's a scoop Paul George Marcus Morris Kawai and Zubak. I guess maybe not that much different You sign it for a upper deck the cup on Thursday Mosaic rookie Trey Murphy the third debut for the Pelicans red rookie debut shengun Rockets Mosaic go bear jazz red mosaic Lebron James natural pride Lakers. Yeah, don't you like hockey? It's like breaking hockey. Are you not as big into the hockey as a All your other buds It's Wagner debut Silver rookie debut for the okay warriors there coming up red Lando bubbles then disregard yogi disregard Masterworks coming up in a bit though Masterworks in March mosaic Al Horford Celtics read quickly for the Knicks John Moran Gotcha, yogi Now the cup comes out Thursday. It's like the highest end hockey product that upper deck puts out every year It's like if exquisite was hockey essentially Ricky mosaic Josh Christopher Rockets red Matisse Thible Sixers Rising stars mosaic Jalen Suggs for the magic, but it's from 21 It's 2021 the cup so two two yeah two years after that season long-awaited silver Harrison Barnes Kings purple Utah Watanabe Raptors Seven of 49 nice Carl. So when there was like a championship parade for like the city because there's never been one on a Lando Does everybody just get like a day off for the most part Is that how it works when it's when a team when it's when a city wins a championship Silver 49 Knicks got a red Christian Wood Rockets Mowbly debut mosaic Al Horford red Nick Claxton for the Nets Chris Paul Stairmasters Celtics Nate Archibald mosaic Otto you see silver Jalen Brown Celtics Red rookie Duarte Pacers debut Swagger Josh Gitty Thunder rookie insert You're not wrong. You're not wrong Silver D'Angelo Russell T Wolves red Nassir little Blazers and Street fire Kate Cunningham pistons Half Rolando wouldn't even know that the magic one the magic one a championship Like why is traffic even worse today? Spurs Primo rookie mosaic red rookie Greg Brown the third with the Blazers The Rolando what what is basketball? The Rolando magics they're still in Orlando, that's good during the magics That's the column your shame was a got red a Chua Raptors rising stars mosaic sixers Tyrese Maxi giddy base Kaminga base silver canard Clippers red mosaic is the sumu debut for the Bulls Wagner base Cam Thomas base mosaic rookie Jared Allen cat or not rookie, but mosaic Jared Allen calves red Terrence Ross magic Moments Deandre Aitin. Oh, yeah for sure Vaughn and then by like the third Kings probably like the second Kings Cup they were like Okay, so they they play it on ice. Huh got mosaic LeBron James natural pride Lakers red Isaiah Stewart pistons Yeah, but like the second time the Kings wanted there. Oh, okay. I kind of see what you're saying. They play Where did they even play? Oh where the Lakers play? I know the Lakers silver rookie Grimes for the Knicks Blue mosaic Terrence man Clippers number 96 of 99 guys last box of number 37 here Although once the magic get good again a lot of like a lot of our land was a big fair where they're fan type of place So we're gonna have like a lot of people ticket tickets will get way more expensive Once they're actually like good rookie silver national pride Jalen Suggs Red rookie Corey Kispert wizards, you know start talking about the passion here. Oh, yeah, you know last time I went to a magic playoff game Nicola Vucevich was on the team that'd be like who? Was a Terrence Ross magic red Gary Trent jr. Raptors Was a Steph Curry Warriors got a rookie auto train Murphy the third for the Pelicans. There you go Vaughan Silver Conley jazz red Middleton bucks Starting five Kings Probably most of them Vaughan probably most of them Keon Johnson, Greg Brown National pride rookie mosaic Davion Mitchell Kings red rookie Davion Mitchell national pride There you go Kings Rising star mosaic rising stars was Agus Franz Wagner Jalen Green base Mowgli base Barnes national pride white mosaic coming up after silver Boba magic White mosaic DeMar DeRose and bulls numbered 4 of 25 Good stuff there for Chicago Moses Moody Mosaic Bam out of bio for the heat red PJ Tucker heat Yolk each montage there Mowgli national pride giddy debut Silver rookie Kaminga debut for the Warriors red Clippers Reggie Jackson. So are you a magic fan Donnie?  No, I think I'm gonna go deep all calves.  Yeah Mosaic Lonnie Walker red Kyrie or not. Are you but Kawai Leonard for the Clippers all NBA? Really calves are a solid bandwagon team Donnie's just jumping on the Guardians and the yeah Cleveland except the Browns basically yeah pretty much Silver Miles Turner Pacers red Kenny Martin Jr. Rockets Overdrive, you know, it's not that a couple of bucks Yeah, Kev's good choice. They're definitely gonna be a like they're a pretty good team and they're gonna be set up pretty well for the future These are the next few years Scotty Barnes mosaic book night rookie Hornets red Claxton Nets Introductions debut on Mitchell. You're only Kaz Banner. We thought you were a Sixers fan illegal See that's another one that I could potentially go on but not Yeah, it's either jump on a team. That's in one of the cities. You're a fan of or the one where you're kind of from. Yeah I guess that's the logical choice either a good Sixers are good cabs are good. So Sixers will be my backup Real quick four autos here.  Thanks y'all


Hi friends so continuing with our session on polynomials in this session We are going to discuss what all types of polynomials are You know what a polynomial is if you are not clear on that I would suggest you can go back to our Playlist and just watch the previous session. You'll get to know what polynomials are now in this session We are going to discuss different types of polynomials basis their degree, right? You know the degree what is the degree of a polynomial degree of a polynomial is nothing, but the power of the highest Degree term right is a degree of the polynomial. So first category or first type is nothing but constant polynomial constant Constant polynomial. So as the name suggests as the name suggests constant polynomial is nothing but a polynomial of degree zero What is it? polynomial so it is a Polynomial polynomial of degree zero that means it is a constant Degree zero so for example examples are let us say FX FX equals to let's say 91 okay, or GT in variable is T. So let us say 42 all are degree zero terms Right degree zero terms. So hence the they are called constant polynomial okay now There is there is one one concept called zero polynomial. So in this constant polynomial if the value is zero zero poly zero polynomial Right, what is a zero polynomial? So if you if any polynomial is that their FX equals to let's say zero it's called a zero polynomial But the problem is the degree of this is not defined degree of a zero polynomial degree of a zero zero polynomial is Not defined is not is not defined Okay, it's not defined Why because because if you see zero polynomial can be written as zero times x to the power one this can equal to zero This can is this can be equal to zero into x to the power two or this can be zero into x to the power 99 or whatever Right, it's very difficult to find out then what will be the degree of zero polynomial So please remember zero polynomial degree is not defined Okay, this is one one case now second is second category is linear polynomial So you have studied about linear polynomials time and again linear Polynomials, what are linear polynomial polynomials? So let us say and we are again going to deal only with one variable So Px is equal to let us say 7x minus 5. This is a Linear polynomial y because if you see the highest term degree term is 7x whose degree is one similarly gt is equal to let us say minus root 2 e plus 47 so here also this is linear polynomial or H y is equal to 40 70 Oh, sorry. It cannot be in T. It is it has to be let's say y so 47 y these are all These are all examples of Linear polynomials and if you notice the maximum number of terms in linear polynomials could be two only right So one will be the term containing x and the other could be the constant term. So maximum number of max number of terms possible in a linear linear polynomial is two then comes your very famous quadratic quadratic polynomial So you already know Or even if you don't know quadratic polynomials are nothing but polynomials of degree 2 so example Px is equal to root 2 x square minus 3x plus 4. This is one then qx Let us say is equal to 7x square this is also another where the other two terms are not there and let us say G of x is equal to let us say 5x square minus 27x all are All are examples of quadratic polynomial guys now here if you see again maximum number of terms possible is 3 maximum number of terms Is nothing but 2 plus 1 quadratic degree is 2 plus 1 is 3 Right, this is another understanding similarly on similar lines You can you know there is something called cubic Now cubic is nothing but degree will be 3 Degree is 3 so example Px Is equal to 3x cube minus 27x square plus 90x minus 7 Or gt could be let us say 3t cube minus 27t Right or h of let us say y is equal to y root 2 y root 2 y cube and Let's say that's it. So all these are Degree 3 and again max number if you see max number of terms You can now guess very easily Is nothing but 3 plus 1 is equal to 4 max It need not be having four terms all the time For example, if you see here only one term is there, but still it is Cubic why because the highest term highest degree term is This 3 Okay. Similarly, there are you know, you can have end number of This thing for example, the next one is by quadratic By quadratic where you have would have guessed by now degrees 4 degrees 4 And then there are things like quintic and so on and so forth. These are so sixth one is quintic where the degree is 5 so you would have now known if degrees 4 max number of terms is max terms max number of terms will be nothing but 5 and in this case max number of max number of terms will be 6 Understood. So this is one Categorization of polynomials. So we saw what all constant polynomials We saw zero polynomial. We saw linear polynomials quadratic polynomial cubic by quadratic and quintic all these polynomials in themselves have different different properties and all these properties will be studied under polynomials, okay So we'll be taking up in this particular series of sessions we'll be taking up talking about constant polynomial We'll be talking about linear quadratic and then cubic right and then we'll see What is meant by their zeros and other related properties