Hi, everyone. My name is Govan. I'm going to be in 12th grade next year, and I'm from Houston, Texas, and currently I'm working in a learning algorithms lab at the University of Houston. So this is my case study on using 3D convolutional neural networks with visual insights for classification of lung nodules and early detection of lung cancer. So the question is, how can deep learning methods be used to solve high-impact medical problems such as lung cancer detection? And more specifically, how can we use 3D convolutional neural networks in this specific application for detection of lung cancer? And another problem everyone probably knows since you're all ML practitioners is that no matter how good your deep learning model is, if it's not interpretable to people in the domain, it's really hard for them to adopt it. So ML models recently, they've been known to have very good accuracies, especially deep learning models specifically. But if the domain expert can't trust the model, then it doesn't mean as much because it really won't gain adoption. So the idea is, how can we use techniques such as gradient weighted class activation mapping or grad cam to visualize the model's decision making and increase radiologists' trust and improve adoption in the field? So just some background on the problem. Lung cancer is a leading cause of cancer death among both men and women in the United States. And this is around even more than 100,000 deaths a year in the U.S. alone. So it's a pretty big scale problem. And one of the reasons, sorry, the five-year survival rate is also only 17%. So when we look at why the survival rate is so low, what we find is that early detection can really improve the chances of survival. However, many times by the time the lung nodule or the cancer is detected, it's already too late in the process for intervention and good treatment to happen. So the idea is that early detection of malignant lung nodules can significantly improve the chances of survival and prognosis. And the problem with this is that detection of lung nodules is quite time-consuming and difficult due to the volume of data involved. So there can be end as well as inter radiologist variants. So what this means is that since the CT scan data is so huge, it has millions of voxels, the lung nodule is pretty tiny compared to the size of that CT scan data. So the problem is that one radiologist might see it and classify this as a nodule while another radiologist might not even see the same thing. So there's some subjectivity in inter radiologist variants. And then the nature of the problem is that it's kind of hard to find the nodule in the first place. It's almost like trying to find a needle in a haystack. So to approach this, I'll do some more background first. So computed tomography or CT is widely used for lung cancer screening. And the goal is to see as early as possible, can we detect that this disease is here.  But as I said before, a CT scan can have millions of voxels. And out of these, a lung nodule is quite small and hard to detect. So this is quite the significant challenge for radiologists today. And so what happened is that automated methods recently have shown better accuracies or even comparable accuracies to a manual interpretation by radiologists. And in addition to this, they can reduce subjectivity and inter radiologist variants. So as I talked about before, one radiologist might classify this as a nodule, another might classify it as something else. And then this variance can lead to many problems. So the idea is that using automated methods can reduce subjectivity significantly and improve diagnosis. So more recently, deep neural nets have shown superior performance in classification problems. And deep neural nets are things such as 2D convolutional neural networks. So what these do is that they look at a slice of the CT scan. Normally CT scan data is 3D, so it'll have many different slices. So what a 2D CNN or convolutional neural network can do is it can look at a singular slice of this data, and then it'll classify this as having a nodule or not. And further upon this approach is using a combination of multiple 2D CNNs from multiple angles of that CT scan data. And then that can allow for higher accuracies. So obviously, like 2D CNNs are one approach, but 3D CNNs that use the full nature of the 3D data instead of the 2D data should have higher accuracies in specifically long nodule detection task. And you can think about this from the human perspective to get a better idea. So when a radiologist looks at these 2D scans, they'll look at a bunch of 2D scans in order. And this gives them a more 3D view of the CT scan. And what this allows them to do is give a better diagnosis of whether or not there's a long nodule there or not. So the same thing applies to convolutional neural nets in that if they can see the full 3D nature of the data, the idea is that they can get a higher accuracy in detecting these long nodules. So I'll go into a little bit of background on the different ML methods and then deep learning as well. So this is an example of what a singular neuron looks like an artificial neural network. And the full neural network will have many of these neurons. And so the idea behind neural net is that it's model to be similar to a human brain. So the neuron will take many different inputs, apply some weight to that input, combine all of those inputs together and then put them through some activation function. And then this will propagate among further neurons and then it'll be a full network of singular neurons like this. So this kind of artificial neural network approach has shown a lot of promise in many datasets. However, when we get to image datasets, it's a completely different issue. So traditional neural nets will look like this with input layers and then hidden layers in between. And finally an output layer that makes a prediction as to what we're looking for. In this case, is it a long nodule or not, or any generic test like that. So the problem here is that they're not really suited for image processing for a multitude of reasons which I'll go through. Number one is that images have a lot of pixels and as such, there'll be a lot of weights in the neural net which means that number one, it's just computationally very expensive because there's so many weights. So it's just not viable. In addition to this, since there's so many weights, overfitting can occur.  So it's obviously not ideal to have an architecture that's prone to overfitting. And one of the most important things is that the spatial information image isn't accounted for by an artificial neural net. So what happens here is we think about a new architecture called the convolutional neural network. So basically what a CNN is, it consists of the input and output like any other deep learning method. And it'll have layers called convolutional layers and max pooling layers. So I'll go through this further in the next few slides. But the general idea is that the input will go through a series of convolutional and max pooling layers. And then this will map to some fully connected layers at the end, which map to an output. So you might not know, understand what that means, but I'll go through a little bit deeper. So a convolutional layer will take in some input. It'll consist of kernels or filters. Either word is fine. And basically what happens here is that this kernel will convolve over the input. So it'll start all the way at the left. And it'll convolve, it'll go to the next layer, next layer. And then basically what happens is that the dot product is taken between the kernel and the input. And this outputs to some feature map like this. So the idea is is that these convolutional layers are able to detect certain features in the image. So if you have an image of the face, the idea is is that the earlier convolutional layers can detect the edges, the little edges on the face. And then later on, the later convolutional layers can detect certain parts of the face, maybe the eyes or the nose. And finally, the last few layers will detect the entire face. So this is the main layer that makes up the convolutional neural network. But another critical layer is also the max pooling layers. So max pooling layers basically take the max value in a certain area, and they'll pull it into a singular value. So to give you an idea, like these four from the feature map here are max pooled into the singular pixel, singular feature right here. So the idea behind the max pooling layer is that you reduce the dimensions of the data. And this allows for quicker computation. And we talked about the overfitting problem earlier where in a traditional neural net overfitting is quite the problem because there's so many input features. So what you do is that when you max pool like this, it allows for the general network to generalize better, and it won't overfit the data as much. And this is really good because it allows for higher accuracies. And finally, using the max value allows for better feature detection from max pooling. So the idea is is that a full network will consist of many convolutional layers interspaced with max pooling layers, which, as I said, reduced dimensions allow for better computational speed and reduce overfitting. So each CNN layer has features of increasing complexity. And the first layer, as I said, learn edges, corners, things like that. And then as you go further, the intermediate layers will learn more complex parts of the object.  And finally, the last layers will detect full objects such as faces. And so the idea is that these CNNs will have convolutional layers, max pooling layers. And finally, it'll output to some decision made layer. And that's just a general idea of how 2D CNNs are. 3D CNNs are essentially the same thing except your input, your input will be 3D data like this.  And then your kernels, this is the key part. Your kernels or your filters will also be 3D. So what this means is that instead of detecting 2D features such as edges and corners, it'll detect the same features but in a 3D fashion, which is really critical, especially in this long nodule case, because all the data is of a 3D nature. Yeah. So videos like time series type data, so that's a little bit of a different approach. But in this case, yeah, you could do 3D data. And time series data also works as well. It's just a little architecture modification. So the idea is that this 3D data is inputted. It goes through some 3D kernels and then it's classified as either healthy or diseased. In this case, long nodule exists in that CT image or long nodule does not exist. So in addition to this, like I said, CNNs like other deep neural networks have been black boxes, giving users no intuition as to how they're predicting, yeah. Okay, yeah, sure. So yeah, feel free to ask questions at any time. I'd like this to be interactive so that I can answer your questions. So this kernel right here. So normally, let me just go back a little bit. Yeah, so normally we'd have a 2D input, right? Just an x by y array. And the kernel is also 2D. So it'll just be two dimensional. And the dot product is, this convolves over the input and then the dot product is taken and this outputs some feature map like this. So the idea with a 3D is that everything will be 3D instead of being 2D. So you can just think of the input as having just many stacked arrays. So it'll have many arrays behind it as well, which 3D nature. And this kernel or filter right here will also be 3D. So it'll just have the weight or the kernel or the input. They're all the same thing. Yeah, you might hear me use these words interchangeably. Kernel, filter and weight all mean the same thing. So the kernel that convolves over the input data will also be 3D. So what this means is that it does a better job at detecting these 3D features that may not otherwise be seen in a 2D input with a 2D kernel. So the kernels are like essentially what's updated over multiple iterations. So in a traditional neural net you'd have certain weights that you'd update. So I'll show you. Yeah, so you'd have these weights that you'll update after every iteration. But in this case, we replace these weights with the kernels. So the kernels would change over multiple iterations. They're essentially what's being optimized to reduce the loss and optimize the network. So exactly. Yeah, so it's essentially just a weight matrix. But instead of traditional weights that are just numbers, it's an array that is convolved. And then the kernels themselves say the same kernel just across the whole image. But you're updating. Yeah, so the kernel will also be 3D. So it'll have depth as well. So the idea is that by adding this depth is pretty much just the same way you're trying to mimic what a human is seeing. So when a radiologist looks at it, he looks at multiple layers together to get a 3D view of what exactly is going on. So the same way by making the kernel 3D and making the input 3D, we're trying to maximize exploit the 3D nature of the CT scan. So you're not losing any spatial information. And that's why you should get a higher accuracy by using this 3D approach. Yeah, they'll move in all three directions. So the idea is that it's still spatial information. But if you look at a long nodule, like in reality, it's going to be some spherical type of thing. So when you look at it in a 2D fashion, it'll be like a circle, right?  So when you look for this like edges that are like almost like spherical, it's easier to detect versus like a circle in a 2D nature data. So the idea is that since the data itself is in 3D, when you map over to 2D, you're naturally going to lose some information, some spatial information, some information that can be critical for detecting the nodule. So when you make it 3D data, you're trying to minimize whatever information you're losing so that you can really get a better idea of what you're looking for and look for it with a higher accuracy. Yeah, so it's still the same edges, but the edges will be 3D, right? Like when I look at you and see your face, I see I have depth perception, right? So I can differentiate someone's head versus like a circle. So like that's the depth perception that I get because I have that 3D view of someone. So that I can when I look at someone's face, I see the edges, but I see them in a 3D nature. I see the depth perception, I see that your nose has depth, your eyes have depth. The same way the idea is that this model can exploit that 3D nature of the long nodule data and acquire higher accuracies. Yeah, so different people have thought of like different approaches. I've tried both of them. What I've found is that most of the time max pooling seems to do a better job of detecting features. At the same time what I've heard is that average pooling can generalize better. So it's generally like a trade-off. You can try both of them. These are things that are usually optimized over iterations. Usually you'll validate on a validation data set and see what seems to be performing better. Am I overfitting too much? Do I need to change average pooling, max pooling? These are all things that are part of the network architecture that the idea is that over multiple iterations when you validate you want to see how changing these features can really improve my accuracy or how is it changing what I'm seeing. So what I found for this project is that max pooling seems to do better at detecting some of the features. So that's what I went with and most of the projects I've seen max pooling seems to perform better. So yeah, that's the idea. Yeah, so training time. Yeah, so if you have 3D it will increase. So I know GPU training usually doesn't have too much of a problem training fast. In this specific case what I did is that number one I downscaled the data to improve training speed and also I tried using lightweight models. So if you use a model with 100-200 layers you might have problems with training time especially if you're training on a CPU with limited resources which in this case I was doing. So what I did is that I used a pretty lightweight model which still had good accuracy in this specific problem as well as downsizing the data and then also if you have problems like in terms of training time one idea is to just decrease data size. Yeah, so I'll stand I used as my I'll go into this further. I think it's better if I move on because this is all stuff I'm going to cover on later in the slides. Yeah, so I think this is where I was. So yeah, so one of the big problems about deep neural nets and deep learning approaches is that while they have high accuracies it's really hard for domain experts to accept what they're predicting because they give no intuition and this is one of the general themes that I've noticed like across all of ML and even in the past few days I've been at the conference what I've noticed is that a lot of people have been approaching this problem in different ways. So as I said superior results and test conditions but real life adoption is not as easy because of lack of transparency in the models. So the idea here is that I thought maybe we can approach this problem using gradient weighted class activation mapping or grad cam. So how many in the audience know it or have used grad cam or know about grad cam? Alright, so a few of you. So I'll go further into what exactly grad cam is but the idea is that we can use this algorithm to provide visual explanations by highlighting discriminative regions in the model. So this is a very powerful approach for figuring how we can make the model interpretable for people in the domain. So the idea here is that the study aims to build a 3D CNN with state of the art accuracy but also provide visual insights into how exactly the model is making its decision and this will allow for better trust and adoption in the field. And in addition to this like I was saying before you want to validate your model and update it across the debugging and optimization process. So the idea is that if we can look at these visual insights we can see where the model is failing, why the model is failing and we can address this by changing the architecture of the model. And to my knowledge this is the first study that demonstrates grad cam techniques for visual explanations on LUN module classification. So this is really the value added here with this study. So the objective here is to research and develop 3D CNNs to detect LUN modules in CT scan data with better accuracy and higher trust in existing models and this is to ultimately aid in early detection of lung cancer to improve chances of survival and prognosis. Yeah so the research questions are just derived from that same objective. Can we prove that a 3D CNN can do better than 2D CNN to detecting LUN modules and also is it possible to derive visual explanations for the internal workings using grad cam methods? So we hypothesize that 3D CNNs which exploit the full 3D nature of the data will have better accuracy and that grad cam algorithm can provide visual explanations for decisions in LUN module problem by highlighting discriminative regions. Exactly with the same model type and also can we improve upon that using some optimization also cover that as well. So I'll go a little bit into the data that I used. So we used the LUNA 16 data set which has almost 900 thoracic CT scans and this data set is pretty clean as already from the start. So the scans with slices greater than 3 millimeters were removed and one of the reasons for this is that the LUN module is pretty small from the start. So if you have slices greater than 3 millimeters you might miss the nodule altogether. So that's some of the pre-processing that was already done. And then images were annotated by four experienced radiologists. So the idea here is that you want to have a golden standard. So we talked about how this problem suffers from inter radiologist variants. So the idea to approach this is that by having a panel of radiologists discuss each image and then label it you have a golden standard for what is actually being seen in that image. And then each radiologist marked lesion as a nodule or a non-nodule and the reference standard is that at least 3 out of 4 radiologists must identify it as a nodule greater than or equal to 3 millimeters for it to be labeled as a nodule in the data. So this is how the data looks. Basically this was full CT scans that were then chopped up into where exactly they identified as nodule or non-nodules. So the idea here is that this is a nodule right here, this is a nodule right here and this is a nodule over here. So obviously I'm not a radiologist. I don't know if any of you are also radiologists but it's kind of hard to tell on some of these images what exactly there is and that's that's where the problem lies right. So in this case like this looks like some amorphous blob that's in the picture but we can't really tell if that's a nodule or not. In this case it's labeled as a non-nodule but as someone who's not a radiologist it's really hard to tell. So that's the idea. There's the problem of false positives as well as the problem of not even detecting the nodule. So twin problems that we're aiming to address using the deep learning approach. So this is the study design. So the idea is that first we gather and preprocess data then we split the data into training and testing data sets as well as validation. We design and implement a model. We train that model, validate that model on the validation data set and we iterate through this process right here. So based on how our model is performing we can change the architecture. We can put in maths instead of average pooling. We can add more layers, change the filter sizes, how many filters there are. So a lot of this is the job of the data scientists basically. Basically iterate through this and figure out how exactly we can make the model as good as possible and then we evaluate on our test data set. So the idea here is that the test data set can only be used once because you don't want to train for your test data set or optimize your model for your test data set. The idea is that we hold out a test data set to be used at the very end only once. And finally we visualize the model using Gradcam. So this is for higher interpretability and the idea is to gain adoption in the field. So first splitting and preprocessing the data. So out of this 900 CT scans we cut down to a thousand nodule and a thousand non-nodule volumes and this is divided into three tests, three sets for training, validation and testing. So the data was completely randomized and 1400 images were used for training and 600 for testing and 10% of the training data or 140 volumes were used for validation. So I'll go a little bit into the architecture and implementation. So I used that AltsNet architecture as the baseline and I also optimized the 3D CNN over many iterations. So the AltsNet architecture is probably the architecture that made CNNs popular in the first place. It did very good on some baseline measures and then it's what caused like an explosion in this whole field of image classification using CNNs. So the architecture is pretty pretty small and the idea here is that you can reduce your computational load. So it has about five convolutional layers followed by three fully connected layers. And my 3D CNN is also pretty similar. It has an extra layer and also what I did over many iterations is that I increased the number of filters and the filter size is early on and funneled it down more dramatically than AltsNet does towards the end of the network. And I believe that in this specific problem that may have helped find some features that AltsNet might have missed. So this is just some model summaries that were output. It's probably hard to read, but yeah, just continue. So now I'll go into the training process. So the training process is basically some images X are input into the model and then this model makes some predictions and then these output or the predictions is compared with the actual value of the label which is Y and some loss function is computed. So this loss function says how far away are we from where we want to be and how can we minimize this loss so that this model is updated and is better at predicting what we're trying to do. So the optimization of this loss function is basically where we update the model with new parameters and in this case as we talked about before the new parameters would be the values inside of the kernels as we were speaking about earlier as opposed to traditional weights in the artificial neural network. So during the training process a soft map activation function was used before loss is calculated and cross entropy was used as the loss function to be optimized and all of the models used atom optimizer with default parameters and a learning rate of .0001. So all of these things are different things that can be changed in and out like for you can use different loss functions, you can use different optimizers. So the idea is that we can change these things and try and get a better model. So once we're done the idea is that we want to evaluate the model with some key metrics. So some of the ones that are used widely are precision recall and accuracy. Accuracy is just pretty straightforward, it's just how many you got right out of the total. Recall is how many you are able out of all the positive values, how many were you able to detect and finally precision is out of the ones you've labeled as positive, how many are actually positive. So these are all useful for different reasons. If you want to detect as many nodules as you can, you want to have a high recall, but you also don't want to sacrifice precision because at that point you'll have a lot of false positives. So generally in the medical domain, people try and focus more on recall than precision because the impact is higher, right? If you can detect someone with a long nodule early on, that's very critical because it can save a life as opposed to if you get a false positive, it's still you'll probably shock that patient. It won't be good for them, but at the same time it's not on the same impact is just missing the nodule altogether. So the final ICNN was visualized using GradCAM to understand how the model is making its decisions and GradCAM is basically an algorithm that uses the penultimate or the convolutional layer right before the fully connected layers and it uses the activation from this convaler and it can utilize spatial information in this convaler that's completely lost in the later dense layers. So this is a critical step to drain radiologist trust because it can highlight discriminative regions and make the model really interpretable to domain experts. So I'll go into a little bit of the software and hardware I used. I used Keras intensive flow libraries in Python. So these are probably pretty popular. Most of you probably worked with them before and I used a library called the Keras visualization toolkit for my GradCAM algorithm and I used sklearn.metrics to get the metrics for all of the decisions and the models. And one thing is that I know a lot of people have to work with limited resources. So the idea is that that's why I used an AliceNet model as opposed to something more complicated like DenseNet or ResNet. But yeah, so my hardware is just a CPU on a Mac optimization function. I used Atom optimizer. Yeah. And that's just based on like a literature review. I thought most people had good results with Atom and it had best results compared to other optimizers. So that's what I ended up going with. So now I'll go over the results, model performance, key metrics, and then also the visual insights that were generated. So this is the AUC. So all the CNNs had pretty good AUCs close to one, showing that they have a good separability and they're able to perform the knowledge of the detection task well. And the AliceNet 3D CNN with an AUC of 0.95 performed better than the AliceNet 2D CNN with 0.94. And I can highlight more differences in the net slides, but this is just AUC. And my 3D CNN performed the best at the AUC of 0.97, which shows that these optimizations that are done over iterations and validated are effective in increasing the model classification ability. So this is a more detailed results slide along with the key metrics. So one thing that I really like to highlight is that this 0.94 recall value, it might only be 3% greater than the AliceNet 2D CNN. But the thing here is that even a 0.01 increase in recall is like saving another patient's life out of 100. So this recall value is really critical, especially if you're maintaining about the same precision. Because if you're able to increase this recall without sacrificing too much in precision, you're basically finding patients that you wouldn't have otherwise found. And by early detecting this long module, you can approach this cancer differently and you can really make a difference in their life. So the AliceNet of the 3D CNN, the accuracy of the AliceNet 3D CNN is better than 2D CNN and the optimized 3D CNN performed the best. And it also has better recall and precision values compared to the 2D CNN. So this is probably the most critical part of it, the visual insights and the model of decision making. So the images on the left are the input images that are fed into the network. And these images on the right are the grad camp generated maps. So the idea is that if we can map this out of a full CT scan, we can show exactly what point on that huge CT scan is giving an insight into the radiology, giving an insight to the radiologist that this is what's tipping off the network and saying this is why I'm predicting that there's a nodule here as opposed to not being a nodule. So some examples, this is pretty clearly the nodule in this case. And then now we can also detect this here as well. This one here. So these are pretty clear images, right? You can see where the nodule is. But then the real value is when it's not really clear to tell and it's a small point on a huge CT scan. Then this is really when it comes into play, because if we're able to really give visual insights into how the model is making its decisions, it just, it's a completely different ball game because now this radiologist can really trust this network and then it allows for higher adoption in the field. So some conclusions, 3D CNNs outperform 2D CNNs in this task. So it shows the benefits of using this 3D data with 3D kernels and how they can really improve our approach in non-nodule CT data. And state-of-the-art accuracy numbers were achieved with the optimized 3D CNN. So this indicates the effectiveness of the approach of building a model over multiple iterations and how it can yield high performance in terms of the non-nodule detection test. And finally, the study for the first time to my knowledge has demonstrated the effectiveness of applying gradient-weighted class activation mapping and shows how it can really provide good visual explanations as to why the model is predicting what it's predicting. So this is quite critical because, as I said before, and many times, general theme is that if you can really make the model interpretable, it can be really useful to clinicians and radiologists in terms of trusting the model and adopting the model. And as all practitioners, one thing we really want to do is not just have a model that can provide high accuracies, but we really want to do something in the actual field. So that's why this grad cam analysis is so critical. So future work would be to review the class activation maps in detail to understand where the model is failing, where the model is performing well, and we can further optimize the network to improve in cases where it's not doing well. And then also, how many of you know about capsule networks? Yeah, so capsule networks are like a new architecture that's been developed. So the idea here is that traditional CNNs use max pooling to solve the problem of pose. So the problem here is that a lot of important data is lost in the process. So capsule networks use hierarchical pose relationships to store this relationship. And what this means is that they can train on much less data and achieve similar results. So capsule networks have shown state-of-the-art performance on data such as the MNIST dataset. But I've yet to see anyone apply to the long-nodule task. So this will make it a logical extension of the work that I'm doing. And here are some select references on different things that I reviewed before I approached this problem. So any questions? Yeah. Yeah, so the idea is that I manually, so they give you where the lesions are. And then these lesions are identified as either nodule or non-nodule. So I just manually crop 32 by 32 around that to make it like a more approachable problem. Yeah, so that's the idea for adoption. So you want at least to know where the lesions are. And then you can chop it up there and then you can identify whether it's nodule or not. And in terms of actual CTs data, you can map these drag cam explanations back onto the full image and then provide that to the radiologist to see like whether or not each block has a nodule or not. Yeah, it was a 3D crop. 32 by 32 by 32. Yeah, thanks for this great session. So one question I do have it is related to, you know, I think you have used those binary classification in there to say it is like it is a positive or is it a negative? Does it make sense to include, you know, one more class where, you know, you are not sure about the results like let's say the value I gave like 0.6 and I'm sure it is in that direction. So that that can be something, you know, which can be fed to or can be given to expert like these are the results I'm not sure. Yeah, so that also makes sense. It's more so much like a regression type problem, I guess is what you're saying. But that's also a valid way to approach the problem. In this case, we use binary labels, but that also makes sense because what we do is we get some output and then we apply the soft max to it to figure out what the whether it's a nodule or not. But without applying that soft max, we can get an idea of how sure the model is about its decision. And then we can up with that as like a number from zero to one instead of a binary classification label. OK, thank you. And one more question, which is like in the initial you said like, see, these are these were the images which you can provide. But I think there was some gentleman who asked like, I can feed up a video as well, right? Which was just done. In that case, you said, you know, the architecture would be different. But if I would assume in the end, you will need these images, right? So you'll just take videos and then you'll just capture those images. And then yeah, so that's a general idea. So I haven't done too much work on time series data, but I know that CNNs can definitely be applied. And in terms of data that comes in series is like that, I know there's networks called recurrent neural networks or RNNs that are also supposed to be really good. I haven't really delved much into that area. But I know that definitely CNNs have a role to play in time series data like video as well. So the healthcare data is whatever the data we are getting from open source or you got it from any hospitals. Yeah, so this data, the Luna data set is open source. So it was basically like part of a grand challenge that they release some open source data. But in terms of medical data, I've worked with that as well. Generally, you have to go through some certification before you can access this. So I know for I know what I've heard from a lot of people is that electronic health records are very good data sets to use. But at the same time, there's a lot of approval you have to go through. So the more closer you get to the hospital government type data set, the more certification you'll have to go through. But there's also a lot of good open source data sets like this, which you can just find online. So that 3D CNNs, mainly we can use for healthcare or we can use for like a sport a sport recognition. Sports means that balls are above it. Yeah, so 3D CNNs, one of them is. Human action recognition. So what are the fields we can use for 3D CNNs? Yeah, so 3D CNN is one of the reasons they're so powerful along with other deep learning approaches is that they can use for anything. So anything that has an image, anything that has some kind of volume, you can apply 3D CNNs to it. So you can use it to detect literally almost anything. It's pretty much the same as our eyes. That's why it's considered to be so powerful. OK. Yeah. So what is converted into a vector of formant? Can I say I'm stacking like six vectors over each other? Yeah, that's I guess you can think about it like that. The idea here is that, yeah, it would produce a 3D volume. And obviously you can't really see a 3D volume on a slide. So what I did is I just took one slice of it and displayed it next to a slice of the 3D image, 3D volume. So a lot of the data we're talking about in this project is 3D data with volume with a z-axis as well. But to demonstrate it on a slide, what I did is basically I just cut out one piece of it and then so that we can show it. So I'm trying to understand how do you have a vector of formant? Do you have like six different vectors stacked at one layer? Yeah, so it's just like, so normally you have 32 by 32 images. But in this case, we just have 32 of those. So we just stack all these on top of one another and that's your z-axis. So you'll just have an array of 32 by 32 images. So I don't know if that answers your question. 3D model that you work with. Yeah, so I don't remember the exact numbers. It didn't cause too much of an improvement, which is good in this case because it's not too big of a data set and the models are too complex as well. But I know that I experimented with this kind of stuff on bigger data sets like 80 by 80 images, 320 by 320 images and the 3D versions of those. I know it can cause quite a jump in computational time. And one of the ways to address this is to downscale the data. And even if you don't want to downscale the data, what you can do is you can downscale it. Then you can go through multiple architectures, see what's working out, just for quicker iterations. You can get a quicker idea of what's working and then you can use it on the full data set. That way you're not wasting the time going through multiple architectures on the full data size and you can optimize what time you have. And then another approach is just to get better hardware. I know GPU training is quite powerful, TPU training. Yes, we did try a few models on deep learning with respect to 3D, the input with 3D. That was basically for something called less kidney cancer detection. But we found that 3D CNN works two time-consuming models. Have you tried on GPU training? Yes, it was a GPU. We basically work on GPUs. So CPUs are no question. Yeah. You can't wait for the entire day to get one epoch output. So it's like GPU training but we found it two times. So one approach might be just to use smaller data, get quicker iterations and then you can scale up to the full data size and then apply. Yeah, so your accuracy might decrease but what I'm saying is that if you downscale like this, then you can see what's getting better accuracies in relation to other architectures. And once you've realized this architectures what's working for me, dense nets working better than ResNet, then you can full scale back up to the full data size and then try it on that. Since you're working with hospitals, right? Are you trying to evaluate your model against your real-time data before going further in your analysis? Yeah, so future work would be to basically try and talk to a hospital see if they can implement this solution. I haven't really gone that far yet but that would be definitely something I'd want to do. Don't you think chopping 32 by 32 box into an entire city image you are losing the global information where the nodule is because radiologists they look where those nodules are. So when you make small boxes the global information is lost. So generally I feel like nodules are pretty self-contained so the spatial information you want to look at is like within the nodule itself right in this case because there's a lot of things that are just in CT scan data that just not a nodule and there's so what you want to do is you want to look at this nodule and figure out whether it's a nodule or not and that's how you approach the false positive problem and the problem is that like you want to get this full spatial information but generally nodules are pretty self-contained because if you can get the whole nodule in one chop of the data then you can pretty much figure out whether it's a nodule or not without much spatial information from other parts of the CT scan. So in this case I don't think it's too much of a problem I guess it's something to be explored whether using the full CT scan can allow for better accuracies but in this case I don't think it caused too much of an issue. All right thank you. Thank you.


