An example of code written in the C programming language
I am in program management now which is more of a marketing role, but when I was a software developer, here's what I would do:
- Use an editor to write code, in my case, using the C programming language.
- Compile the code on my own PC that translated what I typed in into machine runnable instructions.
- Run the code on my PC and make sure it was correct using test data that I created.
- Submit my correct code to a source code repository.
- A nightly build would compile my code, and code contributions from other developers.
My code would eventually make it into the hands of customers when a nightly build was blessed by our QA team and shipped. The customer would install the product and run it on their own PCs. My compiled code would be part of that product.
An example of web page HTML code
Even though I now have a marketing role, when I was working with our technology previews, my job involved some web development. Here's what I would do:
- Use an editor to write web pages, in my case, using raw hypertext markup language (HTML).
- View the HTML on my own PC with a browser. In the case of HTML, the browser interprets the HTML and displays the page on the screen.
- Make sure the HTML looks correct and has no spelling mistakes.
- Copy my HTML to a publicly facing webserver, in my case, the Autodesk Feedback Community site where we host our technology previews.
My HTML made it into the hands of customers when they visited one of the technology previews, and their browser made a request to the web server using an URL, and the webserver returned the HTML. The customer's browser interpreted the HTML on the customer's PC (or phone or tablet) and displayed the web page.
So I totally understand how desktop applications and web pages are developed, deployed, and experienced by customers. So what happens in the world of artificial intelligence (AI)? What does a programmer do? What do customers do? I turned to Director of Machine Learning, Mike Haley, to find out.
An example of code written in the Python programming language (courtesy of Mike Haley)
So what would you be doing if you were an AI developer?
First of all, you have to start out with data — a lot of data. They don't call it big data for nothing. Then you have to train the system to understand the data. Once that happens, you can then use the system to analyze the data so it can apply what it has learned to answer questions about the data.
So the developer:
- Collects thousands of data files and stores them in a repository.
- Sets up a development web server.
- Deploys industry standard AI code, in this case, TensorFlow, on the development server.
- Writes Python code to instruct TensorFlow to set up an interconnected system of nodes (i.e., functions), grouped in layers. Each node analyzes an aspect of the data and returns a result.
- Feeds the system with some inputs and expected results so that the system can tune itself. In other words, the system adjusts the functions of the nodes so that the error between what is computed and the expected result approaches zero.
- Runs tens of thousands of tests to see that the system has properly tuned itself.
- Runs test cases that simulate customer usage by connecting the system to web pages containing JavaScript and HTML.
- Deploys the system and web pages to a publicly accessible web server.
Customers take advantage of the artificial intelligence when they visit a web page or use a web service that interacts with the deployed python code and provides answers to the questions they ask or are asked on their behalf. Autodesk Design Graph is an example. The Design Graph is a new way for customers to explore their 3D data. Design Graph uses Shape-based Machine Learning to recognize and understand parts, assemblies, and entire designs. The Design Graph learns to identify the relationships between all parts within and across all of their designs, irrespective of whether cross-references exist. It learns to interpret their designs in terms of those parts, and it provides them with a way to navigate their data using: simple text search, learned categories of parts, shape similarity, usage patterns, and smart filters for part numbers, materials, and other properties.
With Design Graph, customers can address issues like:
- "What was that part we used on the last project? I can't recall its part number."
- "Wow - look how many duplicate parts we've created. We can eliminate the duplicates and reduce the amount of inventory that we have to keep on hand."
- "Uh-oh, this part is defective. How many of our projects used this part?"
The answers to questions regarding these issues would be provided via the data itself regardless of whether the information was properly documented by the humans. The information is derived automatically. And there you have it. That's how human AI programmers enable computers to appear intelligent.
Perhaps one-day artificial intelligence processing can be available via Autodesk Forge? Using the application program interfaces, the benefits of the artificial intelligence could be surfaced right in applications like AutoCAD, Inventor, Fusion 360, and Revit. The result would be a hybrid desktop/cloud solution. The future for Forge looks bright. And it's not just me that thinks so: Survey says: Machine learning happening now and paying off. And it's not just Autodesk: Google offers Cloud Machine Learning Services.
Artificial intelligence is alive in the lab.