Hello, people. My name is Sahil Dua. And today I'm going to talk about a very unique combination of two technical areas. One is deep learning, which is a special branch of machine learning. And then I'm going to talk about containers, something that almost all the cool kids these days have been talking about, including me. So I'm going to talk about how we productionize our deep learning models to be able to serve real-time predictions at a large scale using containers and Kubernetes. I hope I covered all the buzzwords. So before I begin, I would like to just get an idea about the audience. So can I see hands of people who have used deep learning? OK. And those who know what deep learning is. OK, quite a lot. That's nice. And the other side, those who have built apps which run in containers. OK, nice. OK. So what it's going to be about. I'm going to begin with the applications of deep learning that we saw at booking.com. Some of them. And then I'm going to talk about the lifecycle of a model from a data scientist point of view. What are the different phases of our model? And then I'm going to talk about the deep learning pipeline, the production pipeline, which we built using containers. So get excited. Let's start. First of all, yes, who I am. Who am I? I'm a backend developer working at booking.com in the deep learning infrastructure team. That's why I'm talking about this thing here. I'm also a machine learning enthusiast, which means I spend almost all of my free time, free geeky time on learning about machine learning and new different techniques coming up. And I'm a big open source fan.   I'm also a contributor in the Pandas Library, which is a Python library for data analysis.   And I'm a tech speaker. That's why I'm here on this stage today in front of all of you. Generally, I talk about topics varying from data analysis, deep learning, A-B testing, containers, when it is. So, yes, that's all about me. Let's begin with the applications of deeplearning at booking.com. But before that, I would like to talk about the scale because I mentioned at large scale what that scale means. So, we have over 1.2 million room nights booked every 24 hours across more than 1.3 million properties in more than 220 countries. Let me make one thing clear that I'm not here to show off the numbers. The point I'm making here is that at this large scale, we have access to huge amount of data that we can then utilize to improve the customer experience. So, let's see how we do that. The first application of deep learning that we saw was image tagging. And when we look at image, for example, this one, the question that arrives is, what do we see in this image? Now, this question is really easy one as well as a really difficult. So, if you ask this question to a person, to someone from this audience, it's going to be easy to say what's there in the image. It's easy to say what are the objects that are there in the image. But it's not an easy problem when you ask a machine to tell what is there in this image. And what makes this problem even harder is that the context matters. What you see in this image may not be what I want to see or I want the machine to detect. For example, if we pass this image through some of the publicly available neural networks, ImageNet or DenseNet, these are the results that we get. We get information like there is ocean view, there's nature, there is a building. Okay, that's good to know, there's a building. But what do we do with it? These are not the things that we are concerned about at booking. However, these are the things that we are concerned about. Is there a sea view from this particular room? Is there a balcony? Is there a bed? Is there a chair? Or things like that.  First challenge is that it's not image classification problem. It's an image tagging problem. That means every image is going to have or might have multiple tags. So it's not just like we classify it as something sea view or balcony. Every object is going to have multiple tags. And to top that, there is going to be a hierarchy of the tags. For example, if you see an image has a bed in it, we are almost sure that the image is going to be of inside view of the room. Unless you're in such a room where there is no bed, there is no room. So once we know what's there in an image, we can use this information to help the customer decide what they want. We can help them in deciding what kind of property, what kind of hotel or apartment they want to book if we have this information about all the images that we have for a particular hotel. Let's talk about another problem. So this is a classic recommendation problem where we have a user X. They booked a hotel Y. Now we have a new user Z. There's a debate if it's a Z or Z, but I'm going to stay with Z. So there is a user Z. We want to predict what hotel they are going to like. We basically want to recommend a hotel that they are going to like. So the objective we have is we want to find a probability of a particular user Z booking a particular hotel. And we have certain features like country or language of the user where they are coming from. We have contextual features like when they are looking for it, what's the day, what's the season? And then we have some information about the hotel, the item features, like what's the price, what's the location, is it near the beach? Does it have a pool or swimming pool or something like that? So I'm not going to go into details of this problem because I'm here to talk about the infrastructure part and I'm not going to do some point you. So research has shown that we can get better results for such a problem of recommendation system if we use deep neural networks instead of linear collaborative filtering. So once we figured out that there are going to be some certain applications of deep learning which may be really interesting for us as a business, we started exploring this field and thanks to my colleagues, Stas and Imra who are probably enjoying the rainy season back in Amsterdam, they started exploration of deep learning at booking and now these days we have some very cool deep learning models in production. So let's start talking about the life cycle of a model. What are the different phases? So there are three phases, code, train and deploy. In first phase, data scientists write their model, write the code for their model, try out different features, different kind of embeddings, different kind of interactions of different features and different architectures and once they know they are happy with the performance of the model, now they want to train their model on the production data. Once they are done with the training on production data, they want to deploy it so that it can be used by multiple clients. So we use TensorFlow, which is a nice machine learning framework by Google. We use its high level Python API to write our models because it really sort of standardizes the process of writing the model and helps get the prototypes quickly. Now these two parts, the last two parts, train on production data and deploy. These are the two parts that constitute our production pipeline, deep learning production pipeline that I've been talking about since the beginning of this talk. So you may argue why training of a model is a part of our production pipeline. That's a very valid question. You can also train your models on a laptop, right? But if you try to train your models on your laptop, you may end up looking like this, not really happy, right? So there are a couple of reasons. One is that sometimes your training data is so large that you can't really hold all of it in your memory on your laptop. And other more general reason is that your laptops are going to have limited resources like CPU cores, GPUs. In most of the cases, they're not going to have a lot of powerful GPUs to speed up the training. So if you want to speed up the training, you should train, you should not train on your laptop. And we'll see how we do that in production. So we have our big servers which have a lot of cores, CPU cores and a lot of powerful GPUs port. And what we do is we wrap our training script, we run them on our big servers. Problem solved, right? Not quite. So once we do this, there is a limitation with that. There are going to be multiple data scientists who are going to run their training at the same time, possibly on the same servers. So we might not be able to provide the independent environment that they might like to have. Plus if they want to use different version of TensorFlow, for example, we need to create some sort of independent environment for that particular training so that it defines what it wants to use. So that we don't really need to have global level dependencies or particular packages. So this is what we do. We wrap our training script in a container. So this yellow thing is, let's consider that as a container, that's the best I could draw. Not a designer. So we wrap our training script in a container, and then we run that container on our servers. So now what is a container? Container is a lightweight package of the software that contains all the dependencies that it needs to run.  So that enables us to package all the versions, all the particular versions that we want for our training, package that up, and ship it as a container. So that solves the problem of having multiple, different versions of multiple dependencies. And these containers can also utilize the GPU support that we might have on our servers, that you can just utilize whatever GPUs we have. So in a nutshell, this is how it looks like. We have our production data in Hadoop Storage that we want to use to train our model. We spawn up a new container every time we want to run a training. That container, again, has all the dependencies it needs, has a training script, and it takes the data from Hadoop Storage. Once it has the data, it runs the training. And now, while the model is being trained, we want to make sure that we can somehow save that model. We should be able to save the trained model so that we can utilize that later. We can deploy it somewhere. So we save the model checkpoints back to Hadoop Storage. Model checkpoints are like the model weights that are going to be, that are required to be able to load the model again at the deployment stage. Once we save the model checkpoints, the container dies. Yes, who can be more selfless than a container? It takes birth to do the work that you assigned, and then it dies. That's the entire life of a container. So once we have trained our model on production data, we have already covered one step of going into production. So next step is to use this model, the trained model, and put it in production so that people, not people, but different clients can use it to get the predictions back. So this is what we do. We have a simple Python app, which is a WSGISTP server. It takes the model weights that we just told in the last step from Hadoop Storage. It loads the model, no, no, no. Yes, that's weird. So it takes the model checkpoints from Hadoop Storage. It loads the model in memory, and it's ready to serve predictions. So let me cover it again. So to be able to serve predictions from a model, we need two things. We need model definition, which defines what are the features, what are the interactions, and all that stuff. And then we need to have the model weights that we gathered from the training. Once we combine both of these, we load the model in memory. It's a TensorFlow model in memory, and then we are able to serve the request. And to top this, we have a nice way to abstract all this and provide a nice URL where a client can send, get HTTP GET request, and get the predictions back. It's in the end, it's as simple as just sending the GET request and getting the predictions back. So this is what it looks like. We have app that I just mentioned. We wrap it in a container once again, because having containers solve the problem of so-called, it runs on my machine but doesn't run on yours. So it contains all the dependencies, and if it runs on one machine, it's going to run on all the machines that support containers. And so once we wrap the app in the container, any client is able to send a HTTP request, all the input features that are required to get a prediction back, and in the response, it gets the prediction. But again, as I mentioned, things are not quite simple at a large scale. So what we need to have is we need to have multiple servers. Easy solution. We had one app. We were not able to serve all the requests properly. So we have multiple apps. We replicate the same containers that we had, put them behind a load balancer, and the client doesn't know how many apps are actually serving behind. It just knows the IP of the load balancer, and load balancer is responsible for re-routing all the requests. Quite simple. But things are not generally simple at large scale. So instead of six servers in this, we need to have quite a lot of servers. As we keep on increasing the number of, when I call servers, it's actually this container. So as we keep on increasing the number of containers we have for a particular application, we need to find a way to manage these properly, because once you have hundreds of containers running a particular app, particular model, things are going to get sketchy. So we use Kubernetes to surround all of this infrastructure that we have. Kubernetes is a container orchestration platform, which helps in scheduling, managing, and scaling containers easily. It provides a really easy way to scale up or scale down the number of containers that we have based on certain principles. And it also provides easy way to make sure that at any point, we have a specific number of containers running. And if something goes wrong, some of the containers die, Kubernetes is going to make sure that it spawns up new containers to maintain that number that you specified. So that was about putting in production. But once you put things in production, a lot of responsibility comes on you. Now, you want to be able to measure the performance of these models on your production server. You want to be able to answer some of the questions like how is this model behaving? What are the latency versus throughput of your model? So let's say your model is taking some computation time to give the predictions back. But this is not going to be the time that your client is going to see. There's going to be some request overhead. And so in general, the total prediction time is going to be the sum of your request overhead and the computation time. And if in case you send more than one instances to predict on in one request, for example, if you have n instances that you want to predict on in one request, it's going to be n times of computation time that your model requires to predict. We can see from here that for some of the simpler models, like linear regression, logistic regression, or simple classifiers with lesser number of features, the request overhead is going to be the bottleneck because the computation time is going to be too small compared to the request overhead. So you need to be considered about what kind of model you have and what's going to be the bottleneck for your particular case. So once you have this information about your model, you want to be able to optimize it. And you can do that for two things. So one is you want to optimize for either latency or throughput. Let's talk about them one by one. So first is if you want to optimize your serving for latency, what's the latency? Latency is an amount of time taken by your server to serve one request, and this is from the client point of view. So how can you optimize for latency? First of all, when do you want to do that? When you have some application where you want to show some information to the user real time, you definitely want to optimize so that you can serve that request, serve the response as soon as possible. The first optimization that you can do is do not predict in real time if you can pre-compute. That may sound silly, but in a lot of cases, it's possible that you can already, you already know all the features space that you have, and instead of computing real time, predicting real time, you can predict for all those cases and save the results in a lookup table and just use that lookup table when an actual prediction request comes. Next way is to reduce the request overhead. For simpler models, when you know that the request overhead is the main bottleneck for your serving, for serving those predictions, you can optimize to have lesser request overhead, and how you do that, you can, so one of the things you can do is you can embed your model right into the application that is serving, and that's what we do. We load the model right into the memory of the app so that there is no latency, no request overhead to go from the request, HTTP request, to the model. The model is right there in the memory. Once the request comes, it's going to serve right there. Next thing is predict for one instance. Let's say on a web page, you have, you want predictions for three different models or three different instances. When you want to show the information as soon as possible instead of batching it, you should send three requests with one each prediction. This is a specific technique for speeding up the prediction. The quantization, what that means is that you change your float 32-bit types to 8-bit fixed type. How is that going to help? Now your CPU processor is going to hold more amount of four times more data in the registers, and it's able to process the data faster. So that means you are going to be able to compute the predictions faster, four times faster, to be accurate. And then there are some TensorFlow-specific things which really depends on what library you use. For you use TensorFlow, so there are some techniques like freezing the network, which means there are some TensorFlow variables in the computation graph, and we can change those variables to a constant so that there is less overhead when we try to compute. And the next thing is we optimize for inference, which means we remove all the unwanted nodes from the computation graph so that we don't really compute unnecessary things that we don't need in order to predict something. Now the second application is optimizing for throughput. Now what is throughput? Th throughput is the amount of work done in one unit time. So when do you want to optimize for throughput? Let's say you have some cron job or Uzi workflow or some offline work that needs to be done every night or every hour or every 10 minutes. There you don't really care about when a particular request arrives or when it gets a response. What you care about is how much time it takes to do this bunch of work. So that's when we want to optimize for throughput so that we just care about how much work is being done in a particular time, and we just don't care about when a particular request or how much time a particular prediction takes. Again, the first thing we can do is don't predict in real time. And this is not that I'm trying to enforce this that you should do this, but this is something that you should always consider. Is it possible to pre-compute? And have a lookup table to serve the request? If so, always do that. It's going to be much faster. Okay, batch request. So once you know that you're going to do millions of rows of work, it's better that instead of sending one request per prediction, you batch your input features. Like you have thousands of input features right in one request, and then you send the request at once and get the response back. So by doing this, you reduce the request overhead, because if you send 10,000, for example, predictions in one request, you are going to get rid of all of the request overhead that was going to be there. This is really interesting. Paralyze your request. So when you want to have a lot of work done instead of waiting for your request to get the response back, you work, do the work asynchronously. You send the request parallely using multiple workers and do some sort of callbacking option to make sure that you collect the results better and faster. So let me try to summarize what I talked about. First of all, I talked about the training of models in containers. We have, we spawn up a container every time we want to train. Get the data from Hadoop Storage. Once the training is done, store back the model weights into the Hadoop Storage. Now the next step is to be able to serve those model weights in production, in containers. We spawn up containers, which have the Python app that we want to run. It loads the model definition as well as the model weights. Once we have that model, it's ready to be served, calls for any HTTP get request. And next is we optimize our serving for particular applications. It may be real-time application where we want to optimize for latency. It may be some offline application where we want to optimize for throughput. That's all I have. And if you want to get in touch with me, you can get in touch with me on all of these social media networks. I go by sahildewa2305 username. And yeah, thank you. Thank you, that was really interesting. There's loads of questions. Lost my volume, though. This is an area that I'm actively working on as well. So I feel like I could just ask questions all day, but I'll try and keep to the questions that everyone else has asked. So the questions was around how these containers can make use of the GPUs natively. So I know TensorFlow can let you do that sort of through Docker. There's Docker things. Where is the tech with that at the moment? Can all these libraries talk directly to the GPUs or do you start to get limited when you're using containers? Yeah, so as I mentioned, we use Kubernetes to manage our containers. And when we define the configuration for a particular container in Kubernetes, we are able to define what are the resources that we are going to use from the host machine. Because every container in the end is going to land up on some host machine. And we have the flexibility to mention what resources we want to use, and we can specify we want to use particular GPU in that case, and it's going to link up or make the GPU available for this container. Nice, and is that just through TensorFlow? Do other libraries support that as well? Sorry? Is that just through TensorFlow or the GPU connection, or do things like Keras and things support it as well? No, it has nothing to do with TensorFlow, as of now. Now, once you have this GPU available on a container, once you run the TensorFlow on this container, it's going to utilize that. So it's just a feature of making the resources from a host machine available to the container. OK. There's a question, are you running this on your own hardware or are you using cloud providers to actually run the servers that are running the containers? It's tricky. So right now we have most of this in our own hardware, but we are slowly moving towards using cloud. Have you found the cloud is caught up or are you still not able to do that yet because you've got such specialist hardware? I would say we are still not there because of all the legacy stuff that we have, but it's going to be there near time, yeah. A question here, have you had issues with the size of the train networks pushing the memory requirements on your app servers too far? Have you played with distributed models and other things to try and reduce that? Yeah, this is something that I was working on actually last month. So yeah, we have tried out distributed training. TensorFlow comes with a really nice feature of distributed training, and we definitely tried it. And we are trying to find a way to put it in production in terms of makeit.automated so that we don't every time have to spawn all the workers, all the parameter servers and master nodes. So yeah, we are definitely working on that. I know that Google do this heavily, sort of distributed nets across multiple areas. I know one of their active areas of research has been creating nets that estimate what each part of the net will do and update it. So you've actually got nets that are living within nets doing estimations. It gets quite crazy. Well, that's a good question. So one question I had was once you've trained your model and you've got a new set of weights, you obviously need to load those back in. Do you just spawn a whole new version of the model with those weights in? Do you update existing models that are running with new weights? And what's the sort of latency over that? And how often are you updating the weights and training? It's actually a very nice question. So there's a feature in Kubernetes about how you do your deployment. And this is exactly about how you update your model. That's what your question is, right? So there are different options. So let's say you have 50 servers running, 50 containers running for the previous version. And now you have a new version. There are a couple of things that you can do. One is you spawn up new 50 containers and then you switch over. And another thing is you start creating the new containers and start killing them as you have the new ones available. So there are limitations like in the second way, there are going to be two versions running at the same time. So it depends. How are you OK with having two versions at the same time? If that's the case, then you go for this one. Or if you want to have only one version working at any point, you need to switch over. Once all the 50 new versions are ready, just switch over from there. Have you experimented with migrating the actual weights on each of the existing nodes to the new weights? So almost you just quickly fire rather than spawning whole new containers for just every time you train? That's actually a good point. So we haven't tried this. And I think it's not going to be as efficient because once we have the TensorFlow model in the memory, it's going to take a lot of time to replace and go and replace all of those weights. So I think it's still better. But yeah, definitely it's worth trying. It's better to create a new model, load the new model instead of going into all the nodes in the graph and updating their weights. And how regularly do you train new weights? Sorry? How often are you training new weights? It depends on the application. There are some models that needs to be trained on everyday new data, or there are some models that just needs to be trained once and then goes for once. So it really depends on what kind of model we have, what kind of application. Do you see yourself moving towards a real-time updating of training in any time soon, or are we not there yet? What do you mean by that? As in so it's constantly updating the model weights based on new data rather than doing a daily train. It does a train every 10 seconds or five seconds. No, we haven't really found an application for that yet. But once we find something on that, we're definitely going to try it out. Cool. I guess I always find it amazing if I'm searching on Google. And if I'm playing around in a different programming language to what I'm used to, when I then start typing 30 seconds later, it then starts giving me results back for that other programming language, even if I don't mention the language. And it's clearly switched what it's doing to know the context of where I'm in at the moment, which I guess is some sort of training along some route of that. It's fascinating. One, two more questions. One question was, why not docker swarm for orchestration? Why not docker swarm? So previously, we were using marathon to manage our containers. But then we moved to Kubernetes for a couple of reasons. Like, it has awesome community support behind it. It's more reliable in terms of its being evolved more often. I'm not really sure about the comparison with docker swarm. But definitely, there are certain points why we moved from marathon to Kubernetes. And this is one of them. Last question for now. Are you planning to open source any of your trained models? Maybe the image tagging model, for example. Obviously, training can be expensive. I can't speak for the company. No, I'm not sure about that. Do you actively research as a company? Do you try ImageNet competitions and things like that? Not actively, but we have tried it a couple of times before. And regarding the image tagging, we actually not really open source the model, but we open source the entire technique what we did. And we actually wrote a blog post about it. So it's all there, what we did, and how we did it. Just that the end result is not there. Cool. We'll tweet that out for you. That's cool. Excellent. Thank you very much, Sahil. Thank you.


