Q01 - Question
A company deploys a classification model to an Azure Machine Learning batch endpoint. The team wants to use Azure Machine Learning model monitoring to track data drift on the model inputs. Which action is required to support this?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Enable Azure Machine Learning model data collection on the batch endpoint so that production inference data is collected automatically.
- B. Use the AllowOnlyApprovedOutbound managed virtual network isolation setting so that monitoring jobs can reach the data.
- C. Collect the production inference data yourself and provide it to model monitoring.
- D. Set the reference data to the production data window so that no training data is needed.
C is correct.
Explanation: When you deploy a model to a batch endpoint or outside Azure Machine Learning, you are responsible for collecting production inference data. You can then use that data for model monitoring.
A is incorrect: Azure Machine Learning model data collection is the option for models deployed to online endpoints. For batch endpoints, you collect the data yourself.
B is incorrect: Model monitoring does not support the AllowOnlyApprovedOutbound managed virtual network isolation setting.
D is incorrect: The reference data window and the production data window should not overlap. Reference data can be training data or recent past production data, but it is still a separate comparison baseline.
Q02 - Question
A training job produces a model by using features from a managed feature store. The team will register the model in an Azure Machine Learning workspace. They need the workspace to show lineage between the model and the feature sets. They also need the online scoring script to look up feature values at inference time. How should the training job package the feature retrieval specification?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Save it in a subfolder of the model artifact and rename it to match the model name.
- B. Register it only as a separate data asset and have the scoring script load it from there.
- C. Omit it, because the get_offline_features() API accepts a list of features and no specification is needed.
- D. Place feature_retrieval_spec.yaml in the root folder of the model artifact and keep the file name unchanged.
D is correct.
Explanation: The feature retrieval specification must be in the root folder of the model artifact, and its file name can't be changed. Lineage between the model and the feature sets is tracked only if the specification exists in the model artifact. The scoring code also loads the feature list from the specification in the model artifact folder before it looks up features from the online store.
A is incorrect: The specification must be in the root folder, and its file name can't be changed.
B is incorrect: The scoring script loads the specification from the model artifact folder. A separate data asset does not provide model-to-feature-set lineage.
C is incorrect: The specification is optional only for generating training data with get_offline_features(). It is still required in the model artifact for lineage tracking and online inference.
Q03 - Question
A team submits several command jobs that run train.py from the ./src folder on a compute cluster named aml-cluster. In Azure Machine Learning studio, they want all of these jobs grouped under one experiment, and they want to find each individual job by name. Which command function parameters should they configure for this purpose?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Use the same experiment_name for all jobs and set display_name to identify each individual job.
- B. Use the same compute for all jobs and set environment to identify each individual job.
- C. Use the same code folder for all jobs and set command to identify each individual job.
- D. Use the same environment for all jobs and set compute to identify each individual job.
A is correct.
Explanation: The evidence supports A because the experiment_name parameter specifies the experiment that a job belongs to. All jobs with the same experiment name are grouped under the same experiment. The display_name parameter is the name of the individual job, so you can use it to find a specific job in the studio.
B is incorrect: The compute parameter specifies which compute runs the command. It does not group jobs into an experiment. The environment parameter specifies the packages to install on the compute. It does not name a job.
C is incorrect: The code parameter specifies the folder that includes the script. The command parameter specifies which file to run. Neither parameter groups jobs or names them.
D is incorrect: The environment parameter specifies packages, not experiment grouping. The compute parameter selects the compute to run the command. It does not provide a job name.
Q04 - Question
A team submits a command job with the command "python train.py --training_data diabetes.csv". The script hard-codes a different file path and does not use the value passed in the command. The team wants to reuse the same script with different datasets. What should they change?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Change the display_name of the command job to match the dataset name.
- B. Change the experiment_name of the command job to match the dataset name.
- C. Change the compute of the command job so that it reads the dataset.
- D. Define a --training_data argument in the script by using a library such as argparse, and assign the value to a variable that reads the data.
D is correct.
Explanation: The evidence supports D because to use parameters in a script, you must use a library such as argparse to read the arguments passed to the script and assign them to variables. The script must define each parameter it expects. After the script reads --training_data, you can pass a different path in the command for each job.
A is incorrect: The display_name is the name of the individual job. It does not pass a value to the script.
B is incorrect: The experiment_name specifies which experiment the job belongs to. The script still needs code to read the argument.
C is incorrect: The compute parameter specifies where the command runs. It does not change how the script receives arguments.
Q05 - Question
Different team members logged runs of the same model in separate experiments in an Azure Machine Learning workspace. A data scientist uses MLflow in a notebook to retrieve only runs where the num_boost_round parameter is 100, with the most recent runs first. Which two actions should the data scientist take? Select two.
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Multi-select
- A. Call mlflow.search_runs with search_all_experiments=True to search runs across all experiments in the workspace.
- B. Call mlflow.search_experiments with view_type=ViewType.ALL to return the runs that have the matching parameter.
- C. Call mlflow.get_experiment_by_name for one experiment and search only that experiment by using its experiment ID.
- D. Use filter_string="params.num_boost_round='100'" and order_by=["start_time DESC"] in the mlflow.search_runs call.
A and D are correct.
Explanation: The evidence supports A and D because you can search runs across multiple experiments, which is useful when different people log the same model in separate experiments. Use search_all_experiments=True to search all experiments in the workspace. The filter_string parameter finds runs with a specific hyperparameter value. The order_by parameter changes the default sort order, so order_by=["start_time DESC"] returns the most recent runs first.
B is incorrect: mlflow.search_experiments returns experiments, and ViewType.ALL includes archived experiments. To retrieve runs, use mlflow.search_runs.
C is incorrect: Searching with the ID of one experiment limits the results to that experiment. The runs are logged in separate experiments, so this action misses runs from the others.
Q06 - Question
A training script calls mlflow.autolog(). The command job references a Conda environment that installs only numpy, pandas, scikit-learn, and matplotlib with pip. The team wants Azure Machine Learning to store the tracked parameters, metrics, and artifacts with each job run. What should they do?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Keep the environment as is, because mlflow.autolog() installs the required packages on the compute.
- B. Add the mlflow and azureml-mlflow pip packages to the Conda environment, and reference that environment in the job.
- C. Add only the mlflow pip package to the environment, because azureml-mlflow is needed only to view results in the studio.
- D. Replace mlflow.autolog() with mlflow.log_param(), because logging functions do not require extra packages.
B is correct.
Explanation: The evidence supports B because to use MLflow during a training job, the mlflow and azureml-mlflow pip packages must be installed on the compute that runs the script. Include both packages in the Conda environment, register the environment, and refer to it when you submit the job. The tracked parameters, metrics, and artifacts are then stored with the job run.
A is incorrect: Adding mlflow.autolog() to the script enables autologging, but the packages must still be installed on the compute through the environment.
C is incorrect: Both the mlflow and azureml-mlflow packages must be installed. Installing only one does not meet the requirement.
D is incorrect: The mlflow.log_* functions are also MLflow tracking options. Both options need the packages in the environment.
Q07 - Question
You deploy a fraud classification model to an Azure Machine Learning online endpoint and use the data collector to collect production inference data. You want to monitor accuracy, precision, and recall in production. Which TWO actions should you take?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Multi-select
- A. Collect ground truth data as it becomes available, and maintain it as a data asset that has a unique ID per row matching the IDs in the model output data.
- B. Use recent past production data as the reference data for the model performance signal.
- C. Create an Event Grid event subscription that uses the Dataset drift detected event type to receive model monitoring events.
- D. Schedule the monitoring job on a serverless Spark compute pool that uses a supported instance type, such as Standard_E4s_v3.
A and D are correct.
Explanation: Model performance monitoring requires ground truth data with a unique ID for each row. The ID must match the ID in the model output data so the two data assets can be joined. Monitoring jobs run on serverless Spark compute pools, and Standard_E4s_v3 is a supported instance type.
B is incorrect: The model performance signal requires ground truth data as the reference data. Recent past production data is not a valid reference for this signal.
C is incorrect: Dataset drift detected applies to data drift v1, not Azure Machine Learning model monitoring. Select only Run status changed for model monitoring events.
Q08 - Question
A team has a model running in an Azure Machine Learning online endpoint for real-time scoring. They trained a new version and want to send a small share of requests to it. They also want to shift more traffic to the new version later by changing configuration, without creating a new endpoint. What should they do?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Register the new model with the same name as the existing model and rely on the incremented version number to replace the running deployment.
- B. Create a second deployment in the same online endpoint and update the traffic percentage in the endpoint configuration.
- C. Deploy the new model to a batch endpoint and compare its scores with the online endpoint results.
- D. Convert the new model to Open Neural Network Exchange (ONNX) and redeploy it over the existing deployment.
B is correct.
Explanation: Controlled rollout for online endpoints lets you create multiple deployments in one endpoint, route traffic to different deployments for A/B testing, and switch between deployments by updating the traffic percentage in the endpoint configuration.
A is incorrect: Registering a model with the same name only increments the version number in the registry. It does not split traffic between deployments.
C is incorrect: Batch endpoints support batch scoring. They do not provide real-time traffic splitting for an online endpoint.
D is incorrect: Converting to ONNX can change model performance, but it does not provide traffic routing, and redeploying over the existing deployment removes the ability to compare two deployments.
Q09 - Question
A team trains a deep neural network in Azure Machine Learning. The training data is large, and the full model fits in the memory of each node in the compute cluster. The team wants the approach that is easiest to implement and sufficient for most use cases. Which approach should they use?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Use data parallelism. Divide the data into partitions, copy the model to each worker node, and synchronize the model parameters or gradients at the end of the batch computation.
- B. Use model parallelism because it is easier to implement than data parallelism.
- C. Use data parallelism, but let each worker node keep its own model without synchronizing parameters.
- D. Use data parallelism on nodes that are too small to hold the full model, because each node only needs part of the model.
A is correct.
Explanation: Data parallelism is the easiest distributed training approach to implement and is sufficient for most use cases. It partitions the data across worker nodes and copies the model to each node. Each node must be able to hold the entire model. Nodes synchronize parameters or gradients at the end of the batch computation so that they train a consistent model.
B is incorrect: Model parallelism is more complex to implement than data parallelism.
C is incorrect: Worker nodes must synchronize the model parameters or gradients so that they train a consistent model.
D is incorrect: With data parallelism, the entire model has to fit on each node. Splitting the model across nodes is model parallelism.
Q10 - Question
A data scientist has a notebook that reads diabetes.csv, runs df.head() and df.describe(), prints several status messages, and then trains a model. The team plans to run the code every week in an automation pipeline. They want to reduce cost and compute time and confirm that the code works before it is integrated into the pipeline. Which approach should the data scientist use?
Domain: Implement machine learning model lifecycle and operations (25–30%) Type: Single choice
- A. Keep all exploratory statements and add more print statements so each step is confirmed in every run.
- B. Submit the converted script to the automation pipeline first and review any errors from the pipeline runs.
- C. Remove the exploratory code that has no purpose in production, then run the script with python train.py in the terminal of the compute instance.
- D. Keep the exploratory code in the script and change the compute to a larger size to offset the extra run time.
C is correct.
Explanation: The evidence supports C because exploratory statements such as df.describe() are useful in a notebook but add cost and compute time when the code runs regularly. Remove code that has no purpose in production. Then run the script in the terminal of the compute instance. Print output and errors appear in the terminal, so you can verify that the script works before you integrate it with automation.
A is incorrect: Extra print statements add code to every run. Keep print statements only if you plan to review the script output.
B is incorrect: Test the script before you integrate it with automation pipelines. The terminal of the compute instance is a simple way to do this.
D is incorrect: A larger compute does not remove the nonessential code. The goal is to avoid running code that has no purpose, not to provide more compute for it.