So, hello everybody, I am Kim, I am up again. So today I will be sharing some of experiences that I had for taking Pocky, the reference distribution that comes with Yachto, and use that into, you know, customize basically that into a distro phone, and, you know, various features that are there, they are not the only ones, there is a lot more to it, but I will cover the features that I customized. So this is the reference distro that comes with Yachto is the Pocky build system that Dave also mentioned in the morning. This is the reference distribution that comes with the Yachto project. And there are certain variables that are available, which are, which define the various distro policies. And so first thing you could go is, you could essentially take one of the standard distro configurations that are part of Yachto, essentially Pocky.conf. This is the Pocky reference distro LSB, again, and the tiny is for the small footprint projects. So depending upon your project that you would like to work on, you could pick one of these or more than one of these, and then we will go through what we change to make it our own. So these are the variables that define certain parts or identifying your distribution. So distro is a variable that defines your distro name. Essentially it's a weak define in Pocky distro. Once you take Pocky distro and define your own distro, you can rename it to something of your own. Distro name, again, this appears in various, you know, mod D messages and all those things. And the maintainer, which gets into the package feeds and the metadata that goes into packages. So you can add that, a lot of information to maintainer that's very helpful in pointing your end users to, you know, write mailing list or person or whatever the website you want them to look at. Target vendor, it goes into the middle part, the vendor part of the triplet, the new triplet. So when you build your SDK, for example, and you want to identify that with your distro, you could use a target vendor string. SDK vendor is very similar to target vendor. And distro overrides, essentially, you can add your own override that are particular to your own distro. You might have certain features that are your distro specific that you want some metadata that you define later on to acknowledge. So you would add those new overrides into your distro overrides. And there are much more variables. If you go through that pocket.conf, there are more variables that are defined in there. And I would certainly suggest that, you know, look at that and customize that as per your needs. And essentially, the next thing is adding your own layer. So there is actually a sample file, vblayers.conf. It has the standard layers that are part of Yachto or rather the reference distribution that come with it. So you would just append your layer to this one. So I just call it meta-foo, it could be something different. It doesn't have to start with meta. It can be anything. It's just a name. And you would just append it to there. And this will notify bit by bit to parse this layer for configuration and metadata. So if you have to customize, say, your local.conf, for example, for some reason you don't want to use pre-linker and by default, pocky's distro configurations, it uses pre-link. So you would define your own user class in your own local.conf and you would omit the, for example, image pre-link from the user classes that would avoid the pre-link step when your image is being generated. So you know, some architectures you use, pre-link is not supported or pre-link has certain bugs, for example. That could be not only to pre-link, I just pick an example, but there could be more that kind of situations where there is a feature you really don't want in your distro. So you could define those also in your local.conf sample, essentially when you use pocky's scripts, which is to start with setting up your local.conf and all those things, it will pick your changes from your local.conf.sample. So moving forward, if you want to build multiple BSPs, for example, if you have a PowerPC part and another one is, say, Intel part, so there are a lot of BSPs already available. I just picked one of those which is not default in Yocto when you check out Yocto. So say you want to add a machine that's available in free-scales BSP layer and another one from MetaIntel, which is a collection of all the Intel BSPs, say Crystal Forest, for example. So we just mentioned that you add the layers into bblayers variable, you just add these three layers into your bblayers.conf and it will set up BitBake to look into these layers for additional metadata. This way, yes? So corebase is defined in bitbake.conf, correct? Yes, that's right. So that's why you are modifying the sample file because essentially then this sample file will be used to generate your eventual bblayer.conf. So during that phase, then this will be replaced with the relative path that you have set up your Yocto to be in. So you have your BSPs and without doing any changes, now you can build for these machines using Yocto once you add those layers. For example, if you build for it, you can choose your machine to be Crystal Forest and build standard images that are provided because we haven't yet modified images, so you can build one of the standard images like coreImageMinimal or coreImageSata or any of the LSB images that are out there. So the next thing is you want to tweak the recipe. So you might want to add certain bits but not really overhaul the whole recipe. So you want to probably use it as it is, but there is an additional knit that you want. That's what the bb offense are for generally. So bb offense are patched by bitbake. Essentially, it's parsed. The recipe is parsed and then bb offense are added to it and eventually that makes your complete recipe in the end. So there is a mechanism to bump up the revision to show that you have a bb append and the PR ink, this magic here essentially takes up whatever the, but these things are actually were there when we had PR quite a bit, but now there is PR auto-generated. So essentially, that will bump up the PR by one, whatever the base PR of the recipe was. So likewise, you can do this little tweaks that you want to do in your own layer of course and since your layer is parsed, it will be appended to the main recipe and acted upon by when bitbake parses it. So many a time you want to change certain things like maybe file layout or something like that. You could also override those configuration data like file permissions and so there is a file for creating files and associating permissions for various directories and you can go in there, you can adapt that to your own file structure if you will and you can change those too. So it's very flexible from that point. However, when you override configuration metadata, you have to always maintain that sync. So you update to the next version of Hockey and it has now few additional bits in there and you have to sync your versions of configuration data essentially, but if you have bb append, bb append will just add to whatever changes are done in the proper recipe. So you already get those changes, but if you override it completely, then there is that part that can come by to you. So just be careful. So I think it really depends. Usually it depends on like if, so the question is, is it intended to modify for both SOCs and machines? So essentially it's not tied to any machine or anything. I just took an example. It could be anything and machine I took it as an example, but SOC override, the SOC family override is one override that you could use. Yes, it's say in a practical case you have a change that applies to many machines that are based on same SOC family and you happen to have a SOC override available for those. Then you would go and change and override or use SOC override to do that kind of changes, but it's case by case basis because you're tweaking it, you know best what you're tweaking it for. Yeah, sure it is possible. You could do that like you could write a say you're trying to change a install. So you want to install a particular file additional to whatever is installed. You would just write a do install and append and give it a override of your machine name, whatever machine you want it for. And essentially that will just work for that machine, but be sure that what it would also do is it would change that recipe to be built for say you know you have three different machines now, right? So the recipe becomes machine specific. So now it will be built separately for that machine if it is a common recipe. So it depends like what priority you have. And so BBA pens are applied one after another. They're not essentially they're added one after another. They're not overridden per se. So it's not like you got five different layers doing BBA pens, right? And so the last one is hold or something like that. It will append all of them. So it's just like adding to the end of it, think in that way. The order will be like depending upon like you know how it is parsed, right? So you could use BB mask or something like that to mask, you know, say you don't want certain say recipe support, right? So you would define your BB mask for that. And then it will it will be big will ignore it. No, I think they stack on each other. It should be always like that. Yes, yes. Oh, yeah, I remember. Yeah, that I think that implementation was totally different than what really went upstream into big day. Yes. So basically, Richard is saying same thing saying that you know the BB pens. The question was that there was a case when BB pens, it only took one BB pen. And then you have to specifically include it. That was Montevista's case. So essentially Richard was clarifying that implementation was different. What went upstream always pens. All the BB pens it will find. So SDK. So you know, we talked about workflow and SDK is a little bit essentially SDKs. So there is a standard SDK that's provided in Yachto. So if you just do with make matter dash two chain, it will build a basic SDK C C plus plus SDK for you. And essentially, that's sometimes enough. Sometimes you want to add your own packages to it. So you can customize it through BB pens. And that's what I've essentially done is essentially I wanted to say boost in my SDK for some reason. And I went ahead and you know, we changed say tool chain underscore target underscore task. This is one of the variables. You modify you add the development package to that one and it gets added to the tool chain. So essentially again, the tool chain I have done here is you know, it's adding one or two packages.    And I've used I've used over writes here because there are certain parts I only wanted for specific architecture, for example. And then I also needed some host tools that are part of the SDK, which is which will be used by the, you know, the end developers to get their job done. So essentially you can easily customize the SDK offering per se. There is a new mechanism also, which is the image SDK. So essentially that's a very good use case.  So it's many times you have some of your own infrastructure, right? You have your own APIs that you want to share across teams. So, you know, you have one group writing library that wants to be shared across a different group who has nothing to do with that group. So SDK is a common ground where they can share their APIs and other consumers of it can use SDK essentially to use those APIs. So it's a very, very good thing. And so if you have put up an image together, customized image together for your own target, you could just run a populate SDK task. And that essentially will generate an SDK installer that's equivalent to, that will have all the development and libraries and headers that are in the packages that are consisting of your customized image. And yeah, you could, BitBake likes both ways. Yeah. So the question was, should there be a space between minus C and the option itself? And so the answer is you could use either. It's BitBake parses both equally well. So you could use minus C space populate underscore SDK or just one word minus C populate SDK. So next thing, we talked about shared state. And so the shared state is one of the very good features that you could use to your own benefit.  One of the complaints you always hear is like, oh, it takes an hour or two hours to build my image just for one tweak or whatever. So we ended up setting up a shared state. And again, you would go in your own distribution. You will define your shared state mirrors where you want to host them internally up to you. What this will do is this will set up your end customers who are building images to look for shared state here over the network. So that have reduced the build time essentially drastically. And right now, the most time now it spends is in building the image itself. Sucking in all the packages through shared state is pretty fast. The whole process becomes a lot faster. So generating an image becomes like a non-issue for developers. Now, like even the application developers, they don't notice how the image is being built. So essentially, shared state is a good thing if you are, we talked about the layers. There are certain layers. There are certain packages which are not shared state friendly. You can exclude them if you want to. But essentially, they have to be converted into to be shared. Yes, I could. So there is essentially a variable. I have set it up, but I don't want to. I mean, I didn't include it in here because I really don't like it. Because I would like to fix the package itself to be shared state friendly. But that is not a supported model per se. So I think there is a, it's escaping me. There is a variable that's available. You can actually set that to zero and then it will know that this recipe is not shareable. Oh, the bad case. Oh, so you aren't the bad guys? Okay. Yeah. What should you not do writing a recipe so that the recipe will work with the shared state? So he doesn't want to know this particular package is bad, but rather, what should I not do in a recipe so I can use shared state? Yeah, so some things like if you hard code paths, shouldn't hard code paths essentially don't depend upon, say, root fs location or tool chain location. And make them relative if you can. And there are certain packages that are already out there, which hard code paths like library search paths or stuff like that. And that will not, unless you have the same build tree everywhere, this is not going to work because shared state is supposed to work in any top level structure wherever you put it. So, yeah, so taking care of keeping your package relative will get you off on a shared state issues. And so there are like packages, essentially some layers which have certain packages. They already depend on those things like Meta Java, for example, has certain packages. And those packages have complex build system of their own, which depend on those things, right? So, essentially the good thing is they should be fixed because it's wrong anyway to depend upon where you install the package. But yeah, it's good to write those kind of relative paths. So, download mirror. Yeah. So, it appears it's not just dependent on the binary. Right. If you change something very minor, a description, or something that is not really essential. So, this will trigger a different state. I think it will, right? I mean, if you change recipe, right? If you don't change the recipe, then it will be fine. But. Crikey turned the volume right up on it now. Yeah, OK. So, yeah, the rest of the shared state works by hashes. So, it takes some data and it builds up this hash that represents that particular shared state object. And it only puts the information into that hash that pertains to the particular task it represents. So, it's very sensitive to changes. So, if you have a compile function and you change what's in that compile function, it doesn't know whether the output changes or not. So, it assumes that it does and includes that. But if you have some comment in the file, it knows that the comment is relevant, as long as it's not part of the actual compile function. And therefore, it would ignore that. So, it only puts the things that make sense into the hash. The checksum is consists of all of the inputs that go in from the metadata. It doesn't know anything about the binary. Yeah, it works on the inputs, not the outputs. Otherwise, you can't know in advance whether the checks, whether a particular shared state package is relevant or not. It needs to know, without building it, is this object good or bad? So, it has to check some of the inputs, not the outputs. So, we build everything in order to rebuild that file? No, it will trigger. It will, because it's based on the hash. It doesn't matter which. Even if it's set to auto rev, it knows which revision it built. By making a change to the upstream repository, you change it to a new git hash, and therefore, you get a new shared state checksum. Yeah, auto rev will always trigger irrespective. But if you have SRC rev set to a certain hash of your git tree, then if you don't change it, then it knows that source hasn't changed. But with auto rev, it doesn't know. But there are ways you can exclude certain variables that you know for sure doesn't change a shared state. And then you can specify that in the recipe. So, the next thing I was going to go on was customizing the download mirrors. So, sometimes, like, yeah, I think you can host, you're talking about where you're hosting the NFS state. Yes, so the host distro, specific shared state, is stored in a version. So, like, it will know that your, so you built it on, say, you went to 10.4, right? And you put it on a common server. And the other person is, you went to 12.04. He will know that the base was built for 12.04 and not for, say, a different version. So it will know it. I think it does handle. You can put, like, various distributions. So the question was, can it handle shared state for different build distributions on the build system? And yes, it can handle. Like, if you put the right, if you put the right kind of, so if you look into how the shared state is organized, right? So you will have a host specific directory. All the shared state for host specific packages go under that. So you can have it for sent host, you went to, or those. You can actually go a little bit cleverer than that. And you can map things as well. So you can say that a 12.04 can use something from 10.04 because libc is generally backwards compatible. But your 10.04 machine would not use the 12.04. So there's even a way you specify in the shared state mirrors. And we probably don't have a good example in the main repository, but you can set up mappings like that. And I know people who use that. Yes. Just look at the shared state mirrors examples. We've probably, you know, even file a bug request and say, how do I do this? Because I know it is possible. It's been mentioned on the mailing list and probably in some of the commit messages. But I don't know whether it's been well documented. So yeah, just remind us we need to document it. Yeah. Would relieve every in theory. In theory, yes. In practice, the network access time tends to cause the problem. So you'd spend an hour downloading the shared state files rather than doing the build. So you just swap one problem for another. Yeah. And I know, yeah. And I know certainly teams within some of the member organizations actually have NFS shares where this goes on as part of their normal workflow. So it's something that the project, you know, and as Beth said, it's part of the auto-builder cluster. So yeah, it's being actively used. Yeah. And then there are licensing concerns too. Like, you know, some have some processes in place where they cannot get feeds from outside for some reason. So speed is another issue. So like that's what my next slide is. Say you don't want, you know, a bit back hour to access the network outside your, you know, whatever you have defined your secure network. So it has BB no network, one variable. You set it to one. And bit back will look at your mirrors. It will never go out. And then this is how you will define your source mirrors. And you have to cache the whole source mirror into your own mirror internally. And then you can enable BB no network.  And one of the problems that you might run into this is if you have auto-rev set on your internal recipes, it might not work because it will say, oh, I don't have any network access and I have auto-rev to look into. And the fetch might fail. So essentially you have to set the source revision to certain get shot to fetch that internally. So which is, you know, the way it's supposed to work. Because if you have auto-rev, then it's essentially looking out into the outside of the network, I think, for the recipe. So given that, it'll basically give, if you have licensing concerns or something like that, that you want to maintain internal copies, you know, you might have some import process at your company, how to bring in packages from outside. And there are always legal escrow and stuff like that. You bring those things in, get them escrowed, and then you can reuse them all the time. So it helps in that process pretty much. So you could put it into your distro configuration. That's your distribution policy. Or you could also put it in your local.conf if you want to. But essentially, you know, putting in your distribution policy makes it a lot clearer. So the next thing is about online package management. We talked about generating images and stuff like that. So this is based on 1.3. With 1.4 it will change because we have changed the front end for the package management. So there are image features that we have. And one of them is package management feature. And if you want to create feeds and stuff like that, what you would do is you would go and add a package management into your image features. And that should bring in all the necessary bits and pieces into your image. That it should be then possible for your image once you install on your device. It should be able to run the package management. So in 1.3 we had zipper as a front end. And this is what it looks like as you can see. I've added a local feed that is internal. So this is a zipper config that I want to adapt. So I define this as my repo file, whatever you call it. And then I add all the zipper needed bits that are needed in there. And then I hook it up into zipper. So the next thing is we will just write the BBA pen for zipper. And zipper will then include your file, essentially your repo description into the image. And there are actually very nice documents on Yachtoviki, how to set up your feeds using RPM and create repo, for example. And that's the other piece of it is that now you need to maintain your feeds onto a feed server. And these are the changes you need on your device that it'll look into your image server. So this is like if you don't want to modify your image at all, and the image should always have a pre-built feed pass in there. But these are also adaptable like you can change those to any other paths if you like on the device itself. So I wanted to cover a little bit on multi-lib. Multi-lib allows us to have 32-bit root file system and 64-bit root file system, for example, together. And for example, say you have two different architectures which are both multi-lib, for example, say ppc64 and x8664. So I'm just covering that case. What I've done here is I have included, actually I've defined multi-lib files which are depending upon default tune is a variable that's specific to an architecture. So what this will do is it will include the right one depending upon the architecture. So remember, this is our distro serving various multiple architecture BSPs. And this include here is instead of require because require will issue an error if it doesn't find the file. So for example, you have a third architecture which is not multi-lib, right? You don't want to penalize that one. So if it doesn't find this file, then it will not error and it will just pass on. So that's actually a subtle difference between include and require keywords of bit-baked recipe syntax. So just took advantage of that. So these are like the multi-lib configuration files that I defined. One of them is, for example, the 64-bit PowerPC. Essentially it defines what the multi-lib libraries are and what is the architecture that your 32-bit counterpart is. So for example, it's a E5500 32-bit for PowerPC and generic x86 for x8664. And you could also define it has to be compatible. So you know the best which 32-bit corresponding multi-lib goes with your architecture. And that's pretty much from user point of view how you would customize multi-lib and use it. The packages that you would want to use start with this like lib32, right? So you have bash, for example, and you want 32-bit bash for some reason. The package would be called lib32-bash and lib32-something. So that's how you would include that into your images and stuff like that, if you have that use case. So the next thing is eglibc. So we have actually used the customization features that I provided by eglibc so it can be tuned. And there are two contrasting cases. If you build Pocky, it builds libc with all kind of features that are in there. And there is Pocky Tiny. And Pocky Tiny enables only few features. And you can see the difference between size of, say, just the libc itself is around 700k. If you build it for Pocky Tiny, if you build it for Pocky, it's about 1.3, 1.4 meg in size. So you can serve into the areas where uclibc used to serve, not so much, but essentially it goes down pretty much to 700k, a libc that supports a lot of software on top. So it's a pretty decent feature. So there are distro features. Libc is the variable that defines. So once you look, yeah. I don't think it will. Like it's per architecture. So essentially you have to have it once for, so those are two different distro if you look at it. So you have profiles based on those. And I think that you have to have separate kind of package features for each state. Well, the configuration that went into that particular build is cached as part of the shared state checksum. So if you've configured this with a particular set of libc features, then it will preserve that in the checksum. And then if you change to a different set of libc features, it wouldn't fall out from the shared state if the checksum didn't match. Yes? I imagine that. Practically. It's designed to keep all of that stuff. Yeah, and handle it. That's one of the issues. You need to have some of how that cache grows. Yeah. But what BitBake does do is it actually, if it's a local based system, if it's got access to the file system that it's on, then it will update the done stamps associated with these. And it will touch those stamps every time it uses them. So it gives you some idea of how actively it's being used. So there are some scripts also available, right? That looks into shared state. That helps you with that. So distro features libc is actually what you can configure for your small system if you want to customize it. And it's described in extended sample configuration, the local.conf file. Take a look at that. And you can find more on what features you need and what you don't. They are pretty invasive features. Some of them are like version management, disabling version management. So in libc, you have three versions of print apps. If you disable that, your size drastically goes down. But your compatibility goes down, too. So you choose what you want, essentially. OK, so another thing is say you can create your own package groups, which could be providing a building blocks for your images. And you can define your own. They are already provided in Yachto metadata. They may not be sufficient for you. And because Yachto metadata provides most common use cases. And there might be certain specific use cases you have. You can bundle them together into package groups. It's pretty handy. If you have multiple images, you want to have certain features, which are certain packages that are building up say IPv6 and IPv4 and kind of things. So you can have all those things in package groups.  So it's very powerful in that regard. And you can also define conflicting features like SSH server, OpenSSH, or DropBear. These are two features that provide same functionality. And so you could add, depending upon what you want, into your image features. And you can define your own package groups too. If you look under metadata, there are a lot of available examples to customize on. Most of the times, the better way that I figured out was to use what's in the core, and then add on top some of my own package groups that are needed. That probably package is coming from different layers or your own layers, and then thereby building up the different images that you have to build. So by that, I think I'm done.