If only we have eyes not to look at our mangled ruins It is painful enough suffering and stark blindness No are there to stare you in accusation To ring your conscious to consider a guilt If only we have eyes to cry so you could see our tears and hence the sights Are we worthy of your sympathy? If only we have voice that bellows beyond this wilderness To ask you is there for us For we who have been in your past and present Who watches over your kindness, your civilization rises Crumbles and rises again We who gave and give Though there is nothing to be given We who remain poor Is a kind, prospered and prospered That we name no price It's there for us A place in your future


Batman Forever is super influential. It actually got me basically watching movies again and because I'm watching movies now I'm reviewing them. Hey, what's up guys, it's Josh here. Today I wanna do a little movie review on Batman Forever from 1995. Now, I probably have the most personal backstory with this specific Batman. I remember coming to visit my grandma and my aunt used to live with my grandma. Every single time I come to visit, I'd wanna put it on. I just love this movie so much that she ended up giving it to me. I'm kind of reviewing movies now partially because of this movie so let me explain. I hadn't watched anything all the way up until I wanna say summer 2019. For some reason I wanted to see this movie again.  When I first watched this in 2019 that's what kicked off me watching movies again. From there I watched all the Batman's and then I slowly got pulled in to like the current superhero movies of the time. Basically snowballed into watching all the movies that I'm watching now. Batman Forever is super influential. It actually got me watching movies again and because I'm watching movies now I'm reviewing them. So real quick before I jump into the pros and the cons there is an extended cut that nobody has seen of this movie. The original cut is two hours and I think it's called the Schumacher cut and I think his is like 170 minute cut which I think is 40 extra minutes. Because scenes were taking out there was a lot more cons, a lot more problems with the story, things like that.  Let's jump into the pros of Batman Forever and the pros is personally I like the villain styles in the Schumacher movies better than any of the other villains. People say it's more cartoony and it definitely is more colorful but I don't really feel like they're less threatening. Like when you see Two-Face in this movie, when you see the Riddler in this movie there's really nothing watered down about them. They're very aggressive.  They're savages. So I really liked the villain style here and I didn't really feel like it was so cartoony that it took you out of it. People, that's what people say about these movies is that they're a little bit too flashy and cartoony and not as believable but I mean Batman's a comic book. I liked this blend because it was very flashy and cool but it also was serious at the same time. I love almost everything about the Riddler here. I wouldn't say he's my favorite Batman villain of all time because people say that it's basically Ace Ventura acting like the Riddler and I could kind of see that but it's just Jim Carrey at a 10 out of 10 being the Riddler to me. I absolutely love it. Riddler me this. His whole progression in this movie is great. Again, there was probably lots more details in the Schumacher cut that we missed but you know, when he's just working for Bruce Wayne and then when he's slowly uncovering things he slowly first becomes the Riddler until his final stage of the Riddler. I love that whole progression and his villainous plot also is like one of my favorites in any Batman series. So he basically is trying to create this thing to where if you watch TV it'll show 3D things in your own brain so he wants to shoot something into your brain that allows you to see things in 3D so it's like a better version of TV but when he does that he accidentally finds out that he can suck the brain power out of people so that's what he starts doing. He starts putting these machines in front of people's TVs. Everybody's watching the TV. They get the 3D experience but then he's also stealing their brain power and then later on he finds a way to basically map somebody's mind so if you go into his machine he can read everything about your mind so basically if he were to get Bruce Wayne to go into the machine he can read his mind and he would know that he's Batman. I just think it's one of the best villainous plots that I've seen anywhere in Batman. If they had this 170 minute cut it would have been way more in depth but you see just enough here and I still really like it. If you look at the new Batman from 2022 the Riddler has these notes that he gives to Batman and they're just very bare bones. The whole movie is bare bones, the new Batman which I kind of like it and I kind of don't but I love the Riddler boxes here. I just like the complexity. I prefer these to the 2022 version. I think Two-Face's attention to detail is a pretty impressive. Like he always has the very intricate outfit cut in half. He always refers to himself as like we and us because he has like two different personalities. He'll have like two drinks like one drink over here, one drink over here.  There's just so much attention to detail with Two-Face that I love. I loved his character. I think he's aggressive. I liked Robin's story here. Again, very underdeveloped but it's a great introduction to bringing him in. I think that's one of the more memorable scenes is when his whole family dies trying to defuse the bomb that Two-Face has. So I do think it was a very good way to introduce Robin. I wish we had a more time with everything and breathing with everything but I really did like how they brought Robin in here and that scene was pretty intense to me. I really liked Val Kilmer and Nicole Kidman. I could see people saying Val Kilmer is a little bit vanilla but if you go back to the original script the whole point of Batman Forever was that Bruce Wayne is a little bit lost and by the end he kind of rediscovers himself and he's Batman forever. So he is supposed to be like not fully in the zone in this movie to the very end but I really like both their chemistry. I like both them as actor and actress. I've seen them do much more extreme better roles but this role didn't really require them to do anything extra. I really like them. And the last thing I really liked about this movie was the soundtrack. I just really, really like the soundtrack here. It's not every single time I hear any noise in this movie or any music it's good but the soundtrack I really, really, really like it here. It's very catchy. It's very memorable. It always gets me to fill things or most of the time it does. Let's jump into the cons they have this movie and the cons right off the bat. It has some pretty bad CGI. Now they don't really use it too often but it's used a little bit in the opening scene and when they first introduced the Riddler they have this kind of like far zoomed out camera scene basically coming up to like the window where the Riddler is at but the whole thing is CGI. It looks completely fake but CGI here isn't that good but it's also not used very much so I don't really have too much of an issue with it. I just wish it wasn't so much right in the beginning because there's very little of it later on. Another con is the underdeveloped script. I mean literally nothing has time to breathe. You don't have really much time to breathe with Val Kilmer and Nicole Kidman. You don't only have too much time to breathe with Robin because Robin's pretty much distraught. He moves into the Wayne Manor and there needs to be this kind of like slow progression to him turning to Robin but it's kind of just like he's there, he's upset and then all of a sudden he opens the door he knows what's in the Batcave and he becomes kind of Robin from there. The one that I wanted to see the most development on was the Riddler. I think there was a lot more time of him becoming the Riddler, discovering himself and just his whole progression. I loved his progression from beginning to end and I would just love to see more parts of that. And then also the main point of the movie is Bruce will have these visions where he kind of feels lost, he'll remember something and he'll be like, oh, there's like a black book and he always gets to the black book and you know about this black book but he never really opens it or figures it out. So in the original cut of this movie, the Riddler and Two-Face end up finding out where he lives, they take over the Batcave and he pretty much has amnesia from that point and in the cut that we have now, he just basically gets knocked out and wakes back up and just goes back to work but in the original cut of the movie, he gets knocked out, he has this kind of amnesia. Basically he finds this black book and it reveals that he's not responsible for his parents' death cause he was feeling guilty and then there was supposed to be this really big bat that Val Kilmer was supposed to stand next to and basically he's facing the bat, he's becoming Batman forever. So there's this whole subplot of him looking at this book that goes nowhere and it's like if you're gonna cut out the final scene with the book that makes everything make sense, like why keep those little dream sequences makes it kind of like an incomplete movie. They were supposed to start off this movie with Two-Face escaping from Arkham Asylum but I think they didn't do that because it was too dark or I have no idea. So the movie just starts with you seeing Batman and if you've watched any of the other Batman movies, everything starts with the villain first. I mean, you look at the one with Bane in it. Bane takes over the plane in the beginning. First thing you see, the one with Joker in it, Heath Ledger. First thing you see is them at the bank. So it's really nice to establish the villain first and then see Batman, but this movie was all cut into pieces so much that you see Batman first. You don't even see Two-Face escaping. So I understand everybody's hate with this movie. I really like it. I really enjoy it. I really wish they didn't cut it so bad, you know, down to only two hours. Like this movie needed to at least be like two hours and 20 minutes. I totally understand everyone's hate with this movie. I still have a lot of fun with it. If I had to rate it, I would rate it probably like a 7.5 out of 10 and buy, try or pass. For me, it's a solid buy. I love this movie, but for you guys, I would say it's a solid try. Like, I used to see people watching this and like hating it and like not liking it and say, it's like, oh, I can't believe you ever recommend this to me, but to be honest, I really like it. It's one of my favorite Batman's still to this day. Let me know what you think of Batman Forever. Let me know what your favorite Batman is. One on the road to 50,000 subscribers and I couldn't do without any of you guys to help you guys are the best. Having a great day out here. Hopefully having a great day at home. See you all in the next video. Peace.


