Synopsis
It has come to my attention that some individuals within this community desire a distribution, with some extra focus placed on AI.
The various justifications may include the following:
- Market forces
- User convenience
- Establishment of an AI developer community
These factors have pushed Gordon Messmer to publish this initiative, which can then go on to the Fedora Council to be approved, if the community accepts it: Fedora AI Developer Desktop Initiative (updated)
However, I feel that this initiative falls into a gray area under Fedora’s rules. Many community members may put into question the purpose of this proposal. As such, I feel that it is my duty to come up with a better proposal, that the community members are more likely to agree with. I will add that I don’t consider myself a community member, since I have only joined here just recently. However, I think you will still find value in what I have to say.
Fedora AI Ecosystem
I propose to the council what will likely be an excellent opportunity for Fedora to compete on the world stage. In response to certain market forces, and for the strengthening of Fedora’s community, I propose that Fedora places part of their focus on building an AI ecosystem, which would be similar to NVIDIA’s. Many large companies are doing the same: https://www.channelinsider.com/news-and-trends/intel-open-ecosystem/, so wouldn’t Fedora’s community members also wish to figure out what all the AI hype is about, and to conduct a significant amount of market research, while also connecting with developers around the world?
Communication
I believe that Fedora’s primary focus in regards to building this ecosystem, should be building communication channels. Fedora should open channels of communication to individuals who hold the following list of titles, and who work with AI, with the most prioritized title being at the top:
- Developers
- Office workers
- Service workers
- Trade workers (if applicable)
- Government workers
- Executives
Executives are de-prioritized, since they are not very well in tune with process of their respective companies, and are likely unaware of real concerns that their employees may have that are for, or against AI.
Developers are the most prioritized, since they can provide personal anecdotes, and can also contribute directly to the ecosystem’s code, given they have the time. Of course, various workers of all kinds will also provide important anecdotes.
Technology Stack
GPU API
This stack, for one, should have a GPU API associated with it. There are three choices currently (which are open source, and are acceptable under Fedora’s rules):
- OpenCL
- OpenGL
- Vulkan
OpenCL is likely the worst choice, since it is extremely slow to update, as you can see here: OpenCL Cooperative Matrix Extensions Are Here. These were only added recently. As outlined here, Vulkan and OpenGL has had this feature for a few years now.
Cooperative matrix extensions essentially allow for one to use a GPU’s tensor cores, or whatever the equivalent may be on any given hardware.
I can only guess that this is due to there being far more graphics programmers who use the latter two APIs, than there are GPGPU programmers who use OpenCL. If Fedora is able to advocate the faster addition of new extensions to OpenCL, than it will be a much more viable option.
In the case that these three APIs are not sufficient for whatever reason, I have a third API “specification” to propose, which isn’t very formal at the moment. But I hope that it will make GPU hardware more approachable, and less intimidating overall.
Other options are welcome as well.
The necessity of a GPU API is due to the nature of the hardware itself. CPU programs don’t need an API to execute within a vacuum. Instead, they rely on a CPU Instruction Set Architecture (ISA), which defines what the instructions within the program will do when executed.
GPUs also have an ISA, however, they are also an external chip that the CPU must talk to. Certain operations that involve CPU-GPU communication, such as DMA transfers, must be done by a program within kernel space. Otherwise, you risk the security of the computer as a whole.
Software built on top of the GPU API
Fedora has several options for what can be built on top of the GPU API.
- Copy NVIDIA
This is the easiest option, although it isn’t likely to yield good results. Everyone is used to using NVIDIA’s stack, so it would be hard to break into the market this way.
- Build software based on feedback from above communication initiative
This is the harder option, but it will yield far more results. By establishing communication channels, Fedora will have a direct method of establishing precisely what software they should write.
If you have any other options, please outline them. I’m sure Fedora community members will appreciate it.
User experience
Fedora already has an excellent forum, where users can post about the issues they are experiencing. Support is widely available. If any user has a problem with Fedora’s AI ecosystem, they can simply post on the forum, and get their help there.
It would be excellent if the community keeps this effort. This helps far more people than you know.
Development Process
I’m sure that Fedora has a well established development process already. It isn’t my place to dictate how Fedora should handle this process.
Packaging
I’m sure the packagers can figure out for themselves how this stack will be packaged. If they can’t, then I’m sure the council can.
Conclusion
I believe that now is an excellent opportunity for Fedora, and its community, to compete on the world stage, and to make a name for itself. And I don’t believe Fedora is required to compromise their values to do so. I believe that Fedora is in a unique position, since they have the trust and allegiance of many within FOSS.
I would like to hear the community’s thoughts on this initiative, and what they think the future of Fedora should be. I give you my thanks,
– C. S. Sushi