Hi, everyone. Thank you for coming today. And this presentation is about building ethical AI, the power of open source and education. And basically what I will share with you today is about our activities at Linux Foundation AI and the Generative AI Commons, which is an organization within the Linux Foundation AI organization. And I would like it to be interactive. If you have questions, please ask the best questions. Whoever asks the best question will get a t-shirt. So pay attention. I would like to share a few words about myself so you understand why I'm qualified for this talk. So basically I started my professional career. I was a PhD in computer science in Ben Gurion University in Israel. After that I joined Amdox and worked in the product management domain for several years. After Amdox, my corporate days, I moved and started two startups, one in the patents domain and the other one in the privacy compliance domain. And currently I'm doing mostly consultancy, which means that if you need help, or if you're hiring for a full time, I'm also in the market. But in between all of that, I also worked on Linux Foundation AI. And basically I was one of the founding members of this organization. We started it in 2018. And I've been there, like redlining the bylaws of this foundation and then leading the foundation as the technical advisory council chair for a couple of years. And back in those days, I started the ML Ops group and led this group for a couple of years. And also we started what we call the trusted AI committee, which is a committee that is focused on trusted and responsible AI. And I joined this committee when we started it I think 2018, late 2018, maybe 2019. And I'm still an active member of this committee. And lately, like two, three months ago, we started the GNI Commons, which is the other organization. And in the GNI Commons, I lead the Education and Outreach Committee. So the entire discussion or the entire talk today will touch all of these. I will share with you what LFAI is, LFAI and data is, and what is the Generative AI Commons is, and we'll finish with Call for Action and Participation. So let's start with what is LFAI and data. Initially it was LFAIDL, and then we changed it to LFAI. And then LFAI data, we integrated the data side. And basically it's a nonprofit, of course, Linux Foundation, an organization that has critical components of the global AI and data technology, infrastructure. It brings together the world's top developers and end-users and vendors to identify and contribute to the project and initiatives that address industry challenges for benefits of all participants. Very long description, but I will break it into some more specific things. So on the LFAI and data, we have the projects. We currently have 58 projects, AI and data projects, open source, of course, and we have the organization or the governance bodies and committees. So on the governance side, we have the governing board, of course, and under the governing board, we have the outreach, legal, strategy and budget committees. And on the other side, which I think is more interesting, there is the Technical Advisory Council, or committee, and this committee or council meets every other week and approves the projects and basically does all the work, and under the attack, we have several other committees. The latest one is the generative AI commons, the trusted AI, both of them are pretty active, as I mentioned earlier. We have the ML ops, ML sec ops, which is kind of new, like two years I think, BNAI data ops and ML workflow and interop. So plenty of activity and basically the community that is part of Linux Foundation AI and data could either contribute to specific open source projects or be active on those working groups. And this is where I am. When we started Linux Foundation AI, I worked on one project that was the first project that we basically started the foundation with and now I don't work on projects, I personally only do committees. Some key stats so founded in March 18, I've been there, nine active committees, 650 contributing organizations, so not all of them are members, maybe like 10%, like 66 members, and we have members in different tiers, 22.6 million line of codes, line of codes, sorry, across 58 projects, 30,000 contributors, active contributors, we have overall something like 100,000 contributors and many GitHub stars. These are the current projects that we run on Linux Foundation AI and data and you can see my, this one, Acumus was the first project. Now this project is in Archive tier, I would call it and we have the graduated incubated and sandbox tiers and you can see plenty of them. This list or this figure was derived from this thing, if you're familiar with the LFAI and Data Landscape, which is something that we stole, it's open source, we stole from CNCF, so this is an interactive tool that allows you to see all the projects and to play with it and you can use different filters to see whatever you want to see. This is the QR code to the landscape and if you're interested, I encourage you to try it and play with it. Let's move on. In the rest of the talk, I explain Linux Foundation AI in general, now I will go to the trusted AI and then to the commons. So what is trusted AI or what is the trusted AI committee? The trusted AI committee is focused on everything trusted, responsible AI. We do basically several things on the promotion, promoting the trusted and responsible AI. We have webinars, we run a Linux Foundation trusted AI day, we are about to start the podcast, write blogs, and we run all the technical integration between the different projects. We also host several projects, open source projects in the trusted domain and the current projects that we have are adversarial robustness toolbox, AI explainability 360, AI fairness 360, and intersectional fairness. And we also work on the AI software bill of materials. This is also an open source activity to create a bill of material for trusted AI implementation of open source projects, models, and stuff like that. I mentioned the technical integration here, so this is, oh, sorry, this is the technical integration. And in the past we also worked on the principles for trusted AI. I don't remember when we published it probably like four years ago, and in general the trusted AI committee, when we started it, it was pretty hard to schedule meetings because no one cared. What is trusted AI? What is responsible AI? What do you want? And basically in the past few months there is so much interest and we moved from, sometimes we have a meeting once a month to okay, we have a meeting every two weeks or more than that and a lot of activity coming in and participation from different organizations and different projects come. Okay, help us. What do we need to do in order to be responsible in order to be a good player in this domain? So there is a lot of traction in this trusted AI committee. Let's talk a little bit about the generative AI comments. By the way, any questions so far? Yeah, go ahead. Yes. Yeah, but no one really noticed or cared about it too much and now with Chagipiti and all the hallucinations and the problems that we see like it's much more visible. So this is why we get more traction and more activity. Okay, so the generative AI comments, this is an initiative that we started I think three months ago, just a new initiative and still trying to understand what we are and why we are doing that. Basically, to promote let's say trustworthy AI, generative AI, and to do like community-driven open membership initiative represented by non-profits, academia, industry, and in a natural forum, Linux Foundation AI. We decided to, this is our mission statement, but we decided basically to run this activity in four different work streams. So we have four leaders for each work stream and each work stream is focused on different things. So the first one's frameworks and this is the, maybe the original work stream focused on trusted responsible AI. So this work stream is collaborating quite a lot with the trusted AI committee as well. They work on something really interesting, a model openness framework, and I will present it in a little bit more details in a minute. We have the applications. So everything that is on the application there is another work stream and you can see Austin AI applications, all the vector databases, agents and so forth. And then we have the next models and data. So everything that is associated with models, Austin models and the data associated with the models. Initially we started separate and then we decided, we realized that they are like one thing, so we combined them. And the last work stream, which is the best because this is mine, is the education and outreach and basically what we do in the education and outreach is to, again, promote the responsible and trustworthy AI to educate the developer community and the general public and to basically promote anything associated with the generative AI commands with whatever their target audience is. And also to work with legislative organizations and to promote open source and open science in the different countries and organizations or whatever it is, European. So I said that I will say something about the model openness framework. So this is the model openness framework. It's basically coming in in order to reduce the confusion about what is open and what is open source versus open, just open or open science. And what we basically do, we take into account all the different steps and all the different elements in building an LLM or generative AI solutions and we score them and we give them different tiers or different levels like bronze, silver and gold and this should represent how open they are. So this is something that we started to work on very recently, like a few weeks ago and I think this will be something pretty important for the community. Okay, let's move on to the education and outreach. So this is half of the theme of the education and outreach committee. Basically what you see here in one of our sessions, I decided that I want to do introductions between the team. I asked everyone to send me three sentences about themselves and I generated with their pictures and everyone presented themselves. So currently you see here how many 12? We have something like 25 active members. We meet every other week on Wednesday morning and we basically, all of us are volunteers and we promote the things that we believe we want to promote. It's an open source organization. So this is the target audience or even ordered, prioritized target audience so first and foremost we target the developers and users then the media because we believe that if we can convince the media about the importance of open source and open science and so forth they will help us to promote it with all the rest of the audience. We want and will create content that is targeting the general public because we want to teach them or to promote our ideas and make them understand why we are here and why they need to understand. I'll touch in a minute. And then all the rest, we also communicate with government bodies. We already started to put some documents about it as well. These are our goals. Yes, go ahead. Good questions. We started, we put two documents one with NIST and the other one I don't remember but I have it here and we didn't get any response. So I don't know. It will probably take time and it really depends so if someone is excited about it and someone wants to do it, it will happen. If not, it doesn't happen. This is like a volunteering community. So it really depends about the members and what they are focused on. Yes, of course. Thank you. So the goals, as I mentioned earlier promote an open source first GNI mindset among developers. So developers are the first target then promote responsible use of generative AI and this is also developers and policy makers and regulatory bodies. Then the general public. This is where I am more passionate about. So teach the general public about generative AI and in order to democratize it and also to give them the idea about the impact that generative AI can make on their lives. And this is, I think, so all of us we know what generative AI, we use HGPT but there is a huge part of the population that doesn't know what HGPT is and never seen that and maybe don't even care because they don't know I personally believe that it's important. Here are some activities that we already started doing so we started to create a taxonomy a glossary of gen AI and trusted responsible AI. So this is something, this is work in progress. We have a few drafts already. We are working on a state of open source generative AI report and this is something that will be an annual report or at least we think it will be if someone will take it. And we also started to think about the developer community and how to approach it. We are starting to do some research about it and maybe some of you will get some questionnaires to answer. So early on in the presentation I told you that I'm currently a consultant I don't work for any company that is sponsoring my activity here. So why am I spending the time on this in general coming here from New York in order to present it and basically I have two good answers. So I have three kids and I believe that this technology, generative AI and of what we are talking about can bring us to two different futures. One which is very nice and everyone is happy on the left, right? And on the right something less exciting and I personally am pretty concerned about generative AI I think the risks are high and I want to do two things. First I want to educate myself I want to be in the forefront of the technology and the information and basically to understand the risks myself My son on the right is a junior in high school going to college in two years I want to be able to help him to select the right thing to study because he wants to be software developer So as a software developer what should he go to do in college? Computer science or English maybe because to be a very good prompt engineer maybe you need to have a better English I don't know but I want to be able to help them and I want also as I mentioned earlier to educate the public so everyone has some knowledge about it and basically I believe that this will help us to promote more safe use of AI in general if only a few very large companies are promoting things that may be bad for the inter-society this is something that I want to take part of and not leave to someone else to solve so this is why I am part of this activity and just to finish this is as I mentioned a few times in this discussion in this talk I think that this is important this is an open source organization which means that we are open to contribution from anyone and we would love you to join us and help us with our activities I will finish with this slide on the left this is a QR code of Gen AI Commons new website that we just launched and all the information in order to connect to join to contribute is there this is one and my LinkedIn profile on the right I'm happy to connect with everyone and if you want to join us and contribute and you don't find the information there I will work with you on everything that is needed to be done Questions? Wait, I said it in the beginning so I have shirts the best question gets shirts and stickers go ahead I come from the banking industry and I kind of understand the mindset of regulators where they want somebody that they can then tell what to do and hold accountable and the idea of open is somewhat contradictory to that because they can't hold anybody accountable for adhering to regulations but why don't you give us a little bit of your thought on why open is better why it's important to educate at this time when there's this much attention on it and why kind of getting support behind opening these tools up for access not just use but also access it's kind of a better approach than saying well we better leave it in the hands of a few bodies that are heavily regulated by the government So, good question and we had a long discussion about it yesterday in one of the sessions there are arguments for both sides I personally believe like every other technology that we had in the past open is better this is my opinion and I think that we can maintain responsible use of AI even if we go open so this is my opinion and of course it will democratize it and will not leave the power in a few hands but I agree it's an interesting question you get a t-shirt Hi, so we have a situation right now in general where college professors high school professors are using things like Turnitin to detect AI not so much because the fact that they're using AI but because they want the kids to learn the actual subject matter it's not so much an ethical question whether it's a they're going to learn it question looking forward when they're in the job world they're going to start being expected to use AI because a manager is going to say hey why aren't you using AI it's much more efficient and you can save cost it seems like that's out of balance what's the answer ethically to bridging the gap between an educational setting where you have to you know what I'm saying you have to assert that you attest that you have taught the kids this thing whereas they're not going to use it the same way when they get out in the job world you want to answer? go ahead nice lead-in so I work for a museum in Seattle and this is something that we're confronting right now because this museum is in the aviation industry and we have junior high and high schoolers coming through and doing pilot training and so what we've had to do because we use turn it in and that turn it in detects the AI we've had to write some policy around it saying we understand and recognize that it's there but for the intent and purpose of this particular course study you can't use it and I went out and did a search there are no less than half a dozen universities out there Stanford, MIT, some of the others that they have to look at the various courses and allow for that study to come in so I think what we're going to see is that gap is going to get a lot shorter as kiddos come up and they go well it's part of this now and it's industries that are going to have to catch up with it but in academia at least I see it on the museum side it's already happening Yeah, my kids use CHETGPT all the time and but it's, you know, it's new there are no really guidelines how to do it and I personally use it like off of my work I do with CHETGPT and I think I'm so much more productive that it doesn't make sense not to use it and by the way many people that are not using it are staying behind, right? or organizations that don't use it are staying behind We still have the situation where and maybe I didn't hear the answer the right way in the future it's going to be it doesn't matter if it's authentic or not as long as it gets done what kind of ethical eddy in the current, you know, how does that little not resolve itself out over time? So we've got a major issue if I want to hire on or I want to socially engineer a new engineer, right? If I'm trying to get just the best talent from around the world I am doing my best not to signal process for anything but the work so at the point where I'm trying to hire the best if I've invented a training program for them to go through at that point when I unblind myself at that condition, at that point the people that get passed and they use this for MLH, a lot of these other things fully automated process you cannot take the next step unless you can stand in front of a camera and explain to us everything as an individual and answer questions there's a huge difference, right? We're not using and this is something that I wish people would really pay attention to like it's not for replacing learning and no one, there's no rational human being who's going to chat or maybe something they need to know to exist safely in the world and I think the last thing if anyone is ever giving you a sort of preventative argument against technology that's usually approaching moralism and you can remind them that when the printing press came out a bunch of people said that books came from the double because children would have their faces in it all day this is no different and I don't have an answer yet so we will see and we will have to learn and adapt to the future, right? You get a t-shirt and you too, Sam Any other questions? Thank you very much for joining and please, stickers and t-shirts