Good morning my friends welcome back to another classroom setup vlog If you guys are just coming in my name is Charlotte, and I'm a fourth grade science and social studies teacher We are departmentalized and I teach in Central Arizona. So today is classroom setup day number three I'm starting off again at home Just wanted to show you guys what I'm taking to school today and today is Thursday. It's actually 8 o'clock in the morning I'm gonna be going and grabbing myself some breakfast because I've been dreaming about this omelet from this restaurant So I'm gonna go pick it up and then take it to school and eat it But I wanted to show you guys what I'm taking to school today. So let's head on over there I feel like every time I face that window. I have to take my glasses off Sorry girls, but you are not going to school yet If you guys are new here, this is temple Tina and she is my class pet And her sister Peach will be joining this school year These are the rats that I keep talking about so if you guys are new here or you haven't been with me for a while I do have Some pets now. So this is that big cage that's gonna be joining me I'll probably take this with me to school Monday just because they're happier here right now But starting Monday, I'll be at school every single day except the weekend So I will be taking them to school with me on Monday. Well, good morning. Did it break? Okay, you go get yours and you can vlog too Okay, so this is the cart that's coming with me to school today These are all of the plants that I brought home for the summer Okay press it Okay, shoot all the plants and Tell us what you're doing We got a future vlogger in the making Oh, you can videotape too So anyway, I have one two three four five and then a sixth plant in here that I had to water last night look at you Can tell so sad I am gonna water all of these guys when I get to school though I also have the binder that I took home that has my standards in it And then anything that I printed while I was home is in there I've got my ink joy pens and then I have a strip of LED lights that I was thinking about putting somewhere in my tripod You love tempa teeny, huh?  All right guys, so I'm gonna get my husband awake And then head on over to the Queen Creek olive mill Which is where I'm getting my breakfast from and then I will be heading to work I did choose three bulletin boards that I think I'm gonna go ahead and make so we'll see if I keep that idea and And you guys will get to see those in just a few short minutes So if you guys want to see classroom set up day number three then keep on watching. All right, you guys So I am here in my classroom and guess what? We have six tables I'm so excited My custodian brought me the other two I just traded that one for one in Sheila's room because it was a different grain And I wanted them to all match and she didn't care so we just traded tables So now I have six tables. I will have six groups of five And I'm really excited so I'm still waiting on the stools Sheila said she'd give me five of them Which puts me at about 21 stools, so I would only need nine more and that's if we have 30 students So I think I might stick with the stools and just try To find a few more so I think I might put an email out today Asking if any teachers have any spare stools to donate them to my classroom They brought me like first grade chairs. So I Don't know if those are going to work for me I might have to find my custodian and just tell him listen. These are fourth graders I don't think they're gonna be happy sitting in first grade student chairs, so Am I being nitpicky? I don't think so I think that like in a fourth grade room they should have you know big people chairs My janitors work so hard though, so I do appreciate all of their help and all their work So I'm not gonna whine or complain Um, okay, so I got my lunch or sorry my breakfast. Do you guys want to see it? It's probably cold Okay, so this is an omelette and it's made with spinach betta cheese artichoke red pepper tomato And then the potatoes.  So I just finished my breakfast. I'm gonna keep working on my coffee and my energy drink I need to remember to drink water today Please remind me. So what I'm gonna do right now is just put all my plants away And find permanent homes for them My teammate just brought me five more stools So I just need eight more stools and then I'm good to go on stools So fingers crossed. I'm gonna send out an email just saying hey if you have any extra stools like any of them would help And hopefully I can get eight and then I'm set so all I have left to do is wait for these desks and these chairs To be gone. So all right, I'm gonna put the plants away. Let's get started John is in here He's taking these little chairs away and he's bringing me a few more stools. So I think all we're gonna need now is four more stools So I'm really excited. It looks like the stools are gonna work out So I have this little LED light strip that I bought for my office at home and it just doesn't really work in there So I thought I would hang it Right here around this bulletin board. I think it will be long enough It just looks like this. It's just LED lights and I have these little Light clips so I think I might do this and they'll probably stay on the wall because the back of this I've tried hot glue. I've tried command strips and nothing will like stay stuck to this So I figure if I use these little guys, I can just clip it onto the wall So we're gonna see if that works. They all match the desk mountain is gone and all I'm waiting on are four stools 25 to 26. I'm golden if we have 30 all I need is four more stools I can always just pull chairs in it wouldn't kill me to have four chairs in the room. So now that I have Furniture I'm officially going to set up a layout So two things two ideas that I have Put you down so I can concentrate Okay, so my two ideas are Set up sort of like they are now obviously I'm gonna bring them this way and spread them out more and have Then scoot it up because I would like to have a space in the back for community circle time Or like if I want to do a floor activity or if I want the kids to work on the floor I want there to be plenty of space so I can either do it that way or I Can sort of make it in a horseshoe fashion Which is where I would have two desks on this or two tables on this side going this way To going that way in the back and to that way that way I have the whole open space in the middle to do floor activities I don't know. I just feel like utilizing the library space for like community stuff is better I don't know I'm gonna try and space them out first and see how I like it probably go and Here's the view from the front They're not all in line. So just bear with me for that. There's a ton of walking space over here, which is great My computer carts probably gonna go right here. I don't know where that table is gonna go yet. So Hang tight for there for that. I might Move it or remove it. Hello Okay, so This is the view from the back. There's plenty of space between the tables Which is lovely So you can kind of see there Now if we end up getting less than 30 students if we have 20 or if we have 24 Then I can turn the tables this direction and have them all facing the front and have one on each end and two in the middle But I sort of love this So So there will be a kid here And then two on each side a kid here two and on each side So there won't be two kids like back-to-back in that space. It'll just be the one on the end. So hopefully it works out and I still probably could work on the spacing more but this is pretty close to what it's gonna be like and then this I Might have to move these ones up a little because this one's always like crowded But I mean it's got a there's a pretty good amount of space here that won't be there So there's a pretty good amount of space here for that kid to Back up and for people to still walk around. So I might push these ones up further. We'll see The other option is to push all the tables together to make like long rows But I just feel like it would be easier to like Say okay table one table two table three table four table five table six rather than like row one row two row three So yeah, it's looking really good. What I think I'm gonna do now is clean out my teacher cart because that definitely needs to be done and That way I Can start stocking it up for this school year. So I think I'm gonna just roll it back here and sit down and start Kind of sorting through it Throw some stuff away I am gonna keep my notebook from last year just so that I can reference like what things we put in it But I will make a new one and Then after that, I think I'm gonna start working on Stuff for walls. All right, the cart has been cleaned and organized So what I usually do on the top of this thing is keep all the things that I would need for teaching so I always keep my personal notebooks in here and then Glue sponge or sorry, I will have my own glue sponge But I keep spare glue sticks in here headphones And then I'll always keep like a sharpened pencil up front in case there's like an emergency and then lotion for myself I will put a brand new box of crayons in here in a few days when I get those out And then in here I have my skin color crayons. I don't Give these out to kids if they personally ask for them Then I will let them come up and grab one if they need it but it's very rare that we need those except for social studies and then I Keep my spotted so like our PBIS tickets in here I have my mouse pad for when I'm up there with my mouse and then on the side I keep dry erase markers on the cart the kids don't really ever need dry erase markers So it's fine for them to be on my cart and then down here. I just keep so I have stamps. I use these for Checking work and checking notebooks so and taking assessments So like if I walk around and I notice a kid has written the correct answer or you know Have done it right or understanding I give them a stamp and then if I don't stamp a kid Then that means that I need to see them or like once you get your stamp you're done You can move on so stuff like that highlighters for me markers for me. These are like marker pens I love these for note taking the kids can see way better if I use marker pen Then if I use pencil and then these are just permanent markers for labeling things So I have one per table group and I keep them here.  I have bubbles. I will probably keep my little emoji partner cards in here as well as some other like grouping Structured stuff in here so I can just pull I need to wipe it. I realize it's still like dirty from our erosion Unit, but and then I do keep my lightsabers here. I have one for Students the green one So when students come up to the board and then I have one red one for me So again students can come up to the board and those are my pointers. I just found these magnets here on the side So anyway, I'm going to take this up to the front now that it is ready to go So I will create new notebooks like I mentioned before and I'll probably keep these in the back of the room Like at my desk for reference and then put the new ones in here But my students always know if they need to copy a notebook page They can come up to my cart and grab my notebook and they can copy from there Anyway, the cart is ready to go. So I'm gonna move that up front and then I don't know what I'm gonna do next Probably work on bulletin board stuff. Okay quick update The room is pretty much done aside from like getting rid of the junk This table is gonna be gone I think I might give it to Maria my old teammate or I might put it next door in Rob's room see if he wants it And This is what it's looking like. I took all the stuff off of this now Keep in mind this will have a black tablecloth over the top of it So none of that will be seen all of this will be on a black tablecloth I will probably move these two black tubs and put them somewhere else to store things in But I got all the stuff that goes on each table group Put on the table The cart's ready to go. I need to hang up my look what we're learning thing Here and I might actually section off the whiteboard maybe We'll see I only have one learning target per day. So it doesn't take up a lot of room So as you can see things are coming together What else did I do I don't know if I showed you this So Sheila gave me this cute little news board. I think it's adorable I'm gonna probably hang the lunch menu here and then possibly the district calendar So that we can tell when we're here or not and then I just rearranged that a little bit What else did I do? That's pretty much it so Essentially all that's left to do is boards and then planning Okay, I wanted to show you guys my bulletin board ideas So I found them on Pinterest yesterday But I was thinking about This one on the top Going on this board right here and it's just a frizzle quote and it says take chances make mistakes get messy And it looks like this It would be super easy to do all I need to do is cut out letters and then do the little beakers and stuff and I also want to do a big Paper-sized version of all of the supplies my kids will need throughout the day So like a giant pair of scissors glue sponge all that stuff and have them up on the whiteboard So that every day when they come in I can just slide over the supplies that they're gonna need for the day And they'll already know what to take out So I'm gonna do that board. I think I really like this one too Science is like magic, but real so it's between Get messy make mistakes, whatever or science is like magic I think I might do science is like magic but real on this board and then out in the hallway I think I'm going to do This one I'm trying to zoom in on it. Oh I think I'm gonna do this Welcome back have a magical year with the magic school bus because I have a board out in the hallway that I need to decorate So I might do that That one will be student work. So I don't need to do that one And then I do have to do Something over there I might do like The scientific method and make that like a content board And I start with the scientific method even though it's not really a standard It is a standard practice that needs to be done So I might put science content there And then for now since I'm not going to have vocab for a while I'm going to put vocabulary or my classroom rules up there up front and then I'll eventually take them down So I think I'm going to do that. I'm going to sit down and work on I'm going to do this one first Science is like magic but real So the way that I do this is I use power point on the computer I just type out the whole thing one letter per page And then I will print them out on colored paper colored card stock I probably won't laminate these just because it's one extra step and I really doubt that I'm going to take it down Like let's be honest So I think I'm going to start with that one and then after that I will go for the magic school bus board So I think at this point Um I will pause and then once I get everything Cut out and made I will update you guys on the board. Hey guys, so quick update. It is about 245 And I'm probably going to leave today around 330 Um, I want to do one or two more things before I go. I want to find my classroom rules And put them up front because I do still have those from last year And then I remembered I have an engineering process Thing that I want to find and possibly put somewhere Um, but I went ahead and printed a bunch of stuff I've got some bulletin board things here printed So I do have my Cricut, but I don't have my actual computer Here that has the Cricut thing on it and I realized I could download that to my work computer, but Honestly, I can give my husband a pair of scissors and he can help me cut them out Over the weekend and that will be fine. So I have two bulletin boards worth of words Printed out and that is pretty much all I needed because I have the rules already done Just that board and just that board and then I do need to print some stuff at home in color So I'm going to print a few things at home in color. I need to make a to-do list So I'm going to do that right now while we're talking Because that just makes sense Okay to do So To do a list done so now I'm going to look for my classroom rules and hang those up Hello my friends, so I am now at home in my office. I'm editing this vlog and I did not finish it out yesterday. Sorry I have this terrible lighting in here right now, but I just wanted to thank you guys If you made it all the way to the end of the video Congratulations. You stuck it out. Um, thank you guys so so much for watching and for joining me on this classroom setup journey There will be another couple more videos in the series I am going back to school monday tuesday and then I do have um Like meetings and stuff wednesday thursday friday and then that whole next week So we will probably transition from classroom setup blogs to Plans for what we're going to do the first and second week of school and then we'll get into regular normal teacher vlogs So thank you guys again so so much for watching I really appreciate you being here and for your support If you're not already make sure to follow me on instagram at apples and tiaras to see more Daily updates and just to keep up with me and I will see you guys in the next video


