Skip to content

Commit b6e6536

Browse files
Merge pull request #250535 from JasonWHowell/fixes7
Bulk fix absolute links
2 parents 18188cc + 5c32d68 commit b6e6536

10 files changed

+32
-34
lines changed

articles/industrial-iot/tutorial-publisher-performance-memory-tuning-opc-publisher.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ To run OPC Publisher in production, network performance requirements (throughput
6060

6161
## Latency considerations
6262

63-
What is typically seen as latency is the time difference between the `iothub-enqueuedtime` of the [device to cloud message](https://learn.microsoft.com/azure/iot-hub/iot-hub-devguide-messages-construct) and the `SourceTimestamp` field of an OPC UA telemetry event. There are multiple factors, which contribute to the latency:
63+
What is typically seen as latency is the time difference between the `iothub-enqueuedtime` of the [device to cloud message](/azure/iot-hub/iot-hub-devguide-messages-construct) and the `SourceTimestamp` field of an OPC UA telemetry event. There are multiple factors, which contribute to the latency:
6464
* The `SourceTimestamp` of the OPC UA telemetry event is a value [defined by the OPC UA Specification](https://reference.opcfoundation.org/Core/Part4/v104/7.7.3/) as to be as close to the source of the value. The origin of `SourceTimestamp` is highly dependent on the setup between sensor and OPC UA server. Independent from the setup, it's important to ensure that the time source is synchronized precisely otherwise the latency calculation will be not correct.
6565
* It's important that the systems and interconnection between the sensor and the IoT Edge host system where OPC Publisher runs is stable and doesn't introduce latency.
6666
* The configuration of the OPC UA nodes to publish and the effect of OPC Publisher command line options on latency will be discussed below.
@@ -116,7 +116,7 @@ OPC Publisher maintains an internal queue for all data change notifications. The
116116

117117
If the queue keeps growing even though the `--si` and `--ms` have been adjusted and the queue capacity will be reached, messages will be discarded. The reason can be that the time it takes to send a message to IoT Hub doesn't provide the required throughput. Since this time is made up of multiple parts to understand if there's a bottleneck several areas should be validated:
118118
- Validation that the IoT Edge host network connection to the IoT Hub is stable and has low latency.
119-
- Validation that the modules running in IoT Edge (OPC Publisher, edgeHub, and others) don't hit any limits for CPU and memory consumption. Additionally use of the [IoT Edge metrics collector](https://learn.microsoft.com/azure/iot-edge/how-to-collect-and-transport-metrics?view=iotedge-1.4&tabs=iothub) can give insights on resource usage of the system.
119+
- Validation that the modules running in IoT Edge (OPC Publisher, edgeHub, and others) don't hit any limits for CPU and memory consumption. Additionally use of the [IoT Edge metrics collector](/azure/iot-edge/how-to-collect-and-transport-metrics?tabs=iothub) can give insights on resource usage of the system.
120120
- Validation that the time to ingest a message from an IoT Edge module not using any OPC UA data does meet expectations even with active workload.
121121

122122
If the capacity of the internal message queue is used and there are still incoming notifications from the OPC UA server, data change notifications will be discarded. The diagnostics output will show the number of discarded messages.

articles/iot-hub-device-update/delta-updates.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Delta updates allow you to generate a small update that represents only the chan
2525

2626
## Configure a device with Device Update agent and delta processor component
2727

28-
In order for your device to download and install delta updates from the Device Update service, you will need several components present and configured.
28+
In order for your device to download and install delta updates from the Device Update service, you need several components present and configured.
2929

3030
### Device Update agent
3131

@@ -48,15 +48,15 @@ sudo ldconfig
4848

4949
## Add a source SWU image file to your device
5050

51-
After a delta update has been downloaded to a device, it must be compared against a valid _source SWU file_ that has been previously cached on the device in order to be re-created into a full image. The simplest way to populate this cached image is to deploy a full image update to the device via the Device Update service (using the existing [import](import-update.md) and [deployment](deploy-update.md) processes). As long as the device has been configured with the Device Update agent (version 1.0 or later) and delta processor, the installed SWU file will be cached automatically by the Device Update agent for later delta update use.
51+
After a delta update has been downloaded to a device, it must be compared against a valid _source SWU file_ that has been previously cached on the device in order to be re-created into a full image. The simplest way to populate this cached image is to deploy a full image update to the device via the Device Update service (using the existing [import](import-update.md) and [deployment](deploy-update.md) processes). As long as the device has been configured with the Device Update agent (version 1.0 or later) and delta processor, the installed SWU file is cached automatically by the Device Update agent for later delta update use.
5252

5353
If you instead want to directly pre-populate the source image on your device, the path where the image is expected is:
5454

5555
`[BASE_SOURCE_DOWNLOAD_CACHE_PATH]/sha256-[ENCODED HASH]`
5656

57-
By default, `BASE_SOURCE_DOWNLOAD_CACHE_PATH` is the path listed below. The `[provider]` value is the Provider part of the [updateId](import-concepts.md#update-identity) for the source SWU file.
57+
By default, `BASE_SOURCE_DOWNLOAD_CACHE_PATH` is the path `/var/lib/adu/sdc/[provider]`. The `[provider]` value is the Provider part of the [updateId](import-concepts.md#update-identity) for the source SWU file.
58+
5859

59-
`/var/lib/adu/sdc/[provider]`
6060

6161
`ENCODED_HASH` is the base64 hex string of the SHA256 of the binary, but after encoding to base64 hex string, it encodes the characters as follows:
6262

@@ -74,7 +74,7 @@ The following table provides a list of the content needed, where to retrieve the
7474

7575
| Binary Name | Where to acquire | How to install |
7676
|--|--|--|
77-
| DiffGen | [Azure/iot-hub-device-update-delta](https://github.com/Azure/iot-hub-device-update-delta) GitHub repo | From the root folder, select the _Microsoft.Azure.DeviceUpdate.Diffs.[version].nupkg_ file. [Learn more about NuGet packages](https://learn.microsoft.com/nuget/).|
77+
| DiffGen | [Azure/iot-hub-device-update-delta](https://github.com/Azure/iot-hub-device-update-delta) GitHub repo | From the root folder, select the _Microsoft.Azure.DeviceUpdate.Diffs.[version].nupkg_ file. [Learn more about NuGet packages](/nuget/).|
7878
| .NET (Runtime) | Via Terminal / Package Managers | [Instructions for Linux](/dotnet/core/install/linux). Only the Runtime is required. |
7979

8080
### Dependencies
@@ -95,25 +95,25 @@ The DiffGen tool is run with several arguments. All arguments are required, and
9595

9696
`DiffGenTool [source_archive] [target_archive] [output_path] [log_folder] [working_folder] [recompressed_target_archive]`
9797

98-
- The script recompress_tool.py will be run to create the file [recompressed_target_archive], which will then be used instead of [target_archive] as the target file for creating the diff.
99-
- The image files within [recompressed_target_archive] will be compressed with zstd.
98+
- The script recompress_tool.py runs to create the file [recompressed_target_archive], which then is used instead of [target_archive] as the target file for creating the diff.
99+
- The image files within [recompressed_target_archive] are compressed with zstd.
100100

101101
If your SWU files are signed (likely), you'll need another argument as well:
102102

103103
`DiffGenTool [source_archive] [target_archive] [output_path] [log_folder] [working_folder] [recompressed_target_archive] "[signing_command]"`
104104

105-
- In addition to using [recompressed_target_archive] as the target file, providing a signing command string parameter will run recompress_and_sign_tool.py to create the file [recompressed_target_archive] and have the sw-description file within the archive signed (meaning a sw-description.sig file will be present). You can use the sample `sign_file.sh` script from the [Azure/iot-hub-device-update-delta](https://github.com/Azure/iot-hub-device-update-delta/tree/main/src/scripts/signing_samples/openssl_wrapper) GitHub repo. Open the script, edit it to add the path to your private key file, then save it. See the examples section below for sample usage.
105+
- In addition to using [recompressed_target_archive] as the target file, providing a signing command string parameter runs recompress_and_sign_tool.py to create the file [recompressed_target_archive] and have the sw-description file within the archive signed (meaning a sw-description.sig file is present). You can use the sample `sign_file.sh` script from the [Azure/iot-hub-device-update-delta](https://github.com/Azure/iot-hub-device-update-delta/tree/main/src/scripts/signing_samples/openssl_wrapper) GitHub repo. Open the script, edit it to add the path to your private key file, then save it. See the examples section below for sample usage.
106106

107107
The following table describes the arguments in more detail:
108108

109109
| Argument | Description |
110110
|--|--|
111-
| [source_archive] | This is the image that the delta will be based against when creating the delta. _Important_: this image must be identical to the image that is already present on the device (for example, cached from a previous update). |
112-
| [target_archive] | This is the image that the delta will update the device to. |
113-
| [output_path] | The path (including the desired name of the delta file being generated) on the host machine where the delta file will be placed after creation. If the path doesn't exist, the directory will be created by the tool. |
114-
| [log_folder] | The path on the host machine where logs will be created. We recommend defining this location as a sub folder of the output path. If the path doesn't exist, it will be created by the tool. |
115-
| [working_folder] | The path on the machine where collateral and other working files are placed during the delta generation. We recommend defining this location as a subfolder of the output path. If the path doesn't exist, it will be created by the tool. |
116-
| [recompressed_target_archive] | The path on the host machine where the recompressed target file will be created. This file will be used instead of <target_archive> as the target file for diff generation. If this path exists before calling DiffGenTool, the path will be overwritten. We recommend defining this path as a file in the subfolder of the output path. |
111+
| [source_archive] | This is the image that the delta is based against when creating the delta. _Important_: this image must be identical to the image that is already present on the device (for example, cached from a previous update). |
112+
| [target_archive] | This is the image that the delta updates the device to. |
113+
| [output_path] | The path (including the desired name of the delta file being generated) on the host machine where the delta file is placed after creation. If the path doesn't exist, the directory is created by the tool. |
114+
| [log_folder] | The path on the host machine where logs creates. We recommend defining this location as a sub folder of the output path. If the path doesn't exist, it is created by the tool. |
115+
| [working_folder] | The path on the machine where collateral and other working files are placed during the delta generation. We recommend defining this location as a subfolder of the output path. If the path doesn't exist, it is created by the tool. |
116+
| [recompressed_target_archive] | The path on the host machine where the recompressed target file is created. This file is used instead of <target_archive> as the target file for diff generation. If this path exists before calling DiffGenTool, the path is overwritten. We recommend defining this path as a file in the subfolder of the output path. |
117117
| "[signing_command]" _(optional)_ | A customizable command used for signing the sw-description file within the recompressed archive file. The sw-description file in the recompressed archive is used as an input parameter for the signing command; DiffGenTool expects the signing command to create a new signature file, using the name of the input with `.sig` appended. Surrounding the parameter in double quotes is needed so that the whole command is passed in as a single parameter. Also, avoid putting the '~' character in a key path used for signing, and use the full home path instead (for example, use /home/USER/keys/priv.pem instead of ~/keys/priv.pem). |
118118

119119
### DiffGen examples
@@ -153,7 +153,7 @@ The basic process of importing an update to the Device Update service is unchang
153153

154154
### Generate import manifest
155155

156-
The first step to import an update into the Device Update service is always to create an import manifest if you don't already have one. For more information about import manifests, see [Importing updates into Device Update](import-concepts.md#import-manifest). For delta updates, your import manifest will need to reference two files:
156+
The first step to import an update into the Device Update service is always to create an import manifest if you don't already have one. For more information about import manifests, see [Importing updates into Device Update](import-concepts.md#import-manifest). For delta updates, your import manifest needs to reference two files:
157157

158158
- The _recompressed_ target SWU image created when you ran the DiffGen tool.
159159
- The delta file created when you ran the DiffGen tool.
@@ -171,9 +171,9 @@ Use the `relatedFiles` object to specify information about the delta update file
171171
}
172172
```
173173

174-
Both of the properties above are specific to your _source SWU image file_ that you used as an input to the DiffGen tool when creating your delta update. The information about the source SWU image is needed in your import manifest even though you will not actually be importing the source image. The delta components on the device use this metadata about the source image to locate the image on the device once the delta has been downloaded.
174+
Both of the properties above are specific to your _source SWU image file_ that you used as an input to the DiffGen tool when creating your delta update. The information about the source SWU image is needed in your import manifest even though you don't actually import the source image. The delta components on the device use this metadata about the source image to locate the image on the device once the delta has been downloaded.
175175

176-
Use the `downloadHandler` object to specify how the Device Update agent will orchestrate the delta update, using the related files feature. Unless you are customizing your own version of the Device Update agent for delta functionality, you should only use this downloadHandler:
176+
Use the `downloadHandler` object to specify how the Device Update agent orchestrates the delta update, using the related files feature. Unless you are customizing your own version of the Device Update agent for delta functionality, you should only use this downloadHandler:
177177

178178
```json
179179
"downloadHandler": {
@@ -212,14 +212,14 @@ There are three possible outcomes for a delta update deployment:
212212

213213
To determine which of the above outcomes occurred, you can view the install results with error code and extended error code by selecting any device that is in a failed state. You can also [collect logs](device-update-log-collection.md) from multiple failed devices if needed.
214214

215-
If the delta update succeeded, the device will show a "Succeeded" status.
215+
If the delta update succeeded, the device shows a "Succeeded" status.
216216

217-
If the delta update failed but did a successful fallback to the full image, it will show the following error status:
217+
If the delta update failed but did a successful fallback to the full image, it shows the following error status:
218218

219219
- resultCode: _[value greater than 0]_
220220
- extendedResultCode: _[non-zero]_
221221

222-
If the update was unsuccessful, it will show an error status that can be interpreted using the instructions below:
222+
If the update was unsuccessful, it shows an error status that can be interpreted using the instructions below:
223223

224224
- Start with the Device Update Agent errors in [result.h](https://github.com/Azure/iot-hub-device-update/blob/main/src/inc/aduc/result.h).
225225

articles/machine-learning/concept-designer.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
title: What is the Azure Machine Learning designer(v2)?
33
titleSuffix: Azure Machine Learning
44
description: Learn what the Azure Machine Learning designer is and what tasks you can use it for. The drag-and-drop UI enables customer to build machine learning pipeline.
5-
services: machine-learning
65
ms.service: machine-learning
76
ms.subservice: core
87
ms.topic: conceptual
@@ -38,7 +37,7 @@ As shown in below GIF, you can build a pipeline visually by dragging and droppin
3837

3938
The building blocks of pipeline are called assets in Azure Machine Learning, which includes:
4039
- [Data](./concept-data.md)
41-
- [Model](https://learn.microsoft.com/azure/machine-learning/how-to-manage-models?view=azureml-api-2&tabs=cli%2Cuse-local)
40+
- [Model](how-to-manage-models.md?view=azureml-api-2&preserve-view=true&tabs=cli)
4241
- [Component](./concept-component.md)
4342

4443
Designer has an asset library on the left side, where you can access all the assets you need to create your pipeline. It shows both the assets you created in your workspace, and the assets shared in [registry](./how-to-share-models-pipelines-across-workspaces-with-registries.md) that you have permission to access.

articles/machine-learning/how-to-create-component-pipeline-python.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
title: 'Create and run machine learning pipelines using components with the Azure Machine Learning SDK v2'
33
titleSuffix: Azure Machine Learning
44
description: Build a machine learning pipeline for image classification. Focus on machine learning instead of infrastructure and automation.
5-
services: machine-learning
65
ms.service: machine-learning
76
ms.subservice: mlops
87
ms.topic: how-to
@@ -256,7 +255,7 @@ Reference for more available credentials if it doesn't work for you: [configure
256255
257256
#### Get a handle to a workspace with compute
258257
259-
Create a `MLClient` object to manage Azure Machine Learning services. If you use [serverless compute (preview)](https://learn.microsoft.com/azure/machine-learning/how-to-use-serverless-compute?view=azureml-api-2&tabs=python) then there is no need to create these computes.
258+
Create a `MLClient` object to manage Azure Machine Learning services. If you use [serverless compute (preview)](how-to-use-serverless-compute.md?view=azureml-api-2&preserve-view=true&tabs=python) then there is no need to create these computes.
260259
261260
[!notebook-python[] (~/azureml-examples-main/sdk/python/jobs/pipelines/2e_image_classification_keras_minist_convnet/image_classification_keras_minist_convnet.ipynb?name=workspace)]
262261

articles/machine-learning/how-to-setup-mlops-azureml.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ This scenario includes prebuilt workflows for two approaches to deploying a trai
338338
* [Install and set up Python SDK v2](https://aka.ms/sdk-v2-install)
339339
* [Install and set up Python CLI v2](how-to-configure-cli.md)
340340
* [Azure MLOps (v2) solution accelerator](https://github.com/Azure/mlops-v2) on GitHub
341-
* Training course on [MLOps with Machine Learning](https://learn.microsoft.com/training/paths/introduction-machine-learn-operations/)
341+
* Training course on [MLOps with Machine Learning](/training/paths/introduction-machine-learn-operations/)
342342
* Learn more about [Azure Pipelines with Azure Machine Learning](how-to-devops-machine-learning.md)
343343
* Learn more about [GitHub Actions with Azure Machine Learning](how-to-github-actions-machine-learning.md)
344344
* Deploy MLOps on Azure in Less Than an Hour - [Community MLOps V2 Accelerator video](https://www.youtube.com/watch?v=5yPDkWCMmtk)

articles/machine-learning/how-to-setup-mlops-github-azure-ml.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ The sample training and deployment Machine Learning pipelines and GitHub workflo
301301
* [Install and set up Python SDK v2](https://aka.ms/sdk-v2-install)
302302
* [Install and set up Python CLI v2](how-to-configure-cli.md)
303303
* [Azure MLOps (v2) solution accelerator](https://github.com/Azure/mlops-v2) on GitHub
304-
* Training course on [MLOps with Machine Learning](https://learn.microsoft.com/training/paths/introduction-machine-learn-operations/)
304+
* Training course on [MLOps with Machine Learning](/training/paths/introduction-machine-learn-operations/)
305305
* Learn more about [Azure Pipelines with Machine Learning](how-to-devops-machine-learning.md)
306306
* Learn more about [GitHub Actions with Machine Learning](how-to-github-actions-machine-learning.md)
307307
* Deploy MLOps on Azure in Less Than an Hour - [Community MLOps V2 Accelerator video](https://www.youtube.com/watch?v=5yPDkWCMmtk)

0 commit comments

Comments
 (0)