Hi and welcome to the session. I am Shashi and I am going to help you to solve the following question. Question is, find X if matrix X minus 5 minus 1 multiplied by matrix 102, 021, 203 multiplied by matrix X41 is equal to 0. Let us now start with the solution. We are given the matrix X minus 5 minus 1 multiplied by matrix 102, 021, 203 multiplied by matrix X41 is equal to 0. Now, we can see we have to find the product of three matrices. So, first of all we will multiply the first two matrices. Now, the number of columns in first matrix is 3 and the number of rows in second matrix is also 3. Since the number of columns of the first matrix is equal to number of rows of the second matrix, so their multiplication is defined. Now, multiplying the both matrices we get matrix X multiplied by 1 plus minus 5 into 0 plus minus 1 multiplied by 2. Second element is X multiplied by 0 plus minus 5 multiplied by 2 plus minus 1 multiplied by 0. Third element is X multiplied by 2 plus minus 5 multiplied by 1 plus minus 1 multiplied by 3. This row multiplied by this column results in this element. This row multiplied by this column gives out this element. This row multiplied by this column is equal to this element. Now, simplify we get X minus 2 minus 10 to X minus 8 matrix multiplied by X41 matrix is equal to 0. Now, we can see number of columns of first matrix is equal to 3 and the number of rows of second matrix is also equal to 3. So, their multiplication is defined as the number of columns of first matrix is equal to number of rows of second matrix. So, on multiplying this row with this column we get only one element that is equal to X multiplied by X minus 2 plus minus 10 multiplied by 4 plus 1 multiplied by 2 X minus 8. On simplifying we get X square minus 2X minus 40 plus 2X minus 8 is equal to 0. Therefore, we can write X square minus 48 is equal to 0 minus 2X and plus 2X will get cancelled. So, this implies X square minus 48 is equal to 0. This implies X square is equal to 48. Now, taking square root on both sides we get X is equal to plus minus under root 48 which further implies X is equal to plus minus 4 root 3. So, X is equal to plus minus 4 root 3 is the required answer. This completes the session. Hope you understood the session. Take care and goodbye.