The next item of business is urgent questions and I call Michael Marra. To ask the Scottish Government for an update on the publication of the appeals process for 2021 national qualifications in light of the Scottish Qualifications Authority missing publication deadlines. I understand and appreciate that for our young people undertaking national qualifications, along with her parents and their teachers, this can be a naturally anxious and stressful time and I of course recognise the additional challenges that Covid has presented this academic year. However I want to offer reassurance that across Scottish education people are working hard on behalf of our learners to ensure that they achieve the fair and credible grades they deserve. The key message to learners is that your grade will be determined by your teacher or lecturer informed by assessment tasks that you have undertaken in your school or college, not based on an algorithm or statistical model. This year, unlike in an examination diet, schools and colleges are in direct control of the assessment process, teachers have a significant degree of autonomy and flexibility to exercise their judgment to create and conduct assessments in ways that suit local circumstances and take account of the specific needs of learners. They will look across a range of assessments, consider national standards and reach a judgment about the grade that the learner has attained. The focus of schools and colleges at present is on ensuring that all of our learners get the right and fair result first time. Nonetheless, I appreciate that every approach must allow for appeals and we must ensure that we get that right and deliver a fair and credible process for that too. We are working hard for the Scottish Qualifications Authority to do exactly that and, subject to parliamentary business, I would intend to make a statement to Parliament on that next week. Last week, the now former Education Secretary promised pupils, parents and Parliament that this process was on the way. I welcome the fact that we are going to hear about this next week. The SQA has promised the publication twice and I have missed both of those deadlines. Does the Cabinet Secretary recognise that it is now less than four weeks to the deadline for submission from schools to the SQA? If evidence is to be collected for appeals, when would pupils, parents and teachers be able to do that in the absence of a published process? I do not think that the Scottish Government is in any doubt from this statement now that a public appeals process is a necessity. Can we ensure that that process is communicated to teachers immediately, as soon as possible, and that they are assisted in producing the evidence and collecting the evidence to make that system work? I also welcome Michael Marr to the Parliament and to his role as education spokesperson for Labour. I look forward to working with him, hopefully constructively, as the First Minister has just set out. I believe that we have our first meeting next week on that basis. We are absolutely right to point out to the chamber that we need to ensure that people have faith in the process and that they have an understanding and appreciation of the way that the decision has been made and the conclusion that has been come to by the SQA. I pointed out in my original answer the importance of a credible and fair assessment and appeals process, and that is exactly what we intend to do. That will of course be communicated very thoroughly, not just to teachers, but also to the young people themselves. We are giving very active consideration about how we can support young people through the process to ensure that they have the maximum opportunity to take advantage of the appeals process and to be encouraged and supported to do so. As we take those constructive discussions forward, certainly on Labour's part, we would ask the cabinet secretary to reflect on the conduct of the SQA across the last year. Those latest delays show a level of contempt, frankly, for parents, pupils and teachers across Scotland who are having to deal with the situation. I am really glad that there is a change in tone in that, to tell the truth from the new cabinet secretary, that she is not digging in, as we have heard recently, that those assessments are not exams. People are sitting exams across the country and they have a right to that appeals process and to put it in place. As part of those discussions next week, I will be raising with the cabinet secretary the status of the SQA and whether she thinks that its continued role is tenable, given repeated mistakes again and again over the last year. Some reflections on that would be appreciated. I am, of course, open to any discussion that Michael Marra and any other member of the chamber wants to have on the SQA or any other part of the process. That has undoubtedly been a difficult year for young people and for the teachers that have been supporting them through that. The SQA has worked very hard to ensure that what is in place is fit for purpose and to ensure that it has done that in a fair and equitable way. Those are the principles that I have certainly been speaking to the SQA about and that is something that it absolutely shares and has the determination to have right at the heart of the system. Will we have lessons to learn at the end of the process? I think that we have made clear during the entirety of how we deal with the pandemic that we have to reflect about what went well and what we could have done better. That goes for every single part of government. I would say that everyone—I would include the SQA in that—has worked very hard to ensure that we have worked right across the education sector and, with all stakeholders, to deliver a system for assessments this year that will be robust, which young people can have faith in, which employers, universities and colleges can have faith in. I hope that we can unite across the chamber, despite the differences that we may have had during the process, to ensure that young people know that we all have faith in the results that they will get and that we all have faith in the system that will then allow them to go into the positive destinations that I hope that they will do. It was clear by the end of the last session of Parliament that the SQA had lost the confidence of the institution and the public as a whole. I will be raising those issues with the cabinet secretary next week. Of more immediate concern, though, a large volume of appeals now seems inevitable this year. What has been put in place to ensure that the SQA has the capacity to process those appeals in a timely manner, and what discussions have taken place with colleges and universities about the impact a high volume of appeals and potential delays might have on their admission processes? It will be a pleasure to work with Ross Greer once again reliving our Scotland days as part of the referendum campaign, but perhaps we might have some more disagreements than we did on that. I hope not, because, as I said to Michael Marra, I hope that we will work constructively on that. He is right to point out that we need to ensure that people have faith in the system to be able to deal with whatever might come up. We are initially determined to ensure that young people get the right grade the first time so that the appeals process is not the route that people have to go down. The focus for me, the SQA and others is to ensure that we are delivering an assessment process that is supported and that children and young people can get the right grades the first time. I have, of course, discussed the capacity of the system with the SQA, as Mr Greer would thoroughly expect me to do so, and I am sure that in the statements that I will be making to Parliament next week, if Parliament allows, then we can go into further details on that. Thank you, Presiding Officer. I also add my welcome to you and the cabinet secretaries in your new roles. How are there still big questions on issues like appeals six months after exams were cancelled, halfway through assessments and four weeks from the end of term? Will the new cabinet secretary respect the vote won by Scottish Liberal Democrats in February to reform the SQA for the recovery? After weeks of exams, pupils need fast and accessible mental health support. Can the cabinet secretary guarantee that? As I said in one of my previous answers, I am looking very carefully at what we need to do to ensure that the information that is going out to young people is informative, succinct and detailed where necessary. Part of that is around the support that we can give to young people going through that process, not just in the practical sense of how to appeal and how to go about that, but also the support in general that any young person might require, given the difficulties and the challenges that many of them have faced this year. I give my reassurance to members that this is something that I am giving active consideration to. On a point of order, I would be grateful if Kevin Stewart, Minister for Mental Well-being and Social Care, would apologise to the Parliament and correct the official record following an inaccurate response to an urgent question last week. The minister was responding to a supplementary from myself on whether patients had been risk assessed under health and safety legislation, and the minister stated that the unlawful transfer of patients from hospitals to care homes without the conducting of risk assessments had already been looked into by the mental welfare commission as part of their report last week on authority to discharge. I wrote to the mental welfare commission to ask if this was the case, and here is an extract of their response. Our report does not focus on health and safety legislation or the risk assessments that you refer to. This is not an area that has been investigated by the mental welfare commission. Accuracy matters in this Parliament. I am sure that the mistake was inadvertent, so on the basis that the mental welfare commission did not consider this, will the minister apologise to the Parliament for misleading it and correct the official record? I thank the member for advance notice of this point of order, but as the member will be aware, I am not responsible for the accuracy of members' contributions in the chamber. However, the member will be aware that there is a corrections mechanism available to members. The guidance on the mechanism sets out the steps that a member should use if they realise that they have provided incorrect information and also the steps to take if they consider that another member has provided incorrect information.