and welcome to this last lecture of this lecture series on high performance computer architecture. In this lecture, I shall consider the topic cluster, grid and cloud computing. So, these are the three topics which are little interrelated, but definitely they are not same and I shall consider them one after the other and as we cover different topics, we shall highlight their differences also. First, let us look at the motivation behind cluster computing. You will find that there are many applications that require high performance computing. So, numerous applications are nowadays available or present which requires high performance computing and that can be satisfied with the help of cluster computing and some examples of these high performance computing requirement, I mean which requires high performance computing is given here. Number one is numerous scientific engineering applications like modeling, simulation and analysis of complex systems like climate, galaxies, molecular structure, nuclear explosion and weather forecasting and so on. And also, there are applications which require high performance computing in business and internet applications such as e-commerce and web servers, five servers, databases and so on. And for these applications, if you want to have a very dedicated computer, custom made computer with custom software, it is pretty costly and moreover, this custom hardware and software does not allow, I mean not only they are very expensive, they cannot be, they are not extensible. That means, they cannot be extended as the requirement goes up. So, I mean some kind of supercomputers are needed to satisfy this high performance computing requirement, but unfortunately they are not extendable. The cost effective approach is to use cluster grid and cloud computing for these high performance computing to satisfy this computing requirement and as we shall see how these are performed in these three situations. And as I have already mentioned examples applications of cluster computing and which has, I mean you may be asking in which situation you will use cluster computing.  So, as I mentioned high performance computing is the main motivator and it is an alternative to symmetric multiprocessing to provide high performance and availability and as a consequence, clustering has become a very hottest topic in computer system design. You may be asking how do you define cluster computing? Actually, it can be defined as coordinated use of interconnected autonomous computers in a machine room. That means, you are interested to perform the computing with the help of a interconnected array of computers inside a single room. It is not that they are dispersed throughout the country or throughout the large geographical area, but in a machine room. And you notice another term, autonomous. Autonomous by autonomous we mean each and every computer is a complete system, can work independently without the need of others, that is why we call it cluster computing. So, you can say collection of stand alone workstations of PCs that are interconnected by high speed network, may be a local area network and work as an integrated collection of resources. So, you find in addition to this, you know I mean the important feature is you have a large number of systems, but at the same time they work in a integrated manner and they provide a single system image. They have a single system image spanning all its nodes. So, this is a very important concept. You will require a special software layer to provide this as we shall see. Actually the cluster computing has become popular because of two reasons. Number one is nowadays you can have personal computers, which are pretty powerful at a very affordable price. Similarly, you can have computer networks like switches, different types of switches, which also are available at a very low price. So, these two is the main motivation and so that means it is now possible to connect cluster of workstations with latencies and bandwidths comparable to the two tightly coupled machines because of the advancement of your networking technology. So, we can build a system by using commodity of the self components. What are the commodity of the self components? We shall be using standard PCs or workstations and we shall be using standard networking components. So, clusters started to take off in 90s. Clusters of IBM's and Decox stations are connected by 100 megabit Ethernet LAN, HP clusters and so on. So, you can see we are using standard local area network to link different nodes. As I have already mentioned, although you have got several interconnected computers, but it gives a single system image and it gives you high performance and it is very inexpensive or you can say this is low cost alternative to inexpensive computers. So, this single system image makes a cluster appear like a single machine to the user. So, you can say if you look at different components of a cluster, it consists of stand alone machines with storage, a fast interconnection network, high speed LAN, low latency communication protocols. So, not only you will be using hardware, I mean fast interconnection network you have to use suitable software which will provide you low latency for communication and software to give single system image that is known as cluster middleware. And of course, you will require a host of programming tools to utilize the cluster. And there are possible different possible configurations, one is passive standby to make it reliable or to make it more available and active secondary, then you can have separate servers, you can have servers connected to disk, servers with shared disk as it is shown in this diagram. Here you have got two computers shown here, I mean here you have got one you can say a number of processors connected to a shared bus and this is connected to another system which is also having multiple processors and with shared memory. So, these two are shared memory multiprocessors, these two are connected together with a high speed messaging link to work as a cluster. This is another configuration in which you can have not only high speed messaging link, but you may have a shared hard disk, so in the form of redundant array of inexpensive or independent disk. So, here a red is shared by these two systems through IO buses, so this is stand by server with shared disk. And for a cluster, you must be having operating system and these are the various design issues in the context of clusters, first of all you have to take care of failure management. So, whenever you are having a large number of computers, some of them may fail, so it will tolerate failure, then it will recover from failure. So, you will require software for operating system will take care of failure management, then you have to do load balancing, the load has to be uniformly distributed among all the nodes in a cluster, then you will require parallelizing computation, because you will be doing a kind of parallel processing with the help of these the number of computers. So, you will require parallelizing compiler, parallelizing application, which is amenable to applications, which are amenable to parallelism, then parametric computation. So, these are the operating system design issues in the context of clusters, then you can here are the two basic categories or types, one can be non-dedicated clusters, so they are essentially you may say general purpose in nature. So, for example, a network of workstations, use pair computation cycles of nodes and background job distribution is done, individual owners of workstations, so these are non-dedicated, then you can have dedicated clusters with joint ownership, having dedicated nodes and which will also allow parallel computing, then you have got you can have homogeneous clusters, another way of classifying is homogeneous and heterogeneous. So, homogeneous cluster will have similar processors, all the nodes will be identical or similar software operating system and software present in all the components all the nodes in a cluster, alternatively you can have heterogeneous system with different architecture, data format, computational speed, system software, that means operating system and so on. So, let us see what are the advantages and disadvantages of clusters, obviously main advantage is it gives you high availability and resilient to failures, that means since you have got large number of computers, if one or two fails, still it will continue to function and as a consequence it gives you high availability and then second important feature is incremental extensibility. So, as your requirement keeps on increasing with time, you keep on adding nodes in a cluster, so you can increase the number of nodes in a cluster in a incremental manner and desktops are cheap and ubiquitous, so this is another important advantage. So, you are able to provide high performance computing at a very low cost, no need to buy dedicated expensive hardware, so you can use commodity of the self type of desktops for your application for developing a cluster. So, these are the advantages, of course you have got several disadvantages, number one is administration complexity, so since you have got your administering n node cluster, I mean administering n node cluster is close to administering n big machines, the reason for that is each machine is autonomous with hardware operating system, application software and so on. So, as a consequence each of these nodes are to be administered independently and separately, so administering n node multiprocessor is close to administering one big machine. So, whenever you have got multiprocessor systems a shared memory multiprocessor system, there you can have only it may be considered as one big machine, but that is not true in the context of clusters, so and also it gives you higher cost of ownership. And second important disadvantage is these computers are connected through IO bus, so in case of you know we have seen shared memory multiprocessor system or massively parallel processing systems, the processors are connected through memory bus. So, memory bus has got higher bandwidth and smaller latency, on the other hand whenever they are connected to connected using IO bus, the bandwidth is smaller and latency is larger, so lower bandwidth and higher latency you can say, so higher part is missing here, so it will be higher latency. So, this is the disadvantage and another important disadvantage is n machine cluster have n independent memories and n copies of operating system as I mentioned earlier. So, since each is autonomous you will be having independent memories, so that they can work independently and n copies of operating system, so because each can again operate independently without the need of others. And here is another advantage large computers have small volumes, so whenever you are building a large computer, then cost has to be amortized over few systems, so this results in higher cost, on the other hand in case of clustering, you have got large number of low cost systems as a result the cost is much smaller. So, administrative complexity can be mitigated construction of shared memory multiprocessors and keep storage outside the clusters, so you can keep the storage outside the clusters as it happens in case of storage area network. So, these are gives you some components which are used like the local area network that is being used, you can use high first ethernet or gigabit ethernet or myri-net, so these are the type of networks that can be used for connecting or infini-band, which gives you 100 megabits per second. So, you can see these are the rates 11.25 megabits per second or 110 megabits per second or 200 megabits per second or 800 megabits per second, so the speed is quite high and distance maximum of course, distance is limited you can it has to be within 100 meter, that is why I said that it has to be within a room, but it did not be really within a room, so 100 meter is quite long distance and you can connect about 100 nodes. So, storage area network tries to optimize network of performance for short distances for example, as it happens in case of infini-band. So, you have much lower protocol overhead and much less security concern as it happens whenever you do the communication through internet. So, let us have a look at the taxonomy of clusters, one is network of workstations example is Weyulf clusters, where it use course of course, species that we commonly I mean commodity commodity of the selves of the self species with storage area network and you can have cluster forms existing species on a land, which when idle can perform work or super cluster or constellations, where you can have cluster of clusters that is within a campus. So, these are possible ways in which you can build clusters, so these are some of the examples the top diagram shows any processor clusters each processor here you have got a single processor with its own dedicated memory and IO. So, you have got a large number of such processors connected through a ethernet switch 1 GB ethernet switch, here you have two way symmetric multiprocessor cluster, because each node is having two processors with a shared memory and IO and these are connected through 1 GB ethernet switch. And the third diagram that is shown is a 8 way SMP cluster, here you have got 8 processors in each node with a shared memory and IO and which are connected with the help of again 1 GB ethernet switch and of course, ethernet switch may be connected to internet. So, these are the 3 different types of cluster shown here based on uniprocessor nodes 2 SMP nodes or 8 way SMP nodes and this is how the connections can be done flat neighborhood networks, this is how the interconnection can be made and this particular topology is known as FNN or flat neighborhood networks. So, this diagram shows the layout of 24 node FNN of flat neighborhood networks, here as you can see you have got 24 nodes 1 2 up to 23 0 to 23 24 nodes each having processors memory and IO devices and these are connected with the help of 3 16 port gigabit switch. So, 16 port gigabit switch, but one point you should notice is that each node is connected to 2 switches. So, you have got multiple network interface card NIC stands for network interface card that means, each node is having multiple in this particular case 2 network interface card, each network interface card is connecting to 1 of the switches. So, 2 NIC is connecting to 2 switches. So, this is how this is this in this way the communication between any 2 node can be done using a single hop. So, it requires you can get it requires special routing to be set up at each node 348 port switches can be used to connect 64 pcs each using no more than 2 NICs per pcs. So, this is a very interesting topology and it can be used to realize clusters. This is an example Beul cluster NASA built first Linux pc cluster in 1994. So, it is a low cost network pcs computers connected to one another by a private ethernet network. So, connection to any external network is through a single gateway computer and configuration is you are having commodity of the self components such as inexpensive computers and blade components are used. That means, computers mounted on a motherboard that are plugged into connectors on a rack. So, you will be using a rack on the back plane. There are connectors and each of the blades can be pushed to connect to the system as I shall show you and shared this can shared nothing model is possible and whenever you go for this type of cluster. This shows a single Beul cluster as you can see this is the connector which can be connected to the connected to the back plane. Here it shows two processor this is one processor this is another processor to two processing modules which are present in a single blade. This Beul project of NASA used Linux and public domain software. So, they did not go for any custom software. So, custom software is not being used and standard commodity of the self software has been used. So, made some changes to Linux kernel to support things like channel bonding. So, we have seen multiple ethernet channels are used to connect, but to connect into a single virtual channel to overcome bandwidth limitations. We know that the ethernet has a limited bandwidth like 1 megabit per second or 10 megabit per second whenever you go for gigabit ethernet. But, if you want higher bandwidth you can use a special type of technique and this is what is being done known as this it can with the help of this special technique you can combine multiple ethernet channels into a single virtual channel. So, you can have more than 1 gigabit bandwidth. So, this will overcome bandwidth limitation and they will clusters have become very popular and you can have nodes up to 1000 nodes in a single system. Another example is Google infrastructure. Google serves on an average 1000 queries per second. All of you are familiar with I mean use of I mean you are using the service provided by Google for email that is Gmail and all those things. So, that is serviced with the help of this infrastructure. So, in addition to this it is serving the queries a search engine must crawl the web periodically to have up to date information. So, this is used for web search web servers more than 6000 PCs and 12000 disk give 1 petabyte of disk corage rather than using red. This Google infrastructure relies on redundant storage and sites. So, each PC is a Linux and this is only the biggest source of failure is a software in case of this infrastructure because you have got a lot of redundant PCs, computers and other things. So, only source of failure is software. So, this diagram shows Google infrastructure. You can see here different racks on. So, 10 racks in here 10 racks here. So, you have got 40 racks connected by 4 copper gigabit ethernet and that links 1828 into 128 switches. So, you have got 128 by 128 switches and one rack contains 80 PCs. So, each rack is containing 80 PCs and you have got 40 such racks. So, you can imagine the total number of such PCs are present here and you are using that OC 12 and you have got OC 45 that gives you 622 megabits per second or 24988 gigabits per second that I mean that is the rate at which you can communicate with this end switch. So, end switch gives you faster access to the entire infrastructure and you have got 2 such end switches at both ends. So, this is the diagram which shows the way this is a single rack and close the view of one rack PC. So, this diagram shows you Google infrastructure. This is another view of the cluster that is implemented with the help of Google infrastructure. Then you can have cluster of shared memory multiprocessors. So, high bid cluster of shared memory multiprocessors can be used this is often called constellations. So, this is efficient shared memory programming at the individual nodes is possible because H is having a shared memory multiprocessor. So, this is better suited for implementation of distributed shared memory multiprocessor and this is meaningful only P way node not much expensive than P individual nodes. So, this is what has been observed that if you implement a P way node that means each node is having P computers that is cheaper than to have P individual nodes and then this is meaningful and that is what is being done. An example is Orion system. So, we have discussed about one very important topic that is your cluster computing and how clusters are implemented various topologies and at the end we have shown some example. Now, we shall focus our attention to another way of computing, bid computing. So, why the name grid computing? So, this the term grid computing originated in the early 1990s as a metaphor for making computer power as easy to access as an electric power grid all of you are using electric power. So, as you know there is a that electric line that electric line is connected to each and every house and we can access it without much of botheration. So, we know that each plug point will provide you 220 volt or 120 volt depending on where you are and that is the main feature. So, power grid is transparent to the appliance. So, whether you will be running a computer or you will be running some other appliance, it does not matter you get the power and you can run different types of systems without bothering where from the power is coming and how the power is available and it is all pervasive. So, it is available everywhere and any power point provides same power that means you get 220 volt at each and every point. So, that is power availability is same at different points. So, that is what is the main feature of grid computing. So, availability is uniform from different places. Similarly, just like power grid in compute grid is transparent to the user. So, this compute grid is transparent to the user although it is distributed throughout the country that means it is accessed through wide array network and it is pervasive and compute power is independent of where a job is initiated. So, you can initiate a job from anywhere and you will get the same computing power for performing an application. So, this question naturally arises what do you really mean by grid computing. So, this is alternative to traditional large parallel or distributed systems which can provide better computational power for high end applications this is known as grid and this is an innovative extension of distributed computing technology. So, grid computing is a kind of distributed computing, but it is not the way traditional distributed computing is done. So, it leverages a combination of hardware and software virtualization and the distributed sharing of those virtual resources. These are the two basic concepts first of all hardware and software virtualization second is distributed sharing of these virtualized resources and these resources can include all elements of computing. So, like hardware software applications networking services pervasive devices and complex footprints of computing power. So, you can see you can have different types of different elements which are virtualized and available. So, it can be actually sometimes grid computing is also referred as CPU scavenging or cycle scavenging or cycle stealing or shared computing creates a grid from unused resources in a network of participants. So, what is happening here you have got large number of participants and all of them are performing their own job. However, each of them may have some additional or additional or extra computing power available and which is being utilized in grid computing by others through the internet. So, where worldwide or internal to an organization. So, it can be this grid computing can be done through I mean across the world or internal to an organization. So, IBM's grid computing has put forward that actually basic idea was use open standards and protocols to gain access to computing resources over the internet. So, you are gaining access of computing resources over the internet and you are using large number of small systems spread across a large geographical area region and it presents a unified picture to the users. So, here also it is giving some kind of unified picture to the user. So, you are not really consciously accessing each of the each and every different computer. So, you are accessing a grid. So, where from you are getting that computing power is transparent to you and this availability of high speed networking surmounts the distance problem. You may be asking how you are able to get high performance through wide area network. The reason for that is you know because of the advancement of wide area network technology. Now you can have high bandwidth of access through internet and that is how this availability of high speed networking is possible and it surmounts the distance problem. So, the grids can be divided into several types.  So, data grids must focus on data location, data transfer, data access and critical aspects of security because you are handling data, then data collection, storage retrieval from a large number of bases. So, this is the function of a data grid. Similarly, you can have compute grids. It provides users with compute power for solving jobs. So, the ability to allow for independent management of computing resources, the ability to provide mechanisms that can intelligently and transparently select computing resources capable of running a user's job. The understanding of the current and predicted loads on grid resources, resource availability, dynamic resource configuration and provisioning. So, these are the features, then failure detection and failover mechanisms. So, this ensures appropriate security mechanism for secure resource management, access and integrity. An example is SETI at home. This is an example of a grid computer. And you can have three different types of grid environments. One is global grids, second is enterprise grids, third is cluster grids. So, global grids are collection of enterprise and cluster grids available across the globe. Then, enterprise grids are multiple projects of dependent departments here, resources within an enterprise or campus. So, this is the enterprise grids. So, it does not address security and global policy management issues because since it is restricted within an enterprise, it is not necessary to address security and global policy management issues which is required in place of global grids. And third type is cluster grids. It is the simplest form of grid. It provides compute service at the project or department level. The key benefits of cluster grid architectures are number one is maximize use of compute resources such as renaissance machines and increased throughput for user job. So, these are the two key benefits that you achieve with the help of cluster grids. And cluster grid is a superset of compute resources such as renaissance clusters. So, cluster grids can operate with a heterogeneous environment with mixed server types, mixed operating systems and workloads. So, this is another very important feature. So, you can have heterogeneous environment. So, this is a, I mean, comparison between P to P computing and grid computing. All of you are familiar with peer to peer computing which involves a large number of nodes connected loosely and this P to P computing is primarily used for sharing files. So, you can distribute files over a large number of nodes. Then for efficient sharing, you distribute. Then you access from different nodes. That is the basic idea of peer to peer computing. On the other hand, grids provide unified view. So, target solving some specific types of problems such as scientific research, business logic support, etcetera. So, it is not restricted to only file sharing. So, here is a comparison between cluster computing versus grid computing. So, as I have mentioned, cluster computing can be said to have a subset of grid computing because cluster nodes are in close proximity and interconnected by LAN as I have mentioned and grid nodes are geographically separate and connected through wide area network or when. So, clusters provide guarantee of service. Nodes are expected to give full resource. On the other hand, clusters are usually a heterogeneous set of clusters. So, since it is distributed throughout the network, availability and performance of grid resources are unpredictable and request from within an administrative domain may gain more priority over request from outside. So, this is another feature that has led to, I mean, that differences in availability of different systems. Availability and performance of grid resources are unpredictable because of many reasons and this is one of them. So, this is that example, Sethi at home that was developed for to detect and alien signals through a any SIBO radio telescope was largest telescopes. So, this used the ideal cycles of computers to analyze the data generated from the telescope. So, over 500,000 active participants, most of whom run screensaver on home PC. So, from these active participants, the computing power is being used to analyze the data generated from the telescope and performance on the average over 20 teraflops per second. So, you can see, you can achieve massive performance because of large number of participants although each of them is probably giving only a fraction of their computing power. Now, the big question is at some level and all applications here common needs, how it is being done? So, how to find resources, how to acquire resources, how to locate and move data, how to start and monitor computation and how to manage all I mean manage it all securely and conveniently. So, for that purpose the software that is being used is known as grid middleware. So, a single software infrastructure supports all these all the above features. So, these are the different middleware components number one is grid information service EIS and support this supports registering and querying grid resources grid resource broker and user submit their application requirements to this grid resource broker. Then grid resource broker discovers resources by querying the GIS, GIS means this grid information service. Then you have got grid fabric which manages resources like computers, storage devices, scientific instruments etcetera. Then you have got core grid middleware and this offers services like process management, allocation of resources, security and quality of service and so on. And user level grid middleware and this offers services like programming tools, resource broker, scheduling application tasks for execution on global resources. So, you can see this grid computing is feasible over a large geographical area with the help of this grid middleware components. Now, we have come to the last topic that is your cloud computing. Cloud computing is also a kind of distributed computing. I mean some are similar to cloud computing to grid computing. In case of grid computing we have seen with grid computing one can provision computing resources as a utility that can be turned on and off. So, here in grid computing it is done in this way you can provision a resource and after the provisioning is done you may utilize the entire resource or you may utilize it partially and then if you do not need it then you can turn it off. That means a particular resource provisioning can be done and you turn it on or off, but whenever an utility is being used it is not guaranteed that you are utilizing the entire resource. And this cloud computing goes one step further with on-demand resource provisioning. So, here we are not really a particular resource is turned on and then it does not allow instead of turning it on and then you can using it partially or not in this case a concept called resource provisioning is done. So, resource provisioning means you need whenever you need it and as much you need it you use that. So, this is the on-demand resource provisioning in contrast to on-off type resource process provisioning done in grid computing. So, cloud computing is internet based computing whereby shared resources, software and information are provided to computers and other devices on-demand. And one big advantage of this on-demand resource provisioning is that you pay for the bandwidth and server resources that one needs and when the requirement is over then the turn the whole thing off. So, you are paying only for that part you are using and here are the benefits of cloud computing customer avoids capital expenditure of the company. That means here what you are doing you are not really deploying costly infrastructure. So, you are using third party infrastructure to perform your job. So, this is one very important concept. So, this reduces the cost of purchasing physical infrastructure by renting the usage from a third party provider. So, you are only renting a part of the resources provided by a third party. So, instead of in contrast to grid computing this eliminates over provisioning when used with utility, utility provisioning utility pricing. That means instead of as I mentioned whenever in grid computing it may lead to over provisioning, but in case of your cloud computing over provisioning is not done. And as a consequence your you pay only a very small part and when used with utility pricing that means you are using utility and as much as you use you pay for that. And it also removes the need to over provisioning over provision in order to meet the demands of millions of user. You see in not only you are paying less, but it is also helping others this you should understand. So, you are taking or you are consuming only as much as you can. So, the remaining part is available for others. So, in this way grid computing can afford to give service to a large number of users. And with grid computing companies can scale up to a massive capabilities in an instant without having to invest in new infrastructure, train a new personnel or license new software. So, you can see a company whenever you need massive computing it can scale it up by hiring resources from a third party. And as soon as the computing in the third high performance computing is over you simply turn it off. Similarly, you can use massive storage whenever you need it and whenever you do not need it you simply turn it off. And also you do not you can use a special software there is no need for to license a new software. So, even not doing the licensing the license is not your name license is in the name of the service provider. You are simply using it and you are paying for your for the for your usage. So, without having license of the software without having without purchasing the software without purchasing the hardware you are able to use them for your to your advantage to your benefit. This is the benefit of cloud computing. And there are three important segments of applications. First one is known as applications. So, applications software as a service. So, which is known as SAS in short SAS provides a complete turn key application. So, complete turn key application such as enterprise resource management through the internet. So, you what you are doing here you are using a an application complete application through internet provided by a third party. Second type of second segment of cloud computing is platform. So, platform as a service. So, which is known as PAS. So, PAS offers full or partial application development that users can access. So, it a platform is is provided to you for for for full or partial application and that can be used and with the help of this segment second segment platform segment third is your infrastructure. So, infrastructure as a service or IAS. So, a consumer can get service from a full computer infrastructure infrastructure through the internet. So, without procuring it you are able to get full service full computer infrastructure through the internet provided by a third party. So, these are the three main segments which are mainly available through cloud cloud computing. Now, let us look at the different benefits and advantages of cloud computing. So, the benefits are you pay per use that means as much as you use you pay for only that and you can have instant scalability as soon as your requirement increases you can scale it very quickly and you can scale down very quickly as in an instant because you are not deploying it deployment is it is deployed by others. So, based on your requirement you can you can scale it up and scale it down and only you only you pay for the for your use. Then you can have high security high security is provided through cloud computing and you can have high reliability as well because when it is in cloud computing as you have seen you have got large number of computers and systems and it gives you high reliability and it also gives you high APIs. So, these are the these are the benefits of cloud computing and the advantages of cloud computing is listed here it provides you lower cost of ownership. Since, you are not deploying anything you are not buying any infrastructure hardware or software your cost of ownership is very small. So, it provides you lower cost of ownership and reduce infrastructure management responsibility. So, infrastructure management responsibility is also not with you since it is not part of you even not really performing the infrastructure management. Infrastructure management is done by a third party you are simply using it and this is one advantage and it allow for unexpected resource loads. So, whenever you have got unexpected resource load we have got large number of load you can very easily scale it up to meet the load then faster application roll out. So, because of these advantages you are working on an application by using the infrastructure and the sources of cloud computing using cloud computing you can complete it and you can roll out your application very quickly. So, these are the main advantages and this cloud economics is based on multi-tenanted. So, that means you can have multiple resources you are using as tenants and virtualization lowers cost of cost by increasing utilizations. As I have mentioned hardware and software are virtualized and it lowers cost by increasing utilization of the resources and economics of scale afforded by technology. So, since large number of people are using it you know that the as a result cost is divided among a large number of users. So, economics of scale afforded by technology. So, technology itself is providing this sharing of cost by a large number of users and automated update policy. So, that means that as and when as the requirement keeps on increasing the infrastructure infrastructure is also upgraded to satisfy the requirements of users whether it is hardware resource or software resource the resources are kept on increasing. So, these are the different aspects of cloud computing. So, to summarize in this lecture we have discussed three important types of computing. First one is cluster computing that is primarily used for high performance computing and we have seen computers are within a small geographic area that is LAN. On the other hand grid computing and cloud computing in case of grid computing and cloud computing the sources are distributed through internet and of course in grid computing it is done in one way and in cloud computing it is done in one way and because of many benefits and advantages of cloud computing it is becoming increasingly popular. Thank you.