Machine Learning and Artificial Intelligence: New Developments and Opportunities

Learn about the latest developments in artificial intelligence and machine learning, including job opportunities at Apple and how to profile CUDA using Nsight Systems. Also, discover a new open-source Python package for Spectrum Instrumentation test and measurement products.
Machine Learning and Artificial Intelligence: New Developments and Opportunities

Earn $300,000 Working with Apple: Artificial Intelligence and Machine Learning

Apple has launched a series of job openings focused on its machine learning and artificial intelligence sector. The company seeks to attract experts in these fields to strengthen its capacity to develop advanced technologies that improve user experience on their devices and services.

Apple AI

The company has divided its work area on artificial intelligence and machine learning into five groups: machine learning infrastructure, deep learning and reinforcement learning, natural language processing and speech technologies, computer vision, and applied research.

Each of these teams, individuals with different skills who know how to complement each other with other teams are sought.

When applying for a vacancy on the AI team, you can work alongside Tim Cook.

1. Machine Learning Infrastructure

This team is dedicated to building the foundation for some of the company’s most innovative products. As a member of this team, you’ll have access to the world’s best researchers and cutting-edge computing, storage, and analysis tools to tackle the most challenging machine learning problems.

Positions include data science, support engineering, platforms, and systems, providing the critical infrastructure that drives the company’s artificial intelligence developments.

Apple has a vacancy for this team.

He is a software development engineer based in Sunnyvale, California.

Apple AI

The base salary range for this position is between $138,900 and $256,500.

2. Deep Learning and Reinforcement Learning

The group focuses on deep learning and artificial intelligence research to solve real-world, large-scale problems.

Apple is looking for people with a proven track record in supervised and unsupervised learning, generative models, ad hoc learning, multimodal input streams, deep reinforcement learning, inverse reinforcement learning, decision theory, and game theory.

The team has several openings, including iOS/macOS, Siri, and Information Intelligence Engineer in Cupertino, California.

Apple is looking for engineers with at least two years of experience.

“You will be primarily responsible for implementing features for the Siri user experience,” the job description says.

Apple specifies a base salary range between $170,700 and $300,200.

3. Natural Language Processing and Speech Technologies

The group is a coalition of applied research scientists from various disciplines related to natural language processing. Work with them on natural language understanding, machine translation, entity name recognition, answer search, topic segmentation, and automatic speech recognition.

There are many vacancies in this team. It differs from others by offering positions outside the continental US, such as in Asian countries.

NVIDIA

4. Computer Vision

An interdisciplinary team that designs algorithms to analyze and combine complex streams of sensor data.

For this team, Apple is looking for a student who is highly skilled in computer vision and deep learning.

The selected individual will join a team of researchers developing cutting-edge algorithms for computer vision solutions and 3D sensing technologies.

5. Applied Research

As a Research and Development Engineer, you will develop cutting-edge machine learning algorithms for Apple’s current and future products and services in areas including health, accessibility, and privacy.

Apple has its own site to post its job openings.

There is an opportunity to join this team in Cambridge, Massachusetts.

“As part of our team, you will play a fundamental role in applying econometrics, statistics, and machine learning methods across the lifecycle of Apple products across finance, sales, and operations,” the description states.

Those interested in applying for Apple’s Machine Learning and Artificial Intelligence vacancies can visit the Apple jobs site at jobs.apple.com.

All available offers have requirements to apply.

Profiling CUDA Using Nsight Systems: A Numba Example

Optimization is a crucial part of writing high-performance code, no matter if you are writing a web server or computational fluid dynamics simulation software. Profiling allows you to make informed decisions regarding your code. In a sense, optimization without profiling is like flying blind: mostly fine for seasoned professionals with expert knowledge and fine-tuned intuition, but a recipe for disaster for almost everyone else.

In this tutorial, we will study a comparison between unoptimized, single-stream code and a slightly better version which uses stream concurrency and other optimizations. We will learn, from the ground up, how to use NVIDIA Nsight Systems to profile and analyze CUDA code.

Setting Everything Up: A Simple Example

We will set our development and profiling environment up. Below are two very simple Python scripts: kernels.py and run_v1.py. The former will contain all CUDA kernels, and the latter will serve as the entry point to run the example.

Nsight Systems

If the command exited successfully, we will have a profile_run_v1.nsys-rep in the current folder. We will open this file by launching the Nsight Systems GUI, File > Open. The initial view is slightly confusing. So we will start by decluttering: resize the Events Viewport to the bottom, and minimize CPU, GPU, and Processes under the Timeline Viewport. Now expand only Processes > python > CUDA HW.

Annotating with NVTX

In this section, we will learn how to improve our profiling experience by annotating sections in Nsight Systems with NVTX. NVTX allows us to mark different regions of the code. It can mark ranges and instantaneous events.

Stream Concurrency

Now we will investigate whether we can improve this code by introducing streams. The idea is that while memory transfers are occurring, the GPU can start processing the data. This allows a level of concurrency, which hopefully will ensure that we are occupying our warps as fully as possible.

Conclusion

In this article, we saw how to set up, use, and interpret results from profiling Python code in NVIDIA Nsight Systems. C and C++ code can be analyzed very similarly, and indeed most of the material out there uses C and C++ examples.

We also show how profiling can allow us to catch bugs and performance test our programs, ensuring that the features we introduce truly are improving performance, and if they are not, why.

Spectrum Instrumentation Presents a New Open-Source Python Package

Spectrum Instrumentation presents a new open-source Python package (spcm) that is now available for the current line of all Spectrum Instrumentation test and measurement products. The new package makes the programming of all 200+ instruments, offering sampling rates from 5 MS/s to 10 GS/s, faster and easier.

Python, popular for its simplicity, versatility, and flexibility, boasts an extensive collection of libraries and frameworks (such as NumPy) that significantly accelerates programming development cycles. The new spcm package allows users to take full advantage of the Python language by providing a high-level Object-Oriented Programming (OOP) interface that is specifically designed for the Spectrum Instrumentation Digitizer, AWG, and Digital I/O products. It includes the full source code as well as a number of detailed examples. Available on GitHub, spcm is free of charge under the MIT license.

Spectrum’s Python package safely handles the automatic opening and closing of cards, groups of cards, and Ethernet instruments, as well as the allocation of memory for transferring data to and from these devices. All the device-specific functionality is capsulated in easy-to-use classes. This includes clock and trigger settings, hardware channel settings, card synchronization, direct memory access (DMA), and product features such as Block Averaging, DDS, and Pulse Generator.

The package supports the use of real-world physical quantities and units (e.g., 10 MHz) enabling the user to directly program driver settings in their preferred unit system. This removes the need for tedious manual conversions to cryptic API settings. Moreover, this package also includes support for calculations with NumPy and Matplotlib, allowing the user to handle data coming from, or going to, the products with the vast toolbox provided by those packages. Detailed examples can be found in the GitHub repository.

Installing the package is easy, thanks to its availability in the pip repository. Simply install Python and then the package with a single command: $ pip install spcm

Users can include the Spectrum Instrumentation Python package in their own programs, or fork to the repository to add more functionality. The package is directly maintained by Spectrum engineers and updates are released regularly offering bug-fixes and new features.