This blog series has several versions, each covering different aspects and techniques. Check out the following resources:
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow: Step-by-Step Guide Detailed instructions for fine-tuning and integrating custom Phi-3 models with Prompt flow using a code-first approach. Available on:
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio Detailed instructions for fine-tuning and integrating custom Phi-3 models with Prompt flow in Azure AI / ML Studio using a low-code approach. Available on:
Evaluate Fine-tuned Phi-3 / Phi-3.5 Models in Azure AI Studio Focusing on Microsoft's Responsible AI Detailed instructions for evaluating the Phi-3 / Phi-3.5 model in Azure AI Studio using a low-code approach. Available on:
Phi-3 is a family of small language models (SLMs) developed by Microsoft that delivers exceptional performance and cost-effectiveness. In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate the custom Phi-3 model with Prompt flow in Azure AI Studio. By leveraging Azure AI / ML Studio, you will establish a workflow for deploying and utilizing custom AI models. This tutorial is divided into three series:
Series 1: Set up Azure resources and Prepare for fine-tuning
Create Azure Machine Learning workspace: You start by setting up an Azure Machine Learning workspace, which serves as the hub for managing machine learning experiments and models.
Request GPU quotas: Since Phi-3 model fine-tuning typically benefits from GPU acceleration, you request GPU quotas in your Azure subscription.
Add role assignment: You set up a User Assigned Managed Identity (UAI) and assign it necessary permissions (Contributor, Storage Blob Data Reader, AcrPull) to access resources like storage accounts and container registries.
Set up the project: You create a local environment, set up a virtual environment, install required packages, and create a script (download_dataset.py) to download the dataset (ULTRACHAT_200k) required for fine-tuning.
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
Create compute cluster: In Azure ML Studio, you create dedicated GPU compute clusters, using Standard_NC24ads_A100_v4 for fine-tuning and Standard_NC6s_v3 for deploying the Phi-3 model.
Fine-tune the Phi-3 model: Using the Azure ML Studio interface, you fine-tune the Phi-3 model by specifying training and validation datasets, and configuring parameters like learning rate.
Deploy the fine-tuned model: Once fine-tuning is complete, you register the model, create an online endpoint, and deploy the model to make it accessible for real-time inference.
Series 3: Integrate the custom Phi-3 model with Prompt flow in Azure AI Studio
Create Azure AI Studio Hub and Project: You create a Hub (similar to a resource group) and a Project within Azure AI Studio to manage your AI-related work.
Add a custom connection: To integrate the fine-tuned Phi-3 model with Prompt flow, you create a custom connection in Azure AI Studio, specifying the endpoint and authentication key generated during model deployment in Azure ML Studio.
Create Prompt flow: You create a new Prompt flow within the Azure AI Studio Project, configure it to use the custom connection, and design the flow to interact with the Phi-3 model for tasks like chat completion.
Series 1: Set Up Azure resources and Prepare for fine-tuning
Create Azure Machine Learning workspace
Request GPU quotas in Azure subscription
Add role assignment
Set up the project
Prepare dataset for fine-tuning
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
Fine-tune the Phi-3 model
Deploy the fine-tuned Phi-3 model
Series 3: Integrate the custom phi-3 model with Prompt flow in Azure AI Studio
Integrate the custom Phi-3 model with Prompt flow
Chat with your custom Phi-3 model
Congratulation!
Series 1: Set up Azure resources and Prepare for fine-tuning
Create Azure Machine Learning workspace
In this exercise, you will:
Create an Azure Machine Learning Workspace.
Create an Azure Machine Learning Workspace
Typeazure machine learningin thesearch barat the top of the portal page and selectAzure Machine Learningfrom the options that appear.
Select+ Createfrom the navigation menu.
SelectNew workspacefrom the navigation menu.
Perform the following tasks:
Select your AzureSubscription.
Select theResource groupto use (create a new one if needed).
EnterWorkspace Name. It must be a unique value.
Select theRegionyou'd like to use.
Select theStorage accountto use (create a new one if needed).
Select theKey vaultto use (create a new one if needed).
Select theApplication insightsto use (create a new one if needed).
Select theContainer registry to use (create a new one if needed).
SelectReview + Create.
SelectCreate.
Request GPU Quotas in Azure Subscription
In this tutorial, you will learn how to fine-tune and deploy a Phi-3 model, using GPUs. For fine-tuning, you will use theStandard_NC24ads_A100_v4GPU, which requires a quota request. For deployment, you will use theStandard_NC6s_v3GPU, which also requires a quota request.
Note
Only Pay-As-You-Go subscriptions (the standard subscription type) are eligible for GPU allocation; benefit subscriptions are not currently supported.
Perform the following tasks to requestStandard NCADSA100v4 Familyquota:
SelectQuotafrom the left side tab.
Select theVirtual machine familyto use. For example, selectStandard NCADSA100v4 Family Cluster Dedicated vCPUs, which includes theStandard_NC24ads_A100_v4GPU.
Select theRequest quotafrom the navigation menu.
Inside the Request quota page, enter theNew cores limityou'd like to use. For example, 24.
Inside the Request quota page, selectSubmitto request the GPU quota.
Perform the following tasks to requestStandard NCSv3 Familyquota:
SelectQuotafrom the left side tab.
Select theVirtual machine familyto use. For example, selectStandard NCSv3 Family Cluster Dedicated vCPUs, which includes theStandard_NC6s_v3GPU.
Select theRequest quotafrom the navigation menu.
Inside the Request quota page, enter theNew cores limityou'd like to use. For example, 24.
Inside the Request quota page, selectSubmitto request the GPU quota.
Add role assignment
To fine-tune and deploy your models, you must first ceate a User Assigned Managed Identity (UAI) and assign it the appropriate permissions. This UAI will be used for authentication during deployment, so it is critical to grant it access to the storage accounts, container registry, and resource group.
In this exercise, you will:
Create User Assigned Managed Identity(UAI).
Add Contributor role assignment to Managed Identity.
Add Storage Blob Data Reader role assignment to Managed Identity.
Add AcrPull role assignment to Managed Identity.
Create User Assigned Managed Identity(UAI)
Typemanaged identitiesin thesearch barat the top of the portal page and selectManaged Identitiesfrom the options that appear.
Select+ Create.
Perform the following tasks to navigate to Add role assignment page:
Select your AzureSubscription.
Select theResource groupto use (create a new one if needed).
Select theRegionyou'd like to use.
Enter theName. It must be a unique value.
SelectReview + create.
Select+ Create.
Add Contributor role assignment to Managed Identity
Navigate to the Managed Identity resource that you created.
SelectAzure role assignmentsfrom the left side tab.
Select+Add role assignmentfrom the navigation menu.
Inside Add role assignment page, Perform the following tasks:
Select theScopetoResource group.
Select your AzureSubscription.
Select theResource groupto use.
Select theRoletoContributor.
SelectSave.
Add Storage Blob Data Reader role assignment to Managed Identity
Typeazure storage accountsin thesearch barat the top of the portal page and selectStorage accountsfrom the options that appear.
Select the storage account that associated with the Azure Machine Learning workspace. For example,finetunephistorage.
Perform the following tasks to navigate to Add role assignment page:
Navigate to the Azure Storage account that you created.
SelectAccess Control (IAM)from the left side tab.
Select+ Addfrom the navigation menu.
SelectAdd role assignmentfrom the navigation menu.
Inside Add role assignment page, Perform the following tasks:
Inside the Role page, typeStorage Blob Data Readerin thesearch barand selectStorage Blob Data Readerfrom the options that appear.
Inside the Role page, selectNext.
Inside the Members page, selectAssign access toManaged identity.
Inside the Members page, select+ Select members.
Inside Select managed identities page, select your AzureSubscription.
Select thefinetune-phifolder that you created, which is located atC:\Users\yourUserName\finetune-phi.
In the left pane of Visual Studio Code, right-click and selectNew Fileto create a new file nameddownload_dataset.py.
Prepare dataset for fine-tuning
In this exercise, you will run thedownload_dataset.pyfile to download theultrachat_200kdatasets to your local environment. You will then use this datasets to fine-tune the Phi-3 model in Azure Machine Learning.
In this exercise, you will:
Add code to thedownload_dataset.pyfile to download the datasets.
Run thedownload_dataset.pyfile to download datasets to your local environment.
Download your dataset usingdownload_dataset.py
Open thedownload_dataset.pyfile in Visual Studio Code.
Add the following code intodownload_dataset.py.
import json
import os
from datasets import load_dataset
def load_and_split_dataset(dataset_name, config_name, split_ratio):
"""
Load and split a dataset.
"""
# Load the dataset with the specified name, configuration, and split ratio
dataset = load_dataset(dataset_name, config_name, split=split_ratio)
print(f"Original dataset size: {len(dataset)}")
# Split the dataset into train and test sets (80% train, 20% test)
split_dataset = dataset.train_test_split(test_size=0.2)
print(f"Train dataset size: {len(split_dataset['train'])}")
print(f"Test dataset size: {len(split_dataset['test'])}")
return split_dataset
def save_dataset_to_jsonl(dataset, filepath):
"""
Save a dataset to a JSONL file.
"""
# Create the directory if it does not exist
os.makedirs(os.path.dirname(filepath), exist_ok=True)
# Open the file in write mode
with open(filepath, 'w', encoding='utf-8') as f:
# Iterate over each record in the dataset
for record in dataset:
# Dump the record as a JSON object and write it to the file
json.dump(record, f)
# Write a newline character to separate records
f.write('\n')
print(f"Dataset saved to {filepath}")
def main():
"""
Main function to load, split, and save the dataset.
"""
# Load and split the ULTRACHAT_200k dataset with a specific configuration and split ratio
dataset = load_and_split_dataset("HuggingFaceH4/ultrachat_200k", 'default', 'train_sft[:1%]')
# Extract the train and test datasets from the split
train_dataset = dataset['train']
test_dataset = dataset['test']
# Save the train dataset to a JSONL file
save_dataset_to_jsonl(train_dataset, "data/train_data.jsonl")
# Save the test dataset to a separate JSONL file
save_dataset_to_jsonl(test_dataset, "data/test_data.jsonl")
if __name__ == "__main__":
main()
Type the following command inside your terminal to run the script and download the dataset to your local environment.
python download_dataset.py
Verify that the datasets were saved successfully to your localfinetune-phi/datadirectory.
Note
Note on dataset size and fine-tuning time
In this tutorial, you use only 1% of the dataset (split='train[:1%]'). This significantly reduces the amount of data, speeding up both the upload and fine-tuning processes. You can adjust the percentage to find the right balance between training time and model performance. Using a smaller subset of the dataset reduces the time required for fine-tuning, making the process more manageable for a tutorial.
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
Fine-tune the Phi-3 model
In this exercise, you will fine-tune the Phi-3 model in Azure Machine Learning Studio.
In this exercise, you will:
Create computer cluster for fine-tuning.
Fine-tune the Phi-3 model in Azure Machine Learning Studio.
Select the Azure Macnine Learning workspace that you created.
Perform the following tasks:
SelectModel catalogfrom the left side tab.
Typephi-3-mini-4kin thesearch barand selectPhi-3-mini-4k-instructfrom the options that appear.
SelectFine-tunefrom the navigation menu.
Perform the following tasks:
SelectSelect task typetoChat completion.
Select+ Select datato uploadTraning data.
Select the Validation data upload type toProvide different validation data.
Select+ Select datato uploadValidation data.
Tip
You can select Advanced settings to customize configurations such as learning_rate and lr_scheduler_type to optimize the fine-tuning process according to your specific needs.
SelectFinish.
In this exercise, you successfully fine-tuned the Phi-3 model using Azure Machine Learning. Please note that the fine-tuning process can take a considerable amount of time. After running the fine-tuning job, you need to wait for it to complete. You can monitor the status of the fine-tuning job by navigating to the Jobs tab on the left side of your Azure Machine Learning Workspace. In the next series, you will deploy the fine-tuned model and integrate it with Prompt flow.
Deploy the fine-tuned model
To integrate the fine-tuned Phi-3 model with Prompt flow, you need to deploy the model to make it accessible for real-time inference. This process involves registering the model, creating an online endpoint, and deploying the model.
In this exercise, you will:
Register the fine-tuned model in the Azure Machine Learning workspace.
Select the Azure Macnine Learning workspace that you created.
SelectModelsfrom the left side tab.
Select+ Register.
SelectFrom a job output.
Select the job that you created.
SelectNext.
SelectModel typetoMLflow.
Ensure thatJob outputis selected; it should be automatically selected.
SelectNext.
SelectRegister.
You can view your registered model by navigating to theModelsmenu from the left side tab.
Deploy the fine-tuned model
Navigate to the Azure Macnine Learning workspace that you created.
SelectEndpointsfrom the left side tab.
SelectReal-time endpointsfrom the navigation menu.
SelectCreate.
select the registered model that you created.
SelectSelect.
Perform the following tasks:
SelectVirtual machinetoStandard_NC6s_v3.
Select theInstance countyou'd like to use. For example,1.
Select theEndpointtoNewto create an endpoint.
EnterEndpoint name. It must be a unique value.
EnterDeployment name. It must be a unique value.
SelectDeploy.
Warning
To avoid additional charges to your account, make sure to delete the created endpoint in the Azure Machine Learning workspace.
Check deployment status in Azure Machine Learning Workspace
Navigate to Azure Machine Learning workspace that you created.
SelectEndpointsfrom the left side tab.
Select the endpoint that you created.
On this page, you can manage the endpoints during the deployment process.
Note
Once the deployment is complete, ensure thatLive trafficis set to100%. If it is not, selectUpdate trafficto adjust the traffic settings. Note that you cannot test the model if the traffic is set to 0%.
Series 3: Integrate the custom phi-3 model with Prompt flow in Azure AI Studio
Integrate the custom Phi-3 model with Prompt flow
After successfully deploying your fine-tuned model, you can now integrate it with Prompt flow to use your model in real-time applications, enabling a variety of interactive tasks with your custom Phi-3 model.
In this exercise, you will:
Create Azure AI Studio Hub.
Create Azure AI Studio Project.
Create Prompt flow.
Add a custom connection for the fine-tuned Phi-3 model.
Set up Prompt flow to chat with your custom Phi-3 model
Note
You can also integrate with Prompt flow using Azure ML Studio. The same integration process can be applied to Azure ML Studio.
Create Azure AI Studio Hub
You need to create a Hub before creating the Project. A Hub acts like a Resource Group, allowing you to organize and manage multiple Projects within Azure AI Studio.
Select theResource groupto use (create a new one if needed).
Select theLocationyou'd like to use.
Select theConnect Azure AI Servicesto use (create a new one if needed).
SelectConnect Azure AI SearchtoSkip connecting.
SelectNext.
Create Azure AI Studio Project
In the Hub that you created, selectAll projectsfrom the left side tab.
Select+ New projectfrom the navigation menu.
EnterProject name. It must be a unique value.
SelectCreate a project.
Add a custom connection for the fine-tuned Phi-3 model
To integrate your custom Phi-3 model with Prompt flow, you need to save the model's endpoint and key in a custom connection. This setup ensures access to your custom Phi-3 model in Prompt flow.
Set api key and endpoint uri of the fine-tuned Phi-3 model
Navigate to the Azure AI Studio project that you created.
In the Project that you created, selectSettingsfrom the left side tab.
Select+ New connection.
SelectCustom keysfrom the navigation menu.
Perform the following tasks:
Select+ Add key value pairs.
For the key name, enterendpointand paste the endpoint you copied from Azure ML Studio into the value field.
Select+ Add key value pairsagain.
For the key name, enterkeyand paste the key you copied from Azure ML Studio into the value field.
After adding the keys, selectis secretto prevent the key from being exposed.
SelectAdd connection.
Perform the following tasks to add the custom Phi-3 model's key:
Create Prompt flow
You have added a custom connection in Azure AI Studio. Now, let's create a Prompt flow using the following steps. Then, you will connect this Prompt flow to the custom connection so that you can use the fine-tuned model within the Prompt flow.
Navigate to the Azure AI Studio project that you created.
SelectPrompt flowfrom the left side tab.
Select+ Createfrom the navigation menu.
SelectChat flowfrom the navigation menu.
EnterFolder nameto use.
SelectCreate.
Set up Prompt flow to chat with your custom Phi-3 model
You need to integrate the fine-tuned Phi-3 model into a Prompt flow. However, the existing Prompt flow provided is not designed for this purpose. Therefore, you must redesign the Prompt flow to enable the integration of the custom model.
In the Prompt flow, perform the following tasks to rebuild the existing flow:
Add the following code tointegrate_with_promptflow.py file to use the custom Phi-3 model in Prompt flow.
import logging
import requests
from promptflow import tool
from promptflow.connections import CustomConnection
# Logging setup
logging.basicConfig(
format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
level=logging.DEBUG
)
logger = logging.getLogger(__name__)
def query_phi3_model(input_data: str, connection: CustomConnection) -> str:
"""
Send a request to the Phi-3 model endpoint with the given input data using Custom Connection.
"""
# "connection" is the name of the Custom Connection, "endpoint", "key" are the keys in the Custom Connection
endpoint_url = connection.endpoint
api_key = connection.key
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
data = {
"input_data": {
"input_string": [
{"role": "user", "content": input_data}
],
"parameters": {
"temperature": 0.7,
"max_new_tokens": 128
}
}
}
try:
response = requests.post(endpoint_url, json=data, headers=headers)
response.raise_for_status()
# Log the full JSON response
logger.debug(f"Full JSON response: {response.json()}")
result = response.json()["output"]
logger.info("Successfully received response from Azure ML Endpoint.")
return result
except requests.exceptions.RequestException as e:
logger.error(f"Error querying Azure ML Endpoint: {e}")
raise
@tool
def my_python_tool(input_data: str, connection: CustomConnection) -> str:
"""
Tool function to process input data and query the Phi-3 model.
"""
return query_phi3_model(input_data, connection)
SelectChat input,Chat outputto enable chat with your model.
Now you are ready to chat with your custom Phi-3 model. In the next exercise, you will learn how to start Prompt flow and use it to chat with your fine-tuned Phi-3 model.
Note
The rebuilt flow should look like the image below:
Chat with your custom Phi-3 model
Now that you have fine-tuned and integrated your custom Phi-3 model with Prompt flow, you are ready to start interacting with it. This exercise will guide you through the process of setting up and initiating a chat with your model using Prompt flow. By following these steps, you will be able to fully utilize the capabilities of your fine-tuned Phi-3 model for various tasks and conversations.
Start Prompt flow
SelectStart compute sessionsto start Prompt flow.
SelectValidate and parse inputto renew parameters.
Select theValueof theconnectionto the custom connection you created. For example,connection.
Chat with your custom Phi-3 model
SelectChat.
Here's an example of the results: Now you can chat with your custom Phi-3 model. It is recommended to ask questions based on the data used for fine-tuning.
Congratulations!
You've completed this tutorial
Congratulations! You have successfully completed the tutorial on fine-tuning and integrating custom Phi-3 models with Prompt flow in Azure AI Studio. This tutorial introduced the process of fine-tuning, deploying, and integrating the custom Phi-3 model with Prompt flow using Azure ML Studio and Azure AI Studio.
Clean Up Azure Resources
Cleanup your Azure resources to avoid additional charges to your account. Go to the Azure portal and delete the following resources:
"}},"componentScriptGroups({\"componentId\":\"custom.widget.MicrosoftFooter\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"components/customComponent/CustomComponent\"]})":[{"__ref":"CachedAsset:text:en_US-components/customComponent/CustomComponent-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/ranks/UserRankLabel\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"components/tags/TagView/TagViewChip\"]})":[{"__ref":"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserRegistrationDate\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserRegistrationDate-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeDescription\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1750285382195"}],"cachedText({\"lastModified\":\"1750285382195\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1750285382195"}]},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"User:user:-1":{"__typename":"User","id":"user:-1","uid":-1,"login":"Anonymous","email":"","avatar":null,"rank":null,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":"ANONYMOUS","registrationTime":null,"confirmEmailStatus":false,"registrationAccessLevel":"VIEW","ssoRegistrationFields":[]},"ssoId":null,"profileSettings":{"__typename":"ProfileSettings","dateDisplayStyle":{"__typename":"InheritableStringSettingWithPossibleValues","key":"layout.friendly_dates_enabled","value":"false","localValue":"true","possibleValues":["true","false"]},"dateDisplayFormat":{"__typename":"InheritableStringSetting","key":"layout.format_pattern_date","value":"MMM dd yyyy","localValue":"MM-dd-yyyy"},"language":{"__typename":"InheritableStringSettingWithPossibleValues","key":"profile.language","value":"en-US","localValue":null,"possibleValues":["en-US","es-ES"]},"repliesSortOrder":{"__typename":"InheritableStringSettingWithPossibleValues","key":"config.user_replies_sort_order","value":"DEFAULT","localValue":"DEFAULT","possibleValues":["DEFAULT","LIKES","PUBLISH_TIME","REVERSE_PUBLISH_TIME"]}},"deleted":false},"CachedAsset:pages-1750098260613":{"__typename":"CachedAsset","id":"pages-1750098260613","value":[{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"UserBlogPermissions.Page","type":"COMMUNITY","urlPath":"/c/user-blog-permissions/page","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"AllEvents","type":"CUSTOM","urlPath":"/Events","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"CommunityHub.Page","type":"CUSTOM","urlPath":"/Directory","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"AllBlogs.Page","type":"CUSTOM","urlPath":"/blogs","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"HealthCheckPage","type":"COMMUNITY","urlPath":"/health","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1750098260613,"localOverride":null,"page":{"id":"GroupHubPostPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"}],"localOverride":false},"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0":{"__typename":"CachedAsset","id":"text:en_US-components/context/AppContext/AppContextProvider-0","value":{"noCommunity":"Cannot find community","noUser":"Cannot find current user","noNode":"Cannot find node with id {nodeId}","noMessage":"Cannot find message with id {messageId}","userBanned":"We're sorry, but you have been banned from using this site.","userBannedReason":"You have been banned for the following reason: {reason}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-0","value":{"title":"Loading..."},"localOverride":false},"Rank:rank:35":{"__typename":"Rank","id":"rank:35","position":16,"name":"Iron Contributor","color":"333333","icon":null,"rankStyle":"TEXT"},"User:user:2076234":{"__typename":"User","id":"user:2076234","uid":2076234,"login":"Minseok_Song","deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMDc2MjM0LTUyMTI2MmlDRjAzQ0Q1OUIwNDRFOTJB"},"rank":{"__ref":"Rank:rank:35"},"email":"","messagesCount":29,"biography":null,"topicsCount":9,"kudosReceivedCount":17,"kudosGivenCount":68,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2023-10-11T02:25:07.343-07:00","confirmEmailStatus":null},"followersCount":null,"solutionsCount":1},"Category:category:EducationSector":{"__typename":"Category","id":"category:EducationSector","entityType":"CATEGORY","displayId":"EducationSector","nodeType":"category","depth":3,"title":"Education Sector","shortTitle":"Education Sector","parent":{"__ref":"Category:category:solutions"},"categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:top":{"__typename":"Category","id":"category:top","entityType":"CATEGORY","displayId":"top","nodeType":"category","depth":0,"title":"Top","shortTitle":"Top"},"Category:category:communities":{"__typename":"Category","id":"category:communities","entityType":"CATEGORY","displayId":"communities","nodeType":"category","depth":1,"parent":{"__ref":"Category:category:top"},"title":"Communities","shortTitle":"Communities"},"Category:category:solutions":{"__typename":"Category","id":"category:solutions","entityType":"CATEGORY","displayId":"solutions","nodeType":"category","depth":2,"parent":{"__ref":"Category:category:communities"},"title":"Topics","shortTitle":"Topics"},"Blog:board:EducatorDeveloperBlog":{"__typename":"Blog","id":"board:EducatorDeveloperBlog","entityType":"BLOG","displayId":"EducatorDeveloperBlog","nodeType":"board","depth":4,"conversationStyle":"BLOG","repliesProperties":{"__typename":"RepliesProperties","sortOrder":"REVERSE_PUBLISH_TIME","repliesFormat":"threaded"},"tagProperties":{"__typename":"TagNodeProperties","tagsEnabled":{"__typename":"PolicyResult","failureReason":null}},"requireTags":false,"tagType":"FREEFORM_ONLY","description":"","title":"Educator Developer Blog","shortTitle":"Educator Developer Blog","parent":{"__ref":"Category:category:EducationSector"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:gxcuf89792"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:communities"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:solutions"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:EducationSector"}}]},"userContext":{"__typename":"NodeUserContext","canAddAttachments":false,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"theme":{"__ref":"Theme:customTheme1"},"boardPolicies":{"__typename":"BoardPolicies","canViewSpamDashBoard":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.access_spam_quarantine.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.access_spam_quarantine.allowed.accessDenied","args":[]}},"canArchiveMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.content_archivals.enable_content_archival_settings.accessDenied","key":"error.lithium.policies.content_archivals.enable_content_archival_settings.accessDenied","args":[]}},"canPublishArticleOnCreate":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","args":[]}}}},"BlogTopicMessage:message:4191726":{"__typename":"BlogTopicMessage","uid":4191726,"subject":"Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio","id":"message:4191726","revisionNum":46,"repliesCount":0,"author":{"__ref":"User:user:2076234"},"depth":0,"hasGivenKudo":false,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"conversation":{"__ref":"Conversation:conversation:4191726"},"messagePolicies":{"__typename":"MessagePolicies","canPublishArticleOnEdit":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","args":[]}},"canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"contentWorkflow":{"__typename":"ContentWorkflow","state":"PUBLISH","scheduledPublishTime":null,"scheduledTimezone":null,"userContext":{"__typename":"MessageWorkflowContext","canSubmitForReview":null,"canEdit":false,"canRecall":null,"canSubmitForPublication":null,"canReturnToAuthor":null,"canPublish":null,"canReturnToReview":null,"canSchedule":false},"shortScheduledTimezone":null},"readOnly":false,"editFrozen":false,"moderationData":{"__ref":"ModerationData:moderation_data:4191726"},"teaser":"
\n
Phi-3 is a family of small language models (SLMs) developed by Microsoft that delivers exceptional performance and cost-effectiveness. In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate the custom Phi-3 model with Prompt flow in Azure AI Studio. By leveraging Azure AI / ML Studio, you will establish a workflow for deploying and utilizing custom AI models.
\n
","body":"
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio
This blog series has several versions, each covering different aspects and techniques. Check out the following resources:
\n
\n
\n
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow: Step-by-Step Guide Detailed instructions for fine-tuning and integrating custom Phi-3 models with Prompt flow using a code-first approach. Available on:\n
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio Detailed instructions for fine-tuning and integrating custom Phi-3 models with Prompt flow in Azure AI / ML Studio using a low-code approach. Available on:\n
Evaluate Fine-tuned Phi-3 / Phi-3.5 Models in Azure AI Studio Focusing on Microsoft's Responsible AI Detailed instructions for evaluating the Phi-3 / Phi-3.5 model in Azure AI Studio using a low-code approach. Available on:\n
Phi-3 is a family of small language models (SLMs) developed by Microsoft that delivers exceptional performance and cost-effectiveness. In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate the custom Phi-3 model with Prompt flow in Azure AI Studio. By leveraging Azure AI / ML Studio, you will establish a workflow for deploying and utilizing custom AI models. This tutorial is divided into three series:
\n
\n
Series 1: Set up Azure resources and Prepare for fine-tuning
\n
\n\n
Create Azure Machine Learning workspace: You start by setting up an Azure Machine Learning workspace, which serves as the hub for managing machine learning experiments and models.
\n
Request GPU quotas: Since Phi-3 model fine-tuning typically benefits from GPU acceleration, you request GPU quotas in your Azure subscription.
\n
Add role assignment: You set up a User Assigned Managed Identity (UAI) and assign it necessary permissions (Contributor, Storage Blob Data Reader, AcrPull) to access resources like storage accounts and container registries.
\n
Set up the project: You create a local environment, set up a virtual environment, install required packages, and create a script (download_dataset.py) to download the dataset (ULTRACHAT_200k) required for fine-tuning.
\n\n
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
\n
\n\n
Create compute cluster: In Azure ML Studio, you create dedicated GPU compute clusters, using Standard_NC24ads_A100_v4 for fine-tuning and Standard_NC6s_v3 for deploying the Phi-3 model.
\n
Fine-tune the Phi-3 model: Using the Azure ML Studio interface, you fine-tune the Phi-3 model by specifying training and validation datasets, and configuring parameters like learning rate.
\n
Deploy the fine-tuned model: Once fine-tuning is complete, you register the model, create an online endpoint, and deploy the model to make it accessible for real-time inference.
\n\n
Series 3: Integrate the custom Phi-3 model with Prompt flow in Azure AI Studio
\n\n
Create Azure AI Studio Hub and Project: You create a Hub (similar to a resource group) and a Project within Azure AI Studio to manage your AI-related work.
\n
Add a custom connection: To integrate the fine-tuned Phi-3 model with Prompt flow, you create a custom connection in Azure AI Studio, specifying the endpoint and authentication key generated during model deployment in Azure ML Studio.
\n
Create Prompt flow: You create a new Prompt flow within the Azure AI Studio Project, configure it to use the custom connection, and design the flow to interact with the Phi-3 model for tasks like chat completion.
Series 1: Set Up Azure resources and Prepare for fine-tuning
\n\n
Create Azure Machine Learning workspace
\n
Request GPU quotas in Azure subscription
\n
Add role assignment
\n
Set up the project
\n
Prepare dataset for fine-tuning
\n\n
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
\n\n
Fine-tune the Phi-3 model
\n
Deploy the fine-tuned Phi-3 model
\n\n
Series 3: Integrate the custom phi-3 model with Prompt flow in Azure AI Studio
\n\n
Integrate the custom Phi-3 model with Prompt flow
\n
Chat with your custom Phi-3 model
\n
Congratulation!
\n\n
\n
Series 1: Set up Azure resources and Prepare for fine-tuning
\n
\n
Create Azure Machine Learning workspace
\n
\n
\n
In this exercise, you will:
\n
\n
Create an Azure Machine Learning Workspace.
\n
\n
Create an Azure Machine Learning Workspace
\n\n
\n
Typeazure machine learningin thesearch barat the top of the portal page and selectAzure Machine Learningfrom the options that appear.
\n
\n
\n
\n
\n
Select+ Createfrom the navigation menu.
\n
\n
\n
SelectNew workspacefrom the navigation menu.
\n
\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
Select your AzureSubscription.
\n
Select theResource groupto use (create a new one if needed).
\n
EnterWorkspace Name. It must be a unique value.
\n
Select theRegionyou'd like to use.
\n
Select theStorage accountto use (create a new one if needed).
\n
Select theKey vaultto use (create a new one if needed).
\n
Select theApplication insightsto use (create a new one if needed).
\n
Select theContainer registry to use (create a new one if needed).
\n
\n\n
\n
\n
\n
SelectReview + Create.
\n
\n
\n
SelectCreate.
\n
\n\n
\n
Request GPU Quotas in Azure Subscription
\n
\n
In this tutorial, you will learn how to fine-tune and deploy a Phi-3 model, using GPUs. For fine-tuning, you will use theStandard_NC24ads_A100_v4GPU, which requires a quota request. For deployment, you will use theStandard_NC6s_v3GPU, which also requires a quota request.
\n
\n
\n
Note\n
Only Pay-As-You-Go subscriptions (the standard subscription type) are eligible for GPU allocation; benefit subscriptions are not currently supported.
Perform the following tasks to requestStandard NCADSA100v4 Familyquota:
\n
\n
\n
SelectQuotafrom the left side tab.
\n
\n
\n
Select theVirtual machine familyto use. For example, selectStandard NCADSA100v4 Family Cluster Dedicated vCPUs, which includes theStandard_NC24ads_A100_v4GPU.
\n
\n
\n
Select theRequest quotafrom the navigation menu.
\n
\n
\n
\n
\n
\n
\n
Inside the Request quota page, enter theNew cores limityou'd like to use. For example, 24.
\n
\n
\n
Inside the Request quota page, selectSubmitto request the GPU quota.
\n
\n
\n
\n
\n
Perform the following tasks to requestStandard NCSv3 Familyquota:
\n
\n
SelectQuotafrom the left side tab.
\n
Select theVirtual machine familyto use. For example, selectStandard NCSv3 Family Cluster Dedicated vCPUs, which includes theStandard_NC6s_v3GPU.
\n
Select theRequest quotafrom the navigation menu.
\n
Inside the Request quota page, enter theNew cores limityou'd like to use. For example, 24.
\n
Inside the Request quota page, selectSubmitto request the GPU quota.
\n
\n
\n\n
\n
\n
Add role assignment
\n
\n
To fine-tune and deploy your models, you must first ceate a User Assigned Managed Identity (UAI) and assign it the appropriate permissions. This UAI will be used for authentication during deployment, so it is critical to grant it access to the storage accounts, container registry, and resource group.
\n
In this exercise, you will:
\n
\n
Create User Assigned Managed Identity(UAI).
\n
Add Contributor role assignment to Managed Identity.
\n
Add Storage Blob Data Reader role assignment to Managed Identity.
\n
Add AcrPull role assignment to Managed Identity.
\n
\n
\n
Create User Assigned Managed Identity(UAI)
\n
\n\n
\n
Typemanaged identitiesin thesearch barat the top of the portal page and selectManaged Identitiesfrom the options that appear.
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
Select+ Create.
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
Perform the following tasks to navigate to Add role assignment page:
\n
\n
Select your AzureSubscription.
\n
Select theResource groupto use (create a new one if needed).
\n
Select theRegionyou'd like to use.
\n
Enter theName. It must be a unique value.
\n
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
SelectReview + create.
\n
\n
\n
Select+ Create.
\n
\n\n
\n
Add Contributor role assignment to Managed Identity
\n
\n\n
\n
Navigate to the Managed Identity resource that you created.
\n
\n
\n
SelectAzure role assignmentsfrom the left side tab.
\n
\n
\n
Select+Add role assignmentfrom the navigation menu.
\n
\n
\n
Inside Add role assignment page, Perform the following tasks:
\n
\n
Select theScopetoResource group.
\n
Select your AzureSubscription.
\n
Select theResource groupto use.
\n
Select theRoletoContributor.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
SelectSave.
\n
\n\n
\n
Add Storage Blob Data Reader role assignment to Managed Identity
\n
\n\n
\n
Typeazure storage accountsin thesearch barat the top of the portal page and selectStorage accountsfrom the options that appear.
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
Select the storage account that associated with the Azure Machine Learning workspace. For example,finetunephistorage.
\n
\n
\n
Perform the following tasks to navigate to Add role assignment page:
\n
\n
Navigate to the Azure Storage account that you created.
\n
SelectAccess Control (IAM)from the left side tab.
\n
Select+ Addfrom the navigation menu.
\n
SelectAdd role assignmentfrom the navigation menu.
\n
\n
\n
\n
\n
\n
\n
\n
Inside Add role assignment page, Perform the following tasks:
\n
\n
\n
Inside the Role page, typeStorage Blob Data Readerin thesearch barand selectStorage Blob Data Readerfrom the options that appear.
\n
\n
\n
\n
\n
\n
\n
Inside the Role page, selectNext.
\n
\n
\n
Inside the Members page, selectAssign access toManaged identity.
\n
\n
\n
Inside the Members page, select+ Select members.
\n
\n
\n
Inside Select managed identities page, select your AzureSubscription.
Select thefinetune-phifolder that you created, which is located atC:\\Users\\yourUserName\\finetune-phi.
\n
\n
\n
\n\n
\n
\n
\n
\n
In the left pane of Visual Studio Code, right-click and selectNew Fileto create a new file nameddownload_dataset.py.
\n
\n
\n
\n\n
\n
\n
\n
\n\n
Prepare dataset for fine-tuning
\n
\n
In this exercise, you will run thedownload_dataset.pyfile to download theultrachat_200kdatasets to your local environment. You will then use this datasets to fine-tune the Phi-3 model in Azure Machine Learning.
\n
In this exercise, you will:
\n
\n
\n
Add code to thedownload_dataset.pyfile to download the datasets.
\n
Run thedownload_dataset.pyfile to download datasets to your local environment.
\n
\n
\n
Download your dataset usingdownload_dataset.py
\n
\n\n
\n
Open thedownload_dataset.pyfile in Visual Studio Code.
\n
\n
\n
Add the following code intodownload_dataset.py.
\n
import json\nimport os\nfrom datasets import load_dataset\n\ndef load_and_split_dataset(dataset_name, config_name, split_ratio):\n \"\"\"\n Load and split a dataset.\n \"\"\"\n # Load the dataset with the specified name, configuration, and split ratio\n dataset = load_dataset(dataset_name, config_name, split=split_ratio)\n print(f\"Original dataset size: {len(dataset)}\")\n \n # Split the dataset into train and test sets (80% train, 20% test)\n split_dataset = dataset.train_test_split(test_size=0.2)\n print(f\"Train dataset size: {len(split_dataset['train'])}\")\n print(f\"Test dataset size: {len(split_dataset['test'])}\")\n \n return split_dataset\n\ndef save_dataset_to_jsonl(dataset, filepath):\n \"\"\"\n Save a dataset to a JSONL file.\n \"\"\"\n # Create the directory if it does not exist\n os.makedirs(os.path.dirname(filepath), exist_ok=True)\n \n # Open the file in write mode\n with open(filepath, 'w', encoding='utf-8') as f:\n # Iterate over each record in the dataset\n for record in dataset:\n # Dump the record as a JSON object and write it to the file\n json.dump(record, f)\n # Write a newline character to separate records\n f.write('\\n')\n \n print(f\"Dataset saved to {filepath}\")\n\ndef main():\n \"\"\"\n Main function to load, split, and save the dataset.\n \"\"\"\n # Load and split the ULTRACHAT_200k dataset with a specific configuration and split ratio\n dataset = load_and_split_dataset(\"HuggingFaceH4/ultrachat_200k\", 'default', 'train_sft[:1%]')\n \n # Extract the train and test datasets from the split\n train_dataset = dataset['train']\n test_dataset = dataset['test']\n\n # Save the train dataset to a JSONL file\n save_dataset_to_jsonl(train_dataset, \"data/train_data.jsonl\")\n \n # Save the test dataset to a separate JSONL file\n save_dataset_to_jsonl(test_dataset, \"data/test_data.jsonl\")\n\nif __name__ == \"__main__\":\n main()\n
\n
\n
Type the following command inside your terminal to run the script and download the dataset to your local environment.
\n
python download_dataset.py\n
\n
\n
\n
Verify that the datasets were saved successfully to your localfinetune-phi/datadirectory.
\n
\n\n
\n
\n
Note\n
Note on dataset size and fine-tuning time
\n
In this tutorial, you use only 1% of the dataset (split='train[:1%]'). This significantly reduces the amount of data, speeding up both the upload and fine-tuning processes. You can adjust the percentage to find the right balance between training time and model performance. Using a smaller subset of the dataset reduces the time required for fine-tuning, making the process more manageable for a tutorial.
\n
\n
\n
\n
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
\n
\n
Fine-tune the Phi-3 model
\n
In this exercise, you will fine-tune the Phi-3 model in Azure Machine Learning Studio.
\n
In this exercise, you will:
\n
\n
Create computer cluster for fine-tuning.
\n
Fine-tune the Phi-3 model in Azure Machine Learning Studio.
Select the Azure Macnine Learning workspace that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
SelectModel catalogfrom the left side tab.
\n
Typephi-3-mini-4kin thesearch barand selectPhi-3-mini-4k-instructfrom the options that appear.
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectFine-tunefrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
\n
SelectSelect task typetoChat completion.
\n
\n
\n
Select+ Select datato uploadTraning data.
\n
\n
\n
Select the Validation data upload type toProvide different validation data.
\n
\n
\n
Select+ Select datato uploadValidation data.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
Tip\n
You can select Advanced settings to customize configurations such as learning_rate and lr_scheduler_type to optimize the fine-tuning process according to your specific needs.
\n
\n
\n
\n
\n
SelectFinish.
\n
\n
\n
In this exercise, you successfully fine-tuned the Phi-3 model using Azure Machine Learning. Please note that the fine-tuning process can take a considerable amount of time. After running the fine-tuning job, you need to wait for it to complete. You can monitor the status of the fine-tuning job by navigating to the Jobs tab on the left side of your Azure Machine Learning Workspace. In the next series, you will deploy the fine-tuned model and integrate it with Prompt flow.
\n\n
\n
\n\n
\n
Deploy the fine-tuned model
\n
\n
To integrate the fine-tuned Phi-3 model with Prompt flow, you need to deploy the model to make it accessible for real-time inference. This process involves registering the model, creating an online endpoint, and deploying the model.
\n
In this exercise, you will:
\n
\n
Register the fine-tuned model in the Azure Machine Learning workspace.
Select the Azure Macnine Learning workspace that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectModelsfrom the left side tab.
\n
\n
\n
Select+ Register.
\n
\n
\n
SelectFrom a job output.
\n
\n
\n
\n\n
\n
\n
\n
\n
Select the job that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectNext.
\n
\n
\n
SelectModel typetoMLflow.
\n
\n
\n
Ensure thatJob outputis selected; it should be automatically selected.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectNext.
\n
\n
\n
SelectRegister.
\n
\n
\n
\n\n
\n
\n
\n
\n
You can view your registered model by navigating to theModelsmenu from the left side tab.
\n
\n
\n
\n
\n
\n\n
\n
Deploy the fine-tuned model
\n
\n\n
\n
Navigate to the Azure Macnine Learning workspace that you created.
\n
\n
\n
SelectEndpointsfrom the left side tab.
\n
\n
\n
SelectReal-time endpointsfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCreate.
\n
\n
\n
select the registered model that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectSelect.
\n
\n
\n
Perform the following tasks:
\n
\n
\n
SelectVirtual machinetoStandard_NC6s_v3.
\n
\n
\n
Select theInstance countyou'd like to use. For example,1.
\n
\n
\n
Select theEndpointtoNewto create an endpoint.
\n
\n
\n
EnterEndpoint name. It must be a unique value.
\n
\n
\n
EnterDeployment name. It must be a unique value.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
SelectDeploy.
\n
\n\n
\n
\n
Warning\n
To avoid additional charges to your account, make sure to delete the created endpoint in the Azure Machine Learning workspace.
\n
\n
\n
\n
Check deployment status in Azure Machine Learning Workspace
\n
\n\n
\n
Navigate to Azure Machine Learning workspace that you created.
\n
\n
\n
SelectEndpointsfrom the left side tab.
\n
\n
\n
Select the endpoint that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
On this page, you can manage the endpoints during the deployment process.
\n
\n\n
\n
Note\n
Once the deployment is complete, ensure thatLive trafficis set to100%. If it is not, selectUpdate trafficto adjust the traffic settings. Note that you cannot test the model if the traffic is set to 0%.
\n
\n
\n
\n
\n
\n
\n
\n
\n
Series 3: Integrate the custom phi-3 model with Prompt flow in Azure AI Studio
\n
\n
Integrate the custom Phi-3 model with Prompt flow
\n
After successfully deploying your fine-tuned model, you can now integrate it with Prompt flow to use your model in real-time applications, enabling a variety of interactive tasks with your custom Phi-3 model.
\n
In this exercise, you will:
\n
\n
Create Azure AI Studio Hub.
\n
Create Azure AI Studio Project.
\n
Create Prompt flow.
\n
Add a custom connection for the fine-tuned Phi-3 model.
\n
Set up Prompt flow to chat with your custom Phi-3 model
\n
\n
\n
\n
Note\n
You can also integrate with Prompt flow using Azure ML Studio. The same integration process can be applied to Azure ML Studio.
\n
\n
\n
\n
Create Azure AI Studio Hub
\n
\n
You need to create a Hub before creating the Project. A Hub acts like a Resource Group, allowing you to organize and manage multiple Projects within Azure AI Studio.
Select theResource groupto use (create a new one if needed).
\n
Select theLocationyou'd like to use.
\n
Select theConnect Azure AI Servicesto use (create a new one if needed).
\n
SelectConnect Azure AI SearchtoSkip connecting.
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectNext.
\n
\n\n
Create Azure AI Studio Project
\n
\n\n
\n
In the Hub that you created, selectAll projectsfrom the left side tab.
\n
\n
\n
Select+ New projectfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
EnterProject name. It must be a unique value.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCreate a project.
\n
\n\n
\n
Add a custom connection for the fine-tuned Phi-3 model
\n
\n
To integrate your custom Phi-3 model with Prompt flow, you need to save the model's endpoint and key in a custom connection. This setup ensures access to your custom Phi-3 model in Prompt flow.
\n
\n
Set api key and endpoint uri of the fine-tuned Phi-3 model
Navigate to the Azure AI Studio project that you created.
\n
\n
\n
In the Project that you created, selectSettingsfrom the left side tab.
\n
\n
\n
Select+ New connection.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCustom keysfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
Select+ Add key value pairs.
\n
For the key name, enterendpointand paste the endpoint you copied from Azure ML Studio into the value field.
\n
Select+ Add key value pairsagain.
\n
For the key name, enterkeyand paste the key you copied from Azure ML Studio into the value field.
\n
After adding the keys, selectis secretto prevent the key from being exposed.
\n
\n
\n
\n
\n
\n
\n
\n
SelectAdd connection.
\n
\n
\n
Perform the following tasks to add the custom Phi-3 model's key:
\n
\n\n
\n
Create Prompt flow
\n
\n
You have added a custom connection in Azure AI Studio. Now, let's create a Prompt flow using the following steps. Then, you will connect this Prompt flow to the custom connection so that you can use the fine-tuned model within the Prompt flow.
\n\n
\n
Navigate to the Azure AI Studio project that you created.
\n
\n
\n
SelectPrompt flowfrom the left side tab.
\n
\n
\n
Select+ Createfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectChat flowfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
EnterFolder nameto use.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCreate.
\n
\n\n
\n
Set up Prompt flow to chat with your custom Phi-3 model
\n
\n
\n
\n
\n
You need to integrate the fine-tuned Phi-3 model into a Prompt flow. However, the existing Prompt flow provided is not designed for this purpose. Therefore, you must redesign the Prompt flow to enable the integration of the custom model.
\n
\n
\n
\n
\n\n
\n
In the Prompt flow, perform the following tasks to rebuild the existing flow:
Add the following code tointegrate_with_promptflow.py file to use the custom Phi-3 model in Prompt flow.
\n
import logging\nimport requests\nfrom promptflow import tool\nfrom promptflow.connections import CustomConnection\n\n# Logging setup\nlogging.basicConfig(\n format=\"%(asctime)s - %(levelname)s - %(name)s - %(message)s\",\n datefmt=\"%Y-%m-%d %H:%M:%S\",\n level=logging.DEBUG\n)\nlogger = logging.getLogger(__name__)\n\ndef query_phi3_model(input_data: str, connection: CustomConnection) -> str:\n \"\"\"\n Send a request to the Phi-3 model endpoint with the given input data using Custom Connection.\n \"\"\"\n\n # \"connection\" is the name of the Custom Connection, \"endpoint\", \"key\" are the keys in the Custom Connection\n endpoint_url = connection.endpoint\n api_key = connection.key\n\n headers = {\n \"Content-Type\": \"application/json\",\n \"Authorization\": f\"Bearer {api_key}\"\n }\n data = {\n \"input_data\": {\n \"input_string\": [\n {\"role\": \"user\", \"content\": input_data}\n ],\n \"parameters\": {\n \"temperature\": 0.7,\n \"max_new_tokens\": 128\n }\n }\n }\n try:\n response = requests.post(endpoint_url, json=data, headers=headers)\n response.raise_for_status()\n \n # Log the full JSON response\n logger.debug(f\"Full JSON response: {response.json()}\")\n\n result = response.json()[\"output\"]\n logger.info(\"Successfully received response from Azure ML Endpoint.\")\n return result\n except requests.exceptions.RequestException as e:\n logger.error(f\"Error querying Azure ML Endpoint: {e}\")\n raise\n\n@tool\ndef my_python_tool(input_data: str, connection: CustomConnection) -> str:\n \"\"\"\n Tool function to process input data and query the Phi-3 model.\n \"\"\"\n return query_phi3_model(input_data, connection)\n
SelectChat input,Chat outputto enable chat with your model.
\n
\n
\n
\n\n
\n
\n
\n
\n
Now you are ready to chat with your custom Phi-3 model. In the next exercise, you will learn how to start Prompt flow and use it to chat with your fine-tuned Phi-3 model.
\n
\n\n
\n
Note\n
The rebuilt flow should look like the image below:
\n
\n
\n
\n
\n
\n
\n
\n
\n
Chat with your custom Phi-3 model
\n
\n
Now that you have fine-tuned and integrated your custom Phi-3 model with Prompt flow, you are ready to start interacting with it. This exercise will guide you through the process of setting up and initiating a chat with your model using Prompt flow. By following these steps, you will be able to fully utilize the capabilities of your fine-tuned Phi-3 model for various tasks and conversations.
\n
\n
Start Prompt flow
\n
\n\n
\n
SelectStart compute sessionsto start Prompt flow.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectValidate and parse inputto renew parameters.
\n
\n
\n
\n\n
\n
\n
\n
\n
Select theValueof theconnectionto the custom connection you created. For example,connection.
\n
\n
\n
\n
\n
\n\n
\n
Chat with your custom Phi-3 model
\n
\n\n
\n
SelectChat.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
Here's an example of the results: Now you can chat with your custom Phi-3 model. It is recommended to ask questions based on the data used for fine-tuning.
\n
\n
\n
\n\n
\n
\n
\n\n
Congratulations!
\n
\n
You've completed this tutorial
\n
\n
Congratulations! You have successfully completed the tutorial on fine-tuning and integrating custom Phi-3 models with Prompt flow in Azure AI Studio. This tutorial introduced the process of fine-tuning, deploying, and integrating the custom Phi-3 model with Prompt flow using Azure ML Studio and Azure AI Studio.
\n
\n
\n
\n\n
\n
\n
Clean Up Azure Resources
\n
\n
Cleanup your Azure resources to avoid additional charges to your account. Go to the Azure portal and delete the following resources:
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio
\n
\n\n
This blog series has several versions, each covering different aspects and techniques. Check out the following resources:
\n
\n
\n
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow: Step-by-Step Guide Detailed instructions for fine-tuning and integrating custom Phi-3 models with Prompt flow using a code-first approach. Available on:\n
Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio Detailed instructions for fine-tuning and integrating custom Phi-3 models with Prompt flow in Azure AI / ML Studio using a low-code approach. Available on:\n
Evaluate Fine-tuned Phi-3 / Phi-3.5 Models in Azure AI Studio Focusing on Microsoft's Responsible AI Detailed instructions for evaluating the Phi-3 / Phi-3.5 model in Azure AI Studio using a low-code approach. Available on:\n
Phi-3 is a family of small language models (SLMs) developed by Microsoft that delivers exceptional performance and cost-effectiveness. In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate the custom Phi-3 model with Prompt flow in Azure AI Studio. By leveraging Azure AI / ML Studio, you will establish a workflow for deploying and utilizing custom AI models. This tutorial is divided into three series:
\n
\n
Series 1: Set up Azure resources and Prepare for fine-tuning
\n
\n\n
Create Azure Machine Learning workspace: You start by setting up an Azure Machine Learning workspace, which serves as the hub for managing machine learning experiments and models.
\n
Request GPU quotas: Since Phi-3 model fine-tuning typically benefits from GPU acceleration, you request GPU quotas in your Azure subscription.
\n
Add role assignment: You set up a User Assigned Managed Identity (UAI) and assign it necessary permissions (Contributor, Storage Blob Data Reader, AcrPull) to access resources like storage accounts and container registries.
\n
Set up the project: You create a local environment, set up a virtual environment, install required packages, and create a script (download_dataset.py) to download the dataset (ULTRACHAT_200k) required for fine-tuning.
\n\n
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
\n
\n\n
Create compute cluster: In Azure ML Studio, you create dedicated GPU compute clusters, using Standard_NC24ads_A100_v4 for fine-tuning and Standard_NC6s_v3 for deploying the Phi-3 model.
\n
Fine-tune the Phi-3 model: Using the Azure ML Studio interface, you fine-tune the Phi-3 model by specifying training and validation datasets, and configuring parameters like learning rate.
\n
Deploy the fine-tuned model: Once fine-tuning is complete, you register the model, create an online endpoint, and deploy the model to make it accessible for real-time inference.
\n\n
Series 3: Integrate the custom Phi-3 model with Prompt flow in Azure AI Studio
\n\n
Create Azure AI Studio Hub and Project: You create a Hub (similar to a resource group) and a Project within Azure AI Studio to manage your AI-related work.
\n
Add a custom connection: To integrate the fine-tuned Phi-3 model with Prompt flow, you create a custom connection in Azure AI Studio, specifying the endpoint and authentication key generated during model deployment in Azure ML Studio.
\n
Create Prompt flow: You create a new Prompt flow within the Azure AI Studio Project, configure it to use the custom connection, and design the flow to interact with the Phi-3 model for tasks like chat completion.
Series 1: Set Up Azure resources and Prepare for fine-tuning
\n\n
Create Azure Machine Learning workspace
\n
Request GPU quotas in Azure subscription
\n
Add role assignment
\n
Set up the project
\n
Prepare dataset for fine-tuning
\n\n
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
\n\n
Fine-tune the Phi-3 model
\n
Deploy the fine-tuned Phi-3 model
\n\n
Series 3: Integrate the custom phi-3 model with Prompt flow in Azure AI Studio
\n\n
Integrate the custom Phi-3 model with Prompt flow
\n
Chat with your custom Phi-3 model
\n
Congratulation!
\n\n
\n
Series 1: Set up Azure resources and Prepare for fine-tuning
\n
\n
Create Azure Machine Learning workspace
\n
\n
\n
In this exercise, you will:
\n
\n
Create an Azure Machine Learning Workspace.
\n
\n
Create an Azure Machine Learning Workspace
\n\n
\n
Typeazure machine learningin thesearch barat the top of the portal page and selectAzure Machine Learningfrom the options that appear.
\n
\n
\n
\n
\n
Select+ Createfrom the navigation menu.
\n
\n
\n
SelectNew workspacefrom the navigation menu.
\n
\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
Select your AzureSubscription.
\n
Select theResource groupto use (create a new one if needed).
\n
EnterWorkspace Name. It must be a unique value.
\n
Select theRegionyou'd like to use.
\n
Select theStorage accountto use (create a new one if needed).
\n
Select theKey vaultto use (create a new one if needed).
\n
Select theApplication insightsto use (create a new one if needed).
\n
Select theContainer registry to use (create a new one if needed).
\n
\n\n
\n
\n
\n
SelectReview + Create.
\n
\n
\n
SelectCreate.
\n
\n\n
\n
Request GPU Quotas in Azure Subscription
\n
\n
In this tutorial, you will learn how to fine-tune and deploy a Phi-3 model, using GPUs. For fine-tuning, you will use theStandard_NC24ads_A100_v4GPU, which requires a quota request. For deployment, you will use theStandard_NC6s_v3GPU, which also requires a quota request.
\n
\n
\n
Note\n
Only Pay-As-You-Go subscriptions (the standard subscription type) are eligible for GPU allocation; benefit subscriptions are not currently supported.
Perform the following tasks to requestStandard NCADSA100v4 Familyquota:
\n
\n
\n
SelectQuotafrom the left side tab.
\n
\n
\n
Select theVirtual machine familyto use. For example, selectStandard NCADSA100v4 Family Cluster Dedicated vCPUs, which includes theStandard_NC24ads_A100_v4GPU.
\n
\n
\n
Select theRequest quotafrom the navigation menu.
\n
\n
\n
\n
\n
\n
\n
Inside the Request quota page, enter theNew cores limityou'd like to use. For example, 24.
\n
\n
\n
Inside the Request quota page, selectSubmitto request the GPU quota.
\n
\n
\n
\n
\n
Perform the following tasks to requestStandard NCSv3 Familyquota:
\n
\n
SelectQuotafrom the left side tab.
\n
Select theVirtual machine familyto use. For example, selectStandard NCSv3 Family Cluster Dedicated vCPUs, which includes theStandard_NC6s_v3GPU.
\n
Select theRequest quotafrom the navigation menu.
\n
Inside the Request quota page, enter theNew cores limityou'd like to use. For example, 24.
\n
Inside the Request quota page, selectSubmitto request the GPU quota.
\n
\n
\n\n
\n
\n
Add role assignment
\n
\n
To fine-tune and deploy your models, you must first ceate a User Assigned Managed Identity (UAI) and assign it the appropriate permissions. This UAI will be used for authentication during deployment, so it is critical to grant it access to the storage accounts, container registry, and resource group.
\n
In this exercise, you will:
\n
\n
Create User Assigned Managed Identity(UAI).
\n
Add Contributor role assignment to Managed Identity.
\n
Add Storage Blob Data Reader role assignment to Managed Identity.
\n
Add AcrPull role assignment to Managed Identity.
\n
\n
\n
Create User Assigned Managed Identity(UAI)
\n
\n\n
\n
Typemanaged identitiesin thesearch barat the top of the portal page and selectManaged Identitiesfrom the options that appear.
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
Select+ Create.
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
Perform the following tasks to navigate to Add role assignment page:
\n
\n
Select your AzureSubscription.
\n
Select theResource groupto use (create a new one if needed).
\n
Select theRegionyou'd like to use.
\n
Enter theName. It must be a unique value.
\n
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
SelectReview + create.
\n
\n
\n
Select+ Create.
\n
\n\n
\n
Add Contributor role assignment to Managed Identity
\n
\n\n
\n
Navigate to the Managed Identity resource that you created.
\n
\n
\n
SelectAzure role assignmentsfrom the left side tab.
\n
\n
\n
Select+Add role assignmentfrom the navigation menu.
\n
\n
\n
Inside Add role assignment page, Perform the following tasks:
\n
\n
Select theScopetoResource group.
\n
Select your AzureSubscription.
\n
Select theResource groupto use.
\n
Select theRoletoContributor.
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
SelectSave.
\n
\n\n
\n
Add Storage Blob Data Reader role assignment to Managed Identity
\n
\n\n
\n
Typeazure storage accountsin thesearch barat the top of the portal page and selectStorage accountsfrom the options that appear.
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n
Select the storage account that associated with the Azure Machine Learning workspace. For example,finetunephistorage.
\n
\n
\n
Perform the following tasks to navigate to Add role assignment page:
\n
\n
Navigate to the Azure Storage account that you created.
\n
SelectAccess Control (IAM)from the left side tab.
\n
Select+ Addfrom the navigation menu.
\n
SelectAdd role assignmentfrom the navigation menu.
\n
\n
\n
\n
\n
\n
\n
\n
Inside Add role assignment page, Perform the following tasks:
\n
\n
\n
Inside the Role page, typeStorage Blob Data Readerin thesearch barand selectStorage Blob Data Readerfrom the options that appear.
\n
\n
\n
\n
\n
\n
\n
Inside the Role page, selectNext.
\n
\n
\n
Inside the Members page, selectAssign access toManaged identity.
\n
\n
\n
Inside the Members page, select+ Select members.
\n
\n
\n
Inside Select managed identities page, select your AzureSubscription.
Select thefinetune-phifolder that you created, which is located atC:\\Users\\yourUserName\\finetune-phi.
\n
\n
\n
\n\n
\n
\n
\n
\n
In the left pane of Visual Studio Code, right-click and selectNew Fileto create a new file nameddownload_dataset.py.
\n
\n
\n
\n\n
\n
\n
\n
\n\n
Prepare dataset for fine-tuning
\n
\n
In this exercise, you will run thedownload_dataset.pyfile to download theultrachat_200kdatasets to your local environment. You will then use this datasets to fine-tune the Phi-3 model in Azure Machine Learning.
\n
In this exercise, you will:
\n
\n
\n
Add code to thedownload_dataset.pyfile to download the datasets.
\n
Run thedownload_dataset.pyfile to download datasets to your local environment.
\n
\n
\n
Download your dataset usingdownload_dataset.py
\n
\n\n
\n
Open thedownload_dataset.pyfile in Visual Studio Code.
\n
\n
\n
Add the following code intodownload_dataset.py.
\nimport json\nimport os\nfrom datasets import load_dataset\n\ndef load_and_split_dataset(dataset_name, config_name, split_ratio):\n \"\"\"\n Load and split a dataset.\n \"\"\"\n # Load the dataset with the specified name, configuration, and split ratio\n dataset = load_dataset(dataset_name, config_name, split=split_ratio)\n print(f\"Original dataset size: {len(dataset)}\")\n \n # Split the dataset into train and test sets (80% train, 20% test)\n split_dataset = dataset.train_test_split(test_size=0.2)\n print(f\"Train dataset size: {len(split_dataset['train'])}\")\n print(f\"Test dataset size: {len(split_dataset['test'])}\")\n \n return split_dataset\n\ndef save_dataset_to_jsonl(dataset, filepath):\n \"\"\"\n Save a dataset to a JSONL file.\n \"\"\"\n # Create the directory if it does not exist\n os.makedirs(os.path.dirname(filepath), exist_ok=True)\n \n # Open the file in write mode\n with open(filepath, 'w', encoding='utf-8') as f:\n # Iterate over each record in the dataset\n for record in dataset:\n # Dump the record as a JSON object and write it to the file\n json.dump(record, f)\n # Write a newline character to separate records\n f.write('\\n')\n \n print(f\"Dataset saved to {filepath}\")\n\ndef main():\n \"\"\"\n Main function to load, split, and save the dataset.\n \"\"\"\n # Load and split the ULTRACHAT_200k dataset with a specific configuration and split ratio\n dataset = load_and_split_dataset(\"HuggingFaceH4/ultrachat_200k\", 'default', 'train_sft[:1%]')\n \n # Extract the train and test datasets from the split\n train_dataset = dataset['train']\n test_dataset = dataset['test']\n\n # Save the train dataset to a JSONL file\n save_dataset_to_jsonl(train_dataset, \"data/train_data.jsonl\")\n \n # Save the test dataset to a separate JSONL file\n save_dataset_to_jsonl(test_dataset, \"data/test_data.jsonl\")\n\nif __name__ == \"__main__\":\n main()\n
\n
\n
Type the following command inside your terminal to run the script and download the dataset to your local environment.
\n
python download_dataset.py\n
\n
\n
\n
Verify that the datasets were saved successfully to your localfinetune-phi/datadirectory.
\n
\n\n
\n
\n
Note\n
Note on dataset size and fine-tuning time
\n
In this tutorial, you use only 1% of the dataset (split='train[:1%]'). This significantly reduces the amount of data, speeding up both the upload and fine-tuning processes. You can adjust the percentage to find the right balance between training time and model performance. Using a smaller subset of the dataset reduces the time required for fine-tuning, making the process more manageable for a tutorial.
\n
\n
\n
\n
Series 2: Fine-tune and Deploy the Phi-3 model in Azure ML Studio
\n
\n
Fine-tune the Phi-3 model
\n
In this exercise, you will fine-tune the Phi-3 model in Azure Machine Learning Studio.
\n
In this exercise, you will:
\n
\n
Create computer cluster for fine-tuning.
\n
Fine-tune the Phi-3 model in Azure Machine Learning Studio.
Select the Azure Macnine Learning workspace that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
SelectModel catalogfrom the left side tab.
\n
Typephi-3-mini-4kin thesearch barand selectPhi-3-mini-4k-instructfrom the options that appear.
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectFine-tunefrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
\n
SelectSelect task typetoChat completion.
\n
\n
\n
Select+ Select datato uploadTraning data.
\n
\n
\n
Select the Validation data upload type toProvide different validation data.
\n
\n
\n
Select+ Select datato uploadValidation data.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
Tip\n
You can select Advanced settings to customize configurations such as learning_rate and lr_scheduler_type to optimize the fine-tuning process according to your specific needs.
\n
\n
\n
\n
\n
SelectFinish.
\n
\n
\n
In this exercise, you successfully fine-tuned the Phi-3 model using Azure Machine Learning. Please note that the fine-tuning process can take a considerable amount of time. After running the fine-tuning job, you need to wait for it to complete. You can monitor the status of the fine-tuning job by navigating to the Jobs tab on the left side of your Azure Machine Learning Workspace. In the next series, you will deploy the fine-tuned model and integrate it with Prompt flow.
\n\n
\n
\n\n
\n
Deploy the fine-tuned model
\n
\n
To integrate the fine-tuned Phi-3 model with Prompt flow, you need to deploy the model to make it accessible for real-time inference. This process involves registering the model, creating an online endpoint, and deploying the model.
\n
In this exercise, you will:
\n
\n
Register the fine-tuned model in the Azure Machine Learning workspace.
Select the Azure Macnine Learning workspace that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectModelsfrom the left side tab.
\n
\n
\n
Select+ Register.
\n
\n
\n
SelectFrom a job output.
\n
\n
\n
\n\n
\n
\n
\n
\n
Select the job that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectNext.
\n
\n
\n
SelectModel typetoMLflow.
\n
\n
\n
Ensure thatJob outputis selected; it should be automatically selected.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectNext.
\n
\n
\n
SelectRegister.
\n
\n
\n
\n\n
\n
\n
\n
\n
You can view your registered model by navigating to theModelsmenu from the left side tab.
\n
\n
\n
\n
\n
\n\n
\n
Deploy the fine-tuned model
\n
\n\n
\n
Navigate to the Azure Macnine Learning workspace that you created.
\n
\n
\n
SelectEndpointsfrom the left side tab.
\n
\n
\n
SelectReal-time endpointsfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCreate.
\n
\n
\n
select the registered model that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectSelect.
\n
\n
\n
Perform the following tasks:
\n
\n
\n
SelectVirtual machinetoStandard_NC6s_v3.
\n
\n
\n
Select theInstance countyou'd like to use. For example,1.
\n
\n
\n
Select theEndpointtoNewto create an endpoint.
\n
\n
\n
EnterEndpoint name. It must be a unique value.
\n
\n
\n
EnterDeployment name. It must be a unique value.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
SelectDeploy.
\n
\n\n
\n
\n
Warning\n
To avoid additional charges to your account, make sure to delete the created endpoint in the Azure Machine Learning workspace.
\n
\n
\n
\n
Check deployment status in Azure Machine Learning Workspace
\n
\n\n
\n
Navigate to Azure Machine Learning workspace that you created.
\n
\n
\n
SelectEndpointsfrom the left side tab.
\n
\n
\n
Select the endpoint that you created.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
On this page, you can manage the endpoints during the deployment process.
\n
\n\n
\n
Note\n
Once the deployment is complete, ensure thatLive trafficis set to100%. If it is not, selectUpdate trafficto adjust the traffic settings. Note that you cannot test the model if the traffic is set to 0%.
\n
\n
\n
\n
\n
\n
\n
\n
\n
Series 3: Integrate the custom phi-3 model with Prompt flow in Azure AI Studio
\n
\n
Integrate the custom Phi-3 model with Prompt flow
\n
After successfully deploying your fine-tuned model, you can now integrate it with Prompt flow to use your model in real-time applications, enabling a variety of interactive tasks with your custom Phi-3 model.
\n
In this exercise, you will:
\n
\n
Create Azure AI Studio Hub.
\n
Create Azure AI Studio Project.
\n
Create Prompt flow.
\n
Add a custom connection for the fine-tuned Phi-3 model.
\n
Set up Prompt flow to chat with your custom Phi-3 model
\n
\n
\n
\n
Note\n
You can also integrate with Prompt flow using Azure ML Studio. The same integration process can be applied to Azure ML Studio.
\n
\n
\n
\n
Create Azure AI Studio Hub
\n
\n
You need to create a Hub before creating the Project. A Hub acts like a Resource Group, allowing you to organize and manage multiple Projects within Azure AI Studio.
Select theResource groupto use (create a new one if needed).
\n
Select theLocationyou'd like to use.
\n
Select theConnect Azure AI Servicesto use (create a new one if needed).
\n
SelectConnect Azure AI SearchtoSkip connecting.
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectNext.
\n
\n\n
Create Azure AI Studio Project
\n
\n\n
\n
In the Hub that you created, selectAll projectsfrom the left side tab.
\n
\n
\n
Select+ New projectfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
EnterProject name. It must be a unique value.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCreate a project.
\n
\n\n
\n
Add a custom connection for the fine-tuned Phi-3 model
\n
\n
To integrate your custom Phi-3 model with Prompt flow, you need to save the model's endpoint and key in a custom connection. This setup ensures access to your custom Phi-3 model in Prompt flow.
\n
\n
Set api key and endpoint uri of the fine-tuned Phi-3 model
Navigate to the Azure AI Studio project that you created.
\n
\n
\n
In the Project that you created, selectSettingsfrom the left side tab.
\n
\n
\n
Select+ New connection.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCustom keysfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
Perform the following tasks:
\n
\n
Select+ Add key value pairs.
\n
For the key name, enterendpointand paste the endpoint you copied from Azure ML Studio into the value field.
\n
Select+ Add key value pairsagain.
\n
For the key name, enterkeyand paste the key you copied from Azure ML Studio into the value field.
\n
After adding the keys, selectis secretto prevent the key from being exposed.
\n
\n
\n
\n
\n
\n
\n
\n
SelectAdd connection.
\n
\n
\n
Perform the following tasks to add the custom Phi-3 model's key:
\n
\n\n
\n
Create Prompt flow
\n
\n
You have added a custom connection in Azure AI Studio. Now, let's create a Prompt flow using the following steps. Then, you will connect this Prompt flow to the custom connection so that you can use the fine-tuned model within the Prompt flow.
\n\n
\n
Navigate to the Azure AI Studio project that you created.
\n
\n
\n
SelectPrompt flowfrom the left side tab.
\n
\n
\n
Select+ Createfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectChat flowfrom the navigation menu.
\n
\n
\n
\n\n
\n
\n
\n
\n
EnterFolder nameto use.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectCreate.
\n
\n\n
\n
Set up Prompt flow to chat with your custom Phi-3 model
\n
\n
\n
\n
\n
You need to integrate the fine-tuned Phi-3 model into a Prompt flow. However, the existing Prompt flow provided is not designed for this purpose. Therefore, you must redesign the Prompt flow to enable the integration of the custom model.
\n
\n
\n
\n
\n\n
\n
In the Prompt flow, perform the following tasks to rebuild the existing flow:
Add the following code tointegrate_with_promptflow.py file to use the custom Phi-3 model in Prompt flow.
\nimport logging\nimport requests\nfrom promptflow import tool\nfrom promptflow.connections import CustomConnection\n\n# Logging setup\nlogging.basicConfig(\n format=\"%(asctime)s - %(levelname)s - %(name)s - %(message)s\",\n datefmt=\"%Y-%m-%d %H:%M:%S\",\n level=logging.DEBUG\n)\nlogger = logging.getLogger(__name__)\n\ndef query_phi3_model(input_data: str, connection: CustomConnection) -> str:\n \"\"\"\n Send a request to the Phi-3 model endpoint with the given input data using Custom Connection.\n \"\"\"\n\n # \"connection\" is the name of the Custom Connection, \"endpoint\", \"key\" are the keys in the Custom Connection\n endpoint_url = connection.endpoint\n api_key = connection.key\n\n headers = {\n \"Content-Type\": \"application/json\",\n \"Authorization\": f\"Bearer {api_key}\"\n }\n data = {\n \"input_data\": {\n \"input_string\": [\n {\"role\": \"user\", \"content\": input_data}\n ],\n \"parameters\": {\n \"temperature\": 0.7,\n \"max_new_tokens\": 128\n }\n }\n }\n try:\n response = requests.post(endpoint_url, json=data, headers=headers)\n response.raise_for_status()\n \n # Log the full JSON response\n logger.debug(f\"Full JSON response: {response.json()}\")\n\n result = response.json()[\"output\"]\n logger.info(\"Successfully received response from Azure ML Endpoint.\")\n return result\n except requests.exceptions.RequestException as e:\n logger.error(f\"Error querying Azure ML Endpoint: {e}\")\n raise\n\n@tool\ndef my_python_tool(input_data: str, connection: CustomConnection) -> str:\n \"\"\"\n Tool function to process input data and query the Phi-3 model.\n \"\"\"\n return query_phi3_model(input_data, connection)\n\n
SelectChat input,Chat outputto enable chat with your model.
\n
\n
\n
\n\n
\n
\n
\n
\n
Now you are ready to chat with your custom Phi-3 model. In the next exercise, you will learn how to start Prompt flow and use it to chat with your fine-tuned Phi-3 model.
\n
\n\n
\n
Note\n
The rebuilt flow should look like the image below:
\n
\n
\n
\n
\n
\n
\n
\n
\n
Chat with your custom Phi-3 model
\n
\n
Now that you have fine-tuned and integrated your custom Phi-3 model with Prompt flow, you are ready to start interacting with it. This exercise will guide you through the process of setting up and initiating a chat with your model using Prompt flow. By following these steps, you will be able to fully utilize the capabilities of your fine-tuned Phi-3 model for various tasks and conversations.
\n
\n
Start Prompt flow
\n
\n\n
\n
SelectStart compute sessionsto start Prompt flow.
\n
\n
\n
\n\n
\n
\n
\n
\n
SelectValidate and parse inputto renew parameters.
\n
\n
\n
\n\n
\n
\n
\n
\n
Select theValueof theconnectionto the custom connection you created. For example,connection.
\n
\n
\n
\n
\n
\n\n
\n
Chat with your custom Phi-3 model
\n
\n\n
\n
SelectChat.
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
Here's an example of the results: Now you can chat with your custom Phi-3 model. It is recommended to ask questions based on the data used for fine-tuning.
\n
\n
\n
\n\n
\n
\n
\n\n
Congratulations!
\n
\n
You've completed this tutorial
\n
\n
Congratulations! You have successfully completed the tutorial on fine-tuning and integrating custom Phi-3 models with Prompt flow in Azure AI Studio. This tutorial introduced the process of fine-tuning, deploying, and integrating the custom Phi-3 model with Prompt flow using Azure ML Studio and Azure AI Studio.
\n
\n
\n
\n\n
\n
\n
Clean Up Azure Resources
\n
\n
Cleanup your Azure resources to avoid additional charges to your account. Go to the Azure portal and delete the following resources:
","kudosSumWeight":1,"postTime":"2024-07-18T00:00:00.041-07:00","images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMGk1OTkyMjIwM0M3NEFBMzJG?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMWlGQjdGQzVBNUMzODk2NUNF?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMmlBQUVEOTE3Nzc4NUFEMEI3?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMjYzNGlFQzFEOENGRTJFNjE1NThD?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMTQ4MGlFOUNDRDBGNkNGREI5Nzc1?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0NGkzNUMzODg0Q0NGNEI3NEQ3?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0NWlCMkYyMUJBRERBM0UwMEVG?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0Nmk0MjNDNTVERjc2OTk4QTA3?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0MGk0Q0YwNzUzMTAwQUEyRjlB?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0N2kzNDY3NzlCNTQwNjBFNzUz?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzOWkxNjRFNEJERjY4MzU0NTIx?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0Mmk4OTNEMDk4NTQzMjdFRTQw?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0M2k1Rjk4ODdDOUU1RDg3MTUx?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0MWk2OTRGN0Y2QTc0ODY5OTc0?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0OGlFMkU0Qzg1ODBDMzZGODQ4?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0OWk4MURFQ0JBMTE0M0ZFRkI4?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1MGkzNzI1RDQxNDUwRjVFQzlG?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1MWkzQzM1OTJFMDBEQjc0QjE3?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1Mmk0NDM4RjI5MDA0MjFDQkZD?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1M2kyRDA4QjhFOUQ3QUJCNDUz?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1NGlCRDJEREVBOEU2N0JCOTA1?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1NWlGREE3RDkyQjFGOTI0N0Y4?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1Nmk1MzU4MzZGMjZFMEMyQjJB?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM2Nmk1NTUyMThFQkJDRDQ4Rjcz?revision=46\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM2OGk4Q0RFRTAzNTE2NDc0REE2?revision=46\"}"}}],"totalCount":58,"pageInfo":{"__typename":"PageInfo","hasNextPage":true,"endCursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI1","hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDE","node":{"__typename":"Tag","id":"tag:azure","text":"azure","time":"2016-09-06T09:34:09.130-07:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDI","node":{"__typename":"Tag","id":"tag:azure ai studio","text":"azure ai studio","time":"2023-11-11T00:57:52.231-08:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDM","node":{"__typename":"Tag","id":"tag:azure machine learning","text":"azure machine learning","time":"2016-09-06T11:34:30.244-07:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDQ","node":{"__typename":"Tag","id":"tag:Azure Machine Learning Studio","text":"Azure Machine Learning Studio","time":"2019-01-08T18:47:10.203-08:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDU","node":{"__typename":"Tag","id":"tag:Fine-tuning","text":"Fine-tuning","time":"2024-07-03T19:55:47.820-07:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDY","node":{"__typename":"Tag","id":"tag:phi-3","text":"phi-3","time":"2024-04-23T08:37:47.512-07:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDc","node":{"__typename":"Tag","id":"tag:prompt flow","text":"prompt flow","time":"2023-11-15T08:00:00.239-08:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}},{"__typename":"TagEdge","cursor":"MjUuM3wyLjF8b3wxMHxfTlZffDg","node":{"__typename":"Tag","id":"tag:slm","text":"slm","time":"2024-02-07T05:34:00.567-08:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}}]},"timeToRead":18,"rawTeaser":"
\n
Phi-3 is a family of small language models (SLMs) developed by Microsoft that delivers exceptional performance and cost-effectiveness. In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate the custom Phi-3 model with Prompt flow in Azure AI Studio. By leveraging Azure AI / ML Studio, you will establish a workflow for deploying and utilizing custom AI models.
\n
","introduction":"","coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""},"currentRevision":{"__ref":"Revision:revision:4191726_46"},"latestVersion":{"__typename":"FriendlyVersion","major":"8","minor":"0"},"metrics":{"__typename":"MessageMetrics","views":20329},"visibilityScope":"PUBLIC","canonicalUrl":null,"seoTitle":"Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio","seoDescription":"Phi-3 is a family of small language models (SLMs) developed by Microsoft that delivers exceptional performance and cost-effectiveness. In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate the custom Phi-3 model with Prompt Flow in Azure AI Studio. By leveraging Azure AI / ML Studio, you will establish a workflow for deploying and utilizing custom AI models.","placeholder":false,"originalMessageForPlaceholder":null,"contributors":{"__typename":"UserConnection","edges":[]},"nonCoAuthorContributors":{"__typename":"UserConnection","edges":[]},"coAuthors":{"__typename":"UserConnection","edges":[]},"blogMessagePolicies":{"__typename":"BlogMessagePolicies","canDoAuthoringActionsOnBlog":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.blog.action_can_do_authoring_action.accessDenied","key":"error.lithium.policies.blog.action_can_do_authoring_action.accessDenied","args":[]}}},"archivalData":null,"replies":{"__typename":"MessageConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"customFields":[],"revisions({\"constraints\":{\"isPublished\":{\"eq\":true}},\"first\":1})":{"__typename":"RevisionConnection","totalCount":46}},"Conversation:conversation:4191726":{"__typename":"Conversation","id":"conversation:4191726","solved":false,"topic":{"__ref":"BlogTopicMessage:message:4191726"},"lastPostingActivityTime":"2024-09-02T01:16:15.893-07:00","lastPostTime":"2024-07-18T00:00:00.041-07:00","unreadReplyCount":0,"isSubscribed":false},"ModerationData:moderation_data:4191726":{"__typename":"ModerationData","id":"moderation_data:4191726","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMGk1OTkyMjIwM0M3NEFBMzJG?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMGk1OTkyMjIwM0M3NEFBMzJG?revision=46","title":"00-01-architecture.png","associationType":"BODY","width":6792,"height":3708,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMWlGQjdGQzVBNUMzODk2NUNF?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMWlGQjdGQzVBNUMzODk2NUNF?revision=46","title":"01-01-type-azml.png","associationType":"BODY","width":873,"height":280,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMmlBQUVEOTE3Nzc4NUFEMEI3?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzMmlBQUVEOTE3Nzc4NUFEMEI3?revision=46","title":"01-02-select-new-workspace.png","associationType":"BODY","width":967,"height":378,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMjYzNGlFQzFEOENGRTJFNjE1NThD?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMjYzNGlFQzFEOENGRTJFNjE1NThD?revision=46","title":"01-03-fill-AZML.png","associationType":"BODY","width":1780,"height":996,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMTQ4MGlFOUNDRDBGNkNGREI5Nzc1?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMTQ4MGlFOUNDRDBGNkNGREI5Nzc1?revision=46","title":"02-02-request-quota.png","associationType":"BODY","width":1807,"height":817,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0NGkzNUMzODg0Q0NGNEI3NEQ3?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0NGkzNUMzODg0Q0NGNEI3NEQ3?revision=46","title":"03-01-type-managed-identities.png","associationType":"BODY","width":876,"height":279,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0NWlCMkYyMUJBRERBM0UwMEVG?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0NWlCMkYyMUJBRERBM0UwMEVG?revision=46","title":"03-02-select-create.png","associationType":"BODY","width":913,"height":216,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0Nmk0MjNDNTVERjc2OTk4QTA3?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0Nmk0MjNDNTVERjc2OTk4QTA3?revision=46","title":"03-03-fill-managed-identities-1.png","associationType":"BODY","width":1165,"height":691,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0MGk0Q0YwNzUzMTAwQUEyRjlB?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0MGk0Q0YwNzUzMTAwQUEyRjlB?revision=46","title":"Minseok_Song_3-1721055999736.png","associationType":"BODY","width":999,"height":580,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0N2kzNDY3NzlCNTQwNjBFNzUz?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0N2kzNDY3NzlCNTQwNjBFNzUz?revision=46","title":"03-05-type-storage-accounts.png","associationType":"BODY","width":868,"height":280,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzOWkxNjRFNEJERjY4MzU0NTIx?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDMzOWkxNjRFNEJERjY4MzU0NTIx?revision=46","title":"Minseok_Song_5-1721055999671.png","associationType":"BODY","width":999,"height":283,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0Mmk4OTNEMDk4NTQzMjdFRTQw?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0Mmk4OTNEMDk4NTQzMjdFRTQw?revision=46","title":"Minseok_Song_6-1721055999669.png","associationType":"BODY","width":999,"height":428,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0M2k1Rjk4ODdDOUU1RDg3MTUx?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0M2k1Rjk4ODdDOUU1RDg3MTUx?revision=46","title":"Minseok_Song_7-1721055999955.png","associationType":"BODY","width":999,"height":488,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0MWk2OTRGN0Y2QTc0ODY5OTc0?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0MWk2OTRGN0Y2QTc0ODY5OTc0?revision=46","title":"Minseok_Song_8-1721055999500.png","associationType":"BODY","width":871,"height":280,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0OGlFMkU0Qzg1ODBDMzZGODQ4?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0OGlFMkU0Qzg1ODBDMzZGODQ4?revision=46","title":"04-01-open-project-folder.png","associationType":"BODY","width":985,"height":270,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0OWk4MURFQ0JBMTE0M0ZFRkI4?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM0OWk4MURFQ0JBMTE0M0ZFRkI4?revision=46","title":"04-02-create-new-file.png","associationType":"BODY","width":967,"height":295,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1MGkzNzI1RDQxNDUwRjVFQzlG?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1MGkzNzI1RDQxNDUwRjVFQzlG?revision=46","title":"06-01-select-compute.png","associationType":"BODY","width":1903,"height":1059,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1MWkzQzM1OTJFMDBEQjc0QjE3?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1MWkzQzM1OTJFMDBEQjc0QjE3?revision=46","title":"06-02-create-cluster.png","associationType":"BODY","width":2083,"height":1054,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1Mmk0NDM4RjI5MDA0MjFDQkZD?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1Mmk0NDM4RjI5MDA0MjFDQkZD?revision=46","title":"06-03-create-cluster.png","associationType":"BODY","width":2064,"height":1270,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1M2kyRDA4QjhFOUQ3QUJCNDUz?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1M2kyRDA4QjhFOUQ3QUJCNDUz?revision=46","title":"06-04-select-workspace.png","associationType":"BODY","width":1404,"height":468,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1NGlCRDJEREVBOEU2N0JCOTA1?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1NGlCRDJEREVBOEU2N0JCOTA1?revision=46","title":"06-05-type-phi-3-mini-4k.png","associationType":"BODY","width":1555,"height":460,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1NWlGREE3RDkyQjFGOTI0N0Y4?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1NWlGREE3RDkyQjFGOTI0N0Y4?revision=46","title":"06-06-select-fine-tune.png","associationType":"BODY","width":1381,"height":463,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1Nmk1MzU4MzZGMjZFMEMyQjJB?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM1Nmk1MzU4MzZGMjZFMEMyQjJB?revision=46","title":"06-07-fill-finetuning.png","associationType":"BODY","width":1537,"height":814,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM2Nmk1NTUyMThFQkJDRDQ4Rjcz?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM2Nmk1NTUyMThFQkJDRDQ4Rjcz?revision=46","title":"06-08-output.png","associationType":"BODY","width":2146,"height":768,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM2OGk4Q0RFRTAzNTE2NDc0REE2?revision=46\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTkxNzI2LTYwMDM2OGk4Q0RFRTAzNTE2NDc0REE2?revision=46","title":"06-04-select-workspace.png","associationType":"BODY","width":1404,"height":468,"altText":null},"Revision:revision:4191726_46":{"__typename":"Revision","id":"revision:4191726_46","lastEditTime":"2024-08-31T23:21:55.691-07:00"},"CachedAsset:theme:customTheme1-1750098259997":{"__typename":"CachedAsset","id":"theme:customTheme1-1750098259997","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["default"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"favicon-1730836283320.png","imageLastModified":"1730836286415","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"favicon-1730836271365.png","imageLastModified":"1730836274203","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"1300px","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_BROWSER","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"3px","borderRadius":"3px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"16px","paddingXHero":"60px","fontStyle":"NORMAL","fontWeight":"700","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"var(--lia-bs-primary)","primaryBgHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85))","primaryBgActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7))","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","secondaryTextColor":"var(--lia-bs-gray-900)","secondaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","secondaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","secondaryBgColor":"var(--lia-bs-gray-200)","secondaryBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","secondaryBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","tertiaryTextColor":"var(--lia-bs-gray-900)","tertiaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","tertiaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-200)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"NONE","sideContent":"LIGHT","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.16)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.12)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-link-color)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"400","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","defaultMessageFontFamily":"var(--lia-bs-font-family-base)","forumColor":"#4099E2","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#148563","blogColor":"#1CBAA0","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#4C6B90","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#FF8000","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#D13A1F","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#333333","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#717171","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#0069D4","secondary":"#333333","bodyText":"#1E1E1E","bodyBg":"#FFFFFF","info":"#409AE2","success":"#41C5AE","warning":"#FCC844","danger":"#BC341B","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#D3F5A4","#243A5E"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"email":{"link":{"color":"#0069D4","hoverColor":"#0061c2","decoration":"none","hoverDecoration":"underline","__typename":"EmailLinkSettings"},"border":{"color":"#e4e4e4","__typename":"EmailBorderSettings"},"buttons":{"borderRadiusLg":"5px","paddingXLg":"16px","paddingYLg":"7px","fontWeight":"700","primaryTextColor":"#ffffff","primaryTextHoverColor":"#ffffff","primaryBgColor":"#0069D4","primaryBgHoverColor":"#005cb8","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","__typename":"EmailButtonsSettings"},"panel":{"borderRadius":"5px","borderColor":"#e4e4e4","__typename":"EmailPanelSettings"},"__typename":"EmailThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Segoe UI","fontStyle":"NORMAL","fontWeight":"400","h1FontSize":"34px","h2FontSize":"32px","h3FontSize":"28px","h4FontSize":"24px","h5FontSize":"20px","h6FontSize":"16px","lineHeight":"1.3","subHeaderFontSize":"11px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":"","imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"40px","defaultMessageHeaderMarginBottom":"20px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"10px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"40px","specialMessageHeaderMarginBottom":"20px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"10px","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Segoe UI","fontStyleBase":"NORMAL","fontWeightBase":"400","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.5","fontSizeBase":"16px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"14px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[{"source":"SERVER","name":"Segoe UI","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"},{"style":"NORMAL","weight":"300","__typename":"FontStyleData"},{"style":"NORMAL","weight":"600","__typename":"FontStyleData"},{"style":"NORMAL","weight":"700","__typename":"FontStyleData"},{"style":"ITALIC","weight":"400","__typename":"FontStyleData"}],"assetNames":["SegoeUI-normal-400.woff2","SegoeUI-normal-300.woff2","SegoeUI-normal-600.woff2","SegoeUI-normal-700.woff2","SegoeUI-italic-400.woff2"],"__typename":"CustomFont"},{"source":"SERVER","name":"MWF Fluent Icons","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"}],"assetNames":["MWFFluentIcons-normal-400.woff2"],"__typename":"CustomFont"}],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1750285382195","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:quilt:o365.prod:pages/blogs/BlogMessagePage:board:EducatorDeveloperBlog-1750285381166":{"__typename":"CachedAsset","id":"quilt:o365.prod:pages/blogs/BlogMessagePage:board:EducatorDeveloperBlog-1750285381166","value":{"id":"BlogMessagePage","container":{"id":"Common","headerProps":{"backgroundImageProps":null,"backgroundColor":null,"addComponents":null,"removeComponents":["community.widget.bannerWidget"],"componentOrder":null,"__typename":"QuiltContainerSectionProps"},"headerComponentProps":{"community.widget.breadcrumbWidget":{"disableLastCrumbForDesktop":false}},"footerProps":null,"footerComponentProps":null,"items":[{"id":"blog-article","layout":"ONE_COLUMN","bgColor":null,"showTitle":null,"showDescription":null,"textPosition":null,"textColor":null,"sectionEditLevel":"LOCKED","bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"OneColumnQuiltSection","columnMap":{"main":[{"id":"blogs.widget.blogArticleWidget","className":"lia-blog-container","props":null,"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"}},{"id":"section-1729184836777","layout":"MAIN_SIDE","bgColor":"transparent","showTitle":false,"showDescription":false,"textPosition":"CENTER","textColor":"var(--lia-bs-body-color)","sectionEditLevel":null,"bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"MainSideQuiltSection","columnMap":{"main":[],"side":[],"__typename":"MainSideSectionColumns"}}],"__typename":"QuiltContainer"},"__typename":"Quilt","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1750285382195","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit My Settings.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. Resend email."},"localOverride":false},"CachedAsset:text:en_US-pages/blogs/BlogMessagePage-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-pages/blogs/BlogMessagePage-1750285382195","value":{"title":"{contextMessageSubject} | {communityTitle}","errorMissing":"This blog post cannot be found","name":"Blog Message Page","section.blog-article.title":"Blog Post","archivedMessageTitle":"This Content Has Been Archived","section.section-1729184836777.title":"","section.section-1729184836777.description":"","section.CncIde.title":"Blog Post","section.tifEmD.description":"","section.tifEmD.title":""},"localOverride":false},"CachedAsset:quiltWrapper:o365.prod:Common:1750098191483":{"__typename":"CachedAsset","id":"quiltWrapper:o365.prod:Common:1750098191483","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"community.widget.navbarWidget","props":{"showUserName":true,"showRegisterLink":true,"useIconLanguagePicker":true,"useLabelLanguagePicker":true,"className":"QuiltComponent_lia-component-edit-mode__0nCcm","links":{"sideLinks":[],"mainLinks":[{"children":[],"linkType":"INTERNAL","id":"gxcuf89792","params":{},"routeName":"CommunityPage"},{"children":[],"linkType":"EXTERNAL","id":"external-link","url":"/Directory","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft365","params":{"categoryId":"microsoft365"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows","params":{"categoryId":"Windows"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"Common-microsoft365-copilot-link","params":{"categoryId":"Microsoft365Copilot"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-teams","params":{"categoryId":"MicrosoftTeams"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-securityand-compliance","params":{"categoryId":"microsoft-security"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"azure","params":{"categoryId":"Azure"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"Common-content_management-link","params":{"categoryId":"Content_Management"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"exchange","params":{"categoryId":"Exchange"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows-server","params":{"categoryId":"Windows-Server"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"outlook","params":{"categoryId":"Outlook"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-endpoint-manager","params":{"categoryId":"microsoftintune"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-2","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities","url":"/","target":"BLANK"},{"children":[{"linkType":"INTERNAL","id":"a-i","params":{"categoryId":"AI"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"education-sector","params":{"categoryId":"EducationSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"partner-community","params":{"categoryId":"PartnerCommunity"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"i-t-ops-talk","params":{"categoryId":"ITOpsTalk"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"healthcare-and-life-sciences","params":{"categoryId":"HealthcareAndLifeSciences"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-mechanics","params":{"categoryId":"MicrosoftMechanics"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"public-sector","params":{"categoryId":"PublicSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"s-m-b","params":{"categoryId":"MicrosoftforNonprofits"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"io-t","params":{"categoryId":"IoT"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"startupsat-microsoft","params":{"categoryId":"StartupsatMicrosoft"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"driving-adoption","params":{"categoryId":"DrivingAdoption"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-1","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities-1","url":"/","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external","url":"/Blogs","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external-1","url":"/Events","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft-learn-1","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-learn-blog","params":{"boardId":"MicrosoftLearnBlog","categoryId":"MicrosoftLearn"},"routeName":"BlogBoardPage"},{"linkType":"EXTERNAL","id":"external-10","url":"https://learningroomdirectory.microsoft.com/","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-3","url":"https://docs.microsoft.com/learn/dynamics365/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-4","url":"https://docs.microsoft.com/learn/m365/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-5","url":"https://docs.microsoft.com/learn/topics/sci/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-6","url":"https://docs.microsoft.com/learn/powerplatform/?wt.mc_id=techcom_header-webpage-powerplatform","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-7","url":"https://docs.microsoft.com/learn/github/?wt.mc_id=techcom_header-webpage-github","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-8","url":"https://docs.microsoft.com/learn/teams/?wt.mc_id=techcom_header-webpage-teams","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-9","url":"https://docs.microsoft.com/learn/dotnet/?wt.mc_id=techcom_header-webpage-dotnet","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-2","url":"https://docs.microsoft.com/learn/azure/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"}],"linkType":"INTERNAL","id":"microsoft-learn","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"children":[],"linkType":"INTERNAL","id":"community-info-center","params":{"categoryId":"Community-Info-Center"},"routeName":"CategoryPage"}]},"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","controllerHighlightColor":"hsla(30, 100%, 50%)","linkFontWeight":"400","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkBoxShadowHover":"none","linkFontSize":"14px","backgroundOpacity":0.8,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","hamburgerColor":"var(--lia-nav-controller-icon-color)","linkTextBorderBottom":"none","brandLogoHeight":"30px","linkBgHoverColor":"transparent","linkLetterSpacing":"normal","collapseMenuDividerOpacity":0.16,"dropdownPaddingBottom":"15px","paddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"1px solid var(--lia-bs-border-color)","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","collapseMenuDividerBg":"var(--lia-nav-link-color)","linkColor":"var(--lia-bs-body-color)","linkJustifyContent":"flex-start","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","controllerTextColor":"var(--lia-nav-controller-icon-color)","background":{"imageAssetName":"","color":"var(--lia-bs-white)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-body-color)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"2px solid var(--lia-bs-body-color)","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","linkPaddingX":"10px","linkPaddingY":"5px","paddingTop":"15px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","linkBgColor":"transparent","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkDropdownPaddingY":"9px","controllerIconColor":"var(--lia-bs-body-color)","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"var(--lia-bs-body-color)"},"showSearchIcon":false,"languagePickerStyle":"iconAndLabel"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":{"backgroundColor":"transparent","linkHighlightColor":"var(--lia-bs-primary)","visualEffects":{"showBottomBorder":true},"linkTextColor":"var(--lia-bs-gray-700)"},"__typename":"QuiltComponent"},{"id":"custom.widget.tempStatusBanner","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.HeroBanner","props":{"widgetVisibility":"signedInOrAnonymous","usePageWidth":false,"useTitle":true,"cMax_items":3,"useBackground":false,"title":"","lazyLoad":false,"widgetChooser":"custom.widget.HeroBanner"},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"custom.widget.MicrosoftFooter","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1750285382195","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist.","redirectToRelatedPage.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.message":"The content you are trying to access is archived","redirectToRelatedPage.message":"The content you are trying to access is archived","relatedUrl.archivalLink.flyoutMessage":"The content you are trying to access is archived View Archived Content"},"localOverride":false},"QueryVariables:TopicReplyList:message:4191726:46":{"__typename":"QueryVariables","id":"TopicReplyList:message:4191726:46","value":{"id":"message:4191726","first":10,"sorts":{"postTime":{"direction":"DESC"}},"repliesFirst":3,"repliesFirstDepthThree":1,"repliesSorts":{"postTime":{"direction":"DESC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":true,"useBody":true,"useKudosCount":true,"useTimeToRead":false,"useMedia":false,"useReadOnlyIcon":false,"useRepliesCount":true,"useSearchSnippet":false,"useAcceptedSolutionButton":false,"useSolvedBadge":false,"useAttachments":false,"attachmentsFirst":5,"useTags":true,"useNodeAncestors":false,"useUserHoverCard":false,"useNodeHoverCard":false,"useModerationStatus":true,"usePreviewSubjectModal":false,"useMessageStatus":true}},"ROOT_MUTATION":{"__typename":"Mutation"},"CachedAsset:component:custom.widget.tempStatusBanner-en-us-1750268252212":{"__typename":"CachedAsset","id":"component:custom.widget.tempStatusBanner-en-us-1750268252212","value":{"component":{"id":"custom.widget.tempStatusBanner","template":{"id":"tempStatusBanner","markupLanguage":"HTML","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.tempStatusBanner","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"TEXTHTML","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.HeroBanner-en-us-1750268252212":{"__typename":"CachedAsset","id":"component:custom.widget.HeroBanner-en-us-1750268252212","value":{"component":{"id":"custom.widget.HeroBanner","template":{"id":"HeroBanner","markupLanguage":"REACT","style":null,"texts":{"searchPlaceholderText":"Search this community","followActionText":"Follow","unfollowActionText":"Following","searchOnHoverText":"Please enter your search term(s) and then press return key to complete a search.","blogs.sidebar.pagetitle":"Latest Blogs | Microsoft Tech Community","followThisNode":"Follow this node","unfollowThisNode":"Unfollow this node"},"defaults":{"config":{"applicablePages":[],"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.HeroBanner","form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"__typename":"Component","localOverride":false},"globalCss":null,"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"}},"localOverride":false},"CachedAsset:component:custom.widget.MicrosoftFooter-en-us-1750268252212":{"__typename":"CachedAsset","id":"component:custom.widget.MicrosoftFooter-en-us-1750268252212","value":{"component":{"id":"custom.widget.MicrosoftFooter","template":{"id":"MicrosoftFooter","markupLanguage":"HANDLEBARS","style":".context-uhf {\n min-width: 280px;\n font-size: 15px;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n & *,\n & *:before,\n & *:after {\n box-sizing: inherit;\n }\n a.c-uhff-link {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n &a:link,\n &a:focus,\n &a:hover,\n &a:active,\n &a:visited {\n text-decoration: none;\n color: inherit;\n }\n & div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.c-uhff {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.c-uhff-nav {\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n &:before,\n &:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n .c-heading-4 {\n color: #616161;\n word-break: break-word;\n font-size: 15px;\n line-height: 20px;\n padding: 36px 0 4px;\n font-weight: 600;\n }\n .c-uhff-nav-row {\n .c-uhff-nav-group {\n display: block;\n float: left;\n min-height: 1px;\n vertical-align: text-top;\n padding: 0 12px;\n width: 100%;\n zoom: 1;\n &:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.c-list.f-bare {\n font-size: 11px;\n line-height: 16px;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 8px 0;\n margin: 0;\n }\n }\n }\n }\n}\n.c-uhff-base {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 30px 5% 16px;\n &:before,\n &:after {\n content: ' ';\n display: table;\n }\n &:after {\n clear: both;\n }\n a.c-uhff-ccpa {\n font-size: 11px;\n line-height: 16px;\n float: left;\n margin: 3px 0;\n }\n a.c-uhff-ccpa:hover {\n text-decoration: underline;\n }\n ul.c-list {\n font-size: 11px;\n line-height: 16px;\n float: right;\n margin: 3px 0;\n color: #616161;\n li {\n padding: 0 24px 4px 0;\n display: inline-block;\n }\n }\n .c-list.f-bare {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 30px 24px 16px;\n }\n}\n\n.social-share {\n position: fixed;\n top: 60%;\n transform: translateY(-50%);\n left: 0;\n z-index: 1000;\n}\n\n.sharing-options {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 50px;\n border-radius: 0px 7px 7px 0px;\n}\n.linkedin-icon {\n border-top-right-radius: 7px;\n}\n.linkedin-icon:hover {\n border-radius: 0;\n}\n\n.social-share-email-image:hover {\n border-radius: 0;\n}\n\n.social-link-footer:hover .linkedin-icon {\n border-radius: 0;\n}\n.social-link-footer:hover .social-share-email-image {\n border-radius: 0;\n}\n\n.social-link-footer img {\n width: 30px;\n height: auto;\n transition: filter 0.3s ease;\n}\n\n.social-share-list {\n width: 50px;\n}\n.social-share-rss-image {\n width: 30px;\n height: auto;\n transition: filter 0.3s ease;\n}\n.sharing-options li {\n width: 50px;\n height: 50px;\n padding: 8px;\n box-sizing: border-box;\n border: 2px solid white; \n display: inline-block;\n text-align: center;\n opacity: 1;\n visibility: visible;\n transition: border 0.3s ease; /* Smooth transition effect */\n border-left: none;\n border-bottom: none; /* Apply bottom border to only last item */\n}\n\n.social-share-list-linkedin {\n background-color: #0474b4;\n border-top-right-radius: 5px; /* Rounded top right corner of first item*/\n}\n.social-share-list-facebook {\n background-color: #3c5c9c;\n}\n.social-share-list-xicon {\n background-color: #000;\n}\n.social-share-list-reddit {\n background-color: #fc4404;\n}\n.social-share-list-bluesky {\n background-color: #f0f2f5;\n}\n.social-share-list-rss {\n background-color: #ec7b1c;\n}\n.social-share-list-mail {\n background-color: #848484; \n border-bottom-right-radius: 5px; /* Rounded bottom right corner of last item*/\n}\n.sharing-options li.social-share-list-mail {\n border-bottom: 2px solid white; /* Add bottom border only to the last item */\n height: 52px; /* Increase last child height to make in align with the hover label */\n}\n.x-icon {\n filter: invert(100%);\n transition: filter 0.3s ease;\n width: 20px !important;\n height: auto;\n padding-top: 5px !important;\n}\n.bluesky-icon {\n filter: invert(20%) sepia(100%) saturate(3000%) hue-rotate(180deg);\n transition: filter 0.3s ease;\n padding-top: 5px !important;\n width: 25px !important;\n}\n\n.share-icon {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n\n.sharing-options li:hover {\n border: 2px solid white; \n border-left: none;\n border-bottom: none;\n border-radius: 0px;\n}\n.sharing-options li.social-share-list-mail:hover {\n border-bottom: 2px solid white; /* Add bottom border only to the last item */\n}\n\n.sharing-options li:hover .label {\n opacity: 1;\n visibility: visible;\n border: 2px solid white;\n box-sizing: border-box;\n border-left: none;\n}\n\n.label {\n position: absolute;\n left: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n color: white;\n border-radius: 0 10 0 10px;\n top: 50%;\n transform: translateY(-50%);\n height: 52px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px 12px 15px 8px;\n border: 2px solid white;\n}\n.linkedin {\n background-color: #0474b4;\n border-top-right-radius: 5px; /* Rounded top right corner of first item*/\n}\n.facebook {\n background-color: #3c5c9c;\n}\n.twitter {\n background-color: black;\n color: white;\n}\n.reddit {\n background-color: #fc4404;\n}\n.mail {\n background-color: #848484;\n border-bottom-right-radius: 5px; /* Rounded bottom right corner of last item*/\n}\n.bluesky {\n background-color: #f0f2f5;\n color: black;\n}\n.rss {\n background-color: #ec7b1c;\n}\n\n@media (max-width: 991px) {\n .social-share {\n display: none;\n }\n}\n","texts":{"New tab":"What's New","New 1":"Surface Laptop Studio 2","New 2":"Surface Laptop Go 3","New 3":"Surface Pro 9","New 4":"Surface Laptop 5","New 5":"Surface Studio 2+","New 6":"Copilot in Windows","New 7":"Microsoft 365","New 8":"Windows 11 apps","Store tab":"Microsoft Store","Store 1":"Account Profile","Store 2":"Download Center","Store 3":"Microsoft Store Support","Store 4":"Returns","Store 5":"Order tracking","Store 6":"Certified Refurbished","Store 7":"Microsoft Store Promise","Store 8":"Flexible Payments","Education tab":"Education","Edu 1":"Microsoft in education","Edu 2":"Devices for education","Edu 3":"Microsoft Teams for Education","Edu 4":"Microsoft 365 Education","Edu 5":"How to buy for your school","Edu 6":"Educator Training and development","Edu 7":"Deals for students and parents","Edu 8":"Azure for students","Business tab":"Business","Bus 1":"Microsoft Cloud","Bus 2":"Microsoft Security","Bus 3":"Dynamics 365","Bus 4":"Microsoft 365","Bus 5":"Microsoft Power Platform","Bus 6":"Microsoft Teams","Bus 7":"Microsoft Industry","Bus 8":"Small Business","Developer tab":"Developer & IT","Dev 1":"Azure","Dev 2":"Developer Center","Dev 3":"Documentation","Dev 4":"Microsoft Learn","Dev 5":"Microsoft Tech Community","Dev 6":"Azure Marketplace","Dev 7":"AppSource","Dev 8":"Visual Studio","Company tab":"Company","Com 1":"Careers","Com 2":"About Microsoft","Com 3":"Company News","Com 4":"Privacy at Microsoft","Com 5":"Investors","Com 6":"Diversity and inclusion","Com 7":"Accessiblity","Com 8":"Sustainibility"},"defaults":{"config":{"applicablePages":[],"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.MicrosoftFooter","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":{"css":".custom_widget_MicrosoftFooter_context-uhf_yuh6w_1 {\n min-width: 17.5rem;\n font-size: 0.9375rem;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n & *,\n & *:before,\n & *:after {\n box-sizing: inherit;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-link_yuh6w_12 {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n &a:link,\n &a:focus,\n &a:hover,\n &a:active,\n &a:visited {\n text-decoration: none;\n color: inherit;\n }\n & div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff_yuh6w_12 {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.custom_widget_MicrosoftFooter_c-uhff-nav_yuh6w_35 {\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n &:before,\n &:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n .custom_widget_MicrosoftFooter_c-heading-4_yuh6w_49 {\n color: #616161;\n word-break: break-word;\n font-size: 0.9375rem;\n line-height: 1.25rem;\n padding: 2.25rem 0 0.25rem;\n font-weight: 600;\n }\n .custom_widget_MicrosoftFooter_c-uhff-nav-row_yuh6w_57 {\n .custom_widget_MicrosoftFooter_c-uhff-nav-group_yuh6w_58 {\n display: block;\n float: left;\n min-height: 0.0625rem;\n vertical-align: text-top;\n padding: 0 0.75rem;\n width: 100%;\n zoom: 1;\n &:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.custom_widget_MicrosoftFooter_c-list_yuh6w_78.custom_widget_MicrosoftFooter_f-bare_yuh6w_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 0.5rem 0;\n margin: 0;\n }\n }\n }\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff-base_yuh6w_94 {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 1.875rem 5% 1rem;\n &:before,\n &:after {\n content: ' ';\n display: table;\n }\n &:after {\n clear: both;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_yuh6w_107 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: left;\n margin: 0.1875rem 0;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_yuh6w_107:hover {\n text-decoration: underline;\n }\n ul.custom_widget_MicrosoftFooter_c-list_yuh6w_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: right;\n margin: 0.1875rem 0;\n color: #616161;\n li {\n padding: 0 1.5rem 0.25rem 0;\n display: inline-block;\n }\n }\n .custom_widget_MicrosoftFooter_c-list_yuh6w_78.custom_widget_MicrosoftFooter_f-bare_yuh6w_78 {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 1.875rem 1.5rem 1rem;\n }\n}\n.custom_widget_MicrosoftFooter_social-share_yuh6w_138 {\n position: fixed;\n top: 60%;\n transform: translateY(-50%);\n left: 0;\n z-index: 1000;\n}\n.custom_widget_MicrosoftFooter_sharing-options_yuh6w_146 {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 3.125rem;\n border-radius: 0 0.4375rem 0.4375rem 0;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_yuh6w_156 {\n border-top-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_yuh6w_156:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-share-email-image_yuh6w_163:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_yuh6w_167:hover .custom_widget_MicrosoftFooter_linkedin-icon_yuh6w_156 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_yuh6w_167:hover .custom_widget_MicrosoftFooter_social-share-email-image_yuh6w_163 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_yuh6w_167 img {\n width: 1.875rem;\n height: auto;\n transition: filter 0.3s ease;\n}\n.custom_widget_MicrosoftFooter_social-share-list_yuh6w_180 {\n width: 3.125rem;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_yuh6w_183 {\n width: 1.875rem;\n height: auto;\n transition: filter 0.3s ease;\n}\n.custom_widget_MicrosoftFooter_sharing-options_yuh6w_146 li {\n width: 3.125rem;\n height: 3.125rem;\n padding: 0.5rem;\n box-sizing: border-box;\n border: 2px solid white; \n display: inline-block;\n text-align: center;\n opacity: 1;\n visibility: visible;\n transition: border 0.3s ease; /* Smooth transition effect */\n border-left: none;\n border-bottom: none; /* Apply bottom border to only last item */\n}\n.custom_widget_MicrosoftFooter_social-share-list-linkedin_yuh6w_203 {\n background-color: #0474b4;\n border-top-right-radius: 5px; /* Rounded top right corner of first item*/\n}\n.custom_widget_MicrosoftFooter_social-share-list-facebook_yuh6w_207 {\n background-color: #3c5c9c;\n}\n.custom_widget_MicrosoftFooter_social-share-list-xicon_yuh6w_210 {\n background-color: #000;\n}\n.custom_widget_MicrosoftFooter_social-share-list-reddit_yuh6w_213 {\n background-color: #fc4404;\n}\n.custom_widget_MicrosoftFooter_social-share-list-bluesky_yuh6w_216 {\n background-color: #f0f2f5;\n}\n.custom_widget_MicrosoftFooter_social-share-list-rss_yuh6w_219 {\n background-color: #ec7b1c;\n}\n.custom_widget_MicrosoftFooter_social-share-list-mail_yuh6w_222 {\n background-color: #848484; \n border-bottom-right-radius: 5px; /* Rounded bottom right corner of last item*/\n}\n.custom_widget_MicrosoftFooter_sharing-options_yuh6w_146 li.custom_widget_MicrosoftFooter_social-share-list-mail_yuh6w_222 {\n border-bottom: 2px solid white; /* Add bottom border only to the last item */\n height: 3.25rem; /* Increase last child height to make in align with the hover label */\n}\n.custom_widget_MicrosoftFooter_x-icon_yuh6w_230 {\n filter: invert(100%);\n transition: filter 0.3s ease;\n width: 1.25rem !important;\n height: auto;\n padding-top: 0.3125rem !important;\n}\n.custom_widget_MicrosoftFooter_bluesky-icon_yuh6w_237 {\n filter: invert(20%) sepia(100%) saturate(3000%) hue-rotate(180deg);\n transition: filter 0.3s ease;\n padding-top: 0.3125rem !important;\n width: 1.5625rem !important;\n}\n.custom_widget_MicrosoftFooter_share-icon_yuh6w_244 {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n.custom_widget_MicrosoftFooter_sharing-options_yuh6w_146 li:hover {\n border: 2px solid white; \n border-left: none;\n border-bottom: none;\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_sharing-options_yuh6w_146 li.custom_widget_MicrosoftFooter_social-share-list-mail_yuh6w_222:hover {\n border-bottom: 2px solid white; /* Add bottom border only to the last item */\n}\n.custom_widget_MicrosoftFooter_sharing-options_yuh6w_146 li:hover .custom_widget_MicrosoftFooter_label_yuh6w_260 {\n opacity: 1;\n visibility: visible;\n border: 2px solid white;\n box-sizing: border-box;\n border-left: none;\n}\n.custom_widget_MicrosoftFooter_label_yuh6w_260 {\n position: absolute;\n left: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n color: white;\n border-radius: 0 10 0 0.625rem;\n top: 50%;\n transform: translateY(-50%);\n height: 3.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.625rem 0.75rem 0.9375rem 0.5rem;\n border: 2px solid white;\n}\n.custom_widget_MicrosoftFooter_linkedin_yuh6w_156 {\n background-color: #0474b4;\n border-top-right-radius: 5px; /* Rounded top right corner of first item*/\n}\n.custom_widget_MicrosoftFooter_facebook_yuh6w_290 {\n background-color: #3c5c9c;\n}\n.custom_widget_MicrosoftFooter_twitter_yuh6w_293 {\n background-color: black;\n color: white;\n}\n.custom_widget_MicrosoftFooter_reddit_yuh6w_297 {\n background-color: #fc4404;\n}\n.custom_widget_MicrosoftFooter_mail_yuh6w_300 {\n background-color: #848484;\n border-bottom-right-radius: 5px; /* Rounded bottom right corner of last item*/\n}\n.custom_widget_MicrosoftFooter_bluesky_yuh6w_237 {\n background-color: #f0f2f5;\n color: black;\n}\n.custom_widget_MicrosoftFooter_rss_yuh6w_308 {\n background-color: #ec7b1c;\n}\n@media (max-width: 991px) {\n .custom_widget_MicrosoftFooter_social-share_yuh6w_138 {\n display: none;\n }\n}\n","tokens":{"context-uhf":"custom_widget_MicrosoftFooter_context-uhf_yuh6w_1","c-uhff-link":"custom_widget_MicrosoftFooter_c-uhff-link_yuh6w_12","c-uhff":"custom_widget_MicrosoftFooter_c-uhff_yuh6w_12","c-uhff-nav":"custom_widget_MicrosoftFooter_c-uhff-nav_yuh6w_35","c-heading-4":"custom_widget_MicrosoftFooter_c-heading-4_yuh6w_49","c-uhff-nav-row":"custom_widget_MicrosoftFooter_c-uhff-nav-row_yuh6w_57","c-uhff-nav-group":"custom_widget_MicrosoftFooter_c-uhff-nav-group_yuh6w_58","c-list":"custom_widget_MicrosoftFooter_c-list_yuh6w_78","f-bare":"custom_widget_MicrosoftFooter_f-bare_yuh6w_78","c-uhff-base":"custom_widget_MicrosoftFooter_c-uhff-base_yuh6w_94","c-uhff-ccpa":"custom_widget_MicrosoftFooter_c-uhff-ccpa_yuh6w_107","social-share":"custom_widget_MicrosoftFooter_social-share_yuh6w_138","sharing-options":"custom_widget_MicrosoftFooter_sharing-options_yuh6w_146","linkedin-icon":"custom_widget_MicrosoftFooter_linkedin-icon_yuh6w_156","social-share-email-image":"custom_widget_MicrosoftFooter_social-share-email-image_yuh6w_163","social-link-footer":"custom_widget_MicrosoftFooter_social-link-footer_yuh6w_167","social-share-list":"custom_widget_MicrosoftFooter_social-share-list_yuh6w_180","social-share-rss-image":"custom_widget_MicrosoftFooter_social-share-rss-image_yuh6w_183","social-share-list-linkedin":"custom_widget_MicrosoftFooter_social-share-list-linkedin_yuh6w_203","social-share-list-facebook":"custom_widget_MicrosoftFooter_social-share-list-facebook_yuh6w_207","social-share-list-xicon":"custom_widget_MicrosoftFooter_social-share-list-xicon_yuh6w_210","social-share-list-reddit":"custom_widget_MicrosoftFooter_social-share-list-reddit_yuh6w_213","social-share-list-bluesky":"custom_widget_MicrosoftFooter_social-share-list-bluesky_yuh6w_216","social-share-list-rss":"custom_widget_MicrosoftFooter_social-share-list-rss_yuh6w_219","social-share-list-mail":"custom_widget_MicrosoftFooter_social-share-list-mail_yuh6w_222","x-icon":"custom_widget_MicrosoftFooter_x-icon_yuh6w_230","bluesky-icon":"custom_widget_MicrosoftFooter_bluesky-icon_yuh6w_237","share-icon":"custom_widget_MicrosoftFooter_share-icon_yuh6w_244","label":"custom_widget_MicrosoftFooter_label_yuh6w_260","linkedin":"custom_widget_MicrosoftFooter_linkedin_yuh6w_156","facebook":"custom_widget_MicrosoftFooter_facebook_yuh6w_290","twitter":"custom_widget_MicrosoftFooter_twitter_yuh6w_293","reddit":"custom_widget_MicrosoftFooter_reddit_yuh6w_297","mail":"custom_widget_MicrosoftFooter_mail_yuh6w_300","bluesky":"custom_widget_MicrosoftFooter_bluesky_yuh6w_237","rss":"custom_widget_MicrosoftFooter_rss_yuh6w_308"}},"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1750285382195","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBanner-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBanner-1750285382195","value":{"messageMarkedAsSpam":"This post has been marked as spam","messageMarkedAsSpam@board:TKB":"This article has been marked as spam","messageMarkedAsSpam@board:BLOG":"This post has been marked as spam","messageMarkedAsSpam@board:FORUM":"This discussion has been marked as spam","messageMarkedAsSpam@board:OCCASION":"This event has been marked as spam","messageMarkedAsSpam@board:IDEA":"This idea has been marked as spam","manageSpam":"Manage Spam","messageMarkedAsAbuse":"This post has been marked as abuse","messageMarkedAsAbuse@board:TKB":"This article has been marked as abuse","messageMarkedAsAbuse@board:BLOG":"This post has been marked as abuse","messageMarkedAsAbuse@board:FORUM":"This discussion has been marked as abuse","messageMarkedAsAbuse@board:OCCASION":"This event has been marked as abuse","messageMarkedAsAbuse@board:IDEA":"This idea has been marked as abuse","preModCommentAuthorText":"This comment will be published as soon as it is approved","preModCommentModeratorText":"This comment is awaiting moderation","messageMarkedAsOther":"This post has been rejected due to other reasons","messageMarkedAsOther@board:TKB":"This article has been rejected due to other reasons","messageMarkedAsOther@board:BLOG":"This post has been rejected due to other reasons","messageMarkedAsOther@board:FORUM":"This discussion has been rejected due to other reasons","messageMarkedAsOther@board:OCCASION":"This event has been rejected due to other reasons","messageMarkedAsOther@board:IDEA":"This idea has been rejected due to other reasons","messageArchived":"This post was archived on {date}","relatedUrl":"View Related Content","relatedContentText":"Showing related content","archivedContentLink":"View Archived Content"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewStandard-1750285382195","value":{"anonymous":"Anonymous","author":"{messageAuthorLogin}","authorBy":"{messageAuthorLogin}","board":"{messageBoardTitle}","replyToUser":" to {parentAuthor}","showMoreReplies":"Show More","replyText":"Reply","repliesText":"Replies","markedAsSolved":"Marked as Solution","movedMessagePlaceholder.BLOG":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.TKB":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.FORUM":"{count, plural, =0 {This reply has been} other {These replies have been} }","movedMessagePlaceholder.IDEA":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.OCCASION":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholderUrlText":"moved.","messageStatus":"Status: ","statusChanged":"Status changed: {previousStatus} to {currentStatus}","statusAdded":"Status added: {status}","statusRemoved":"Status removed: {status}","labelExpand":"expand replies","labelCollapse":"collapse replies","unhelpfulReason.reason1":"Content is outdated","unhelpfulReason.reason2":"Article is missing information","unhelpfulReason.reason3":"Content is for a different Product","unhelpfulReason.reason4":"Doesn't match what I was searching for"},"localOverride":false},"CachedAsset:text:en_US-components/messages/ThreadedReplyList-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/ThreadedReplyList-1750285382195","value":{"title":"{count, plural, one{# Reply} other{# Replies}}","title@board:BLOG":"{count, plural, one{# Comment} other{# Comments}}","title@board:TKB":"{count, plural, one{# Comment} other{# Comments}}","title@board:IDEA":"{count, plural, one{# Comment} other{# Comments}}","title@board:OCCASION":"{count, plural, one{# Comment} other{# Comments}}","noRepliesTitle":"No Replies","noRepliesTitle@board:BLOG":"No Comments","noRepliesTitle@board:TKB":"No Comments","noRepliesTitle@board:IDEA":"No Comments","noRepliesTitle@board:OCCASION":"No Comments","noRepliesDescription":"Be the first to reply","noRepliesDescription@board:BLOG":"Be the first to comment","noRepliesDescription@board:TKB":"Be the first to comment","noRepliesDescription@board:IDEA":"Be the first to comment","noRepliesDescription@board:OCCASION":"Be the first to comment","messageReadOnlyAlert:BLOG":"Comments have been turned off for this post","messageReadOnlyAlert:TKB":"Comments have been turned off for this article","messageReadOnlyAlert:IDEA":"Comments have been turned off for this idea","messageReadOnlyAlert:FORUM":"Replies have been turned off for this discussion","messageReadOnlyAlert:OCCASION":"Comments have been turned off for this event"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyCallToAction-1750285382195","value":{"leaveReply":"Leave a reply...","leaveReply@board:BLOG@message:root":"Leave a comment...","leaveReply@board:TKB@message:root":"Leave a comment...","leaveReply@board:IDEA@message:root":"Leave a comment...","leaveReply@board:OCCASION@message:root":"Leave a comment...","repliesTurnedOff.FORUM":"Replies are turned off for this topic","repliesTurnedOff.BLOG":"Comments are turned off for this topic","repliesTurnedOff.TKB":"Comments are turned off for this topic","repliesTurnedOff.IDEA":"Comments are turned off for this topic","repliesTurnedOff.OCCASION":"Comments are turned off for this topic","infoText":"Stop poking me!"},"localOverride":false},"Category:category:Exchange":{"__typename":"Category","id":"category:Exchange","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Outlook":{"__typename":"Category","id":"category:Outlook","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Community-Info-Center":{"__typename":"Category","id":"category:Community-Info-Center","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:DrivingAdoption":{"__typename":"Category","id":"category:DrivingAdoption","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Azure":{"__typename":"Category","id":"category:Azure","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows-Server":{"__typename":"Category","id":"category:Windows-Server","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftTeams":{"__typename":"Category","id":"category:MicrosoftTeams","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PublicSector":{"__typename":"Category","id":"category:PublicSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft365":{"__typename":"Category","id":"category:microsoft365","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:IoT":{"__typename":"Category","id":"category:IoT","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:HealthcareAndLifeSciences":{"__typename":"Category","id":"category:HealthcareAndLifeSciences","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:ITOpsTalk":{"__typename":"Category","id":"category:ITOpsTalk","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftLearn":{"__typename":"Category","id":"category:MicrosoftLearn","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Blog:board:MicrosoftLearnBlog":{"__typename":"Blog","id":"board:MicrosoftLearnBlog","blogPolicies":{"__typename":"BlogPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:AI":{"__typename":"Category","id":"category:AI","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftMechanics":{"__typename":"Category","id":"category:MicrosoftMechanics","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftforNonprofits":{"__typename":"Category","id":"category:MicrosoftforNonprofits","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:StartupsatMicrosoft":{"__typename":"Category","id":"category:StartupsatMicrosoft","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PartnerCommunity":{"__typename":"Category","id":"category:PartnerCommunity","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Microsoft365Copilot":{"__typename":"Category","id":"category:Microsoft365Copilot","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows":{"__typename":"Category","id":"category:Windows","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Content_Management":{"__typename":"Category","id":"category:Content_Management","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft-security":{"__typename":"Category","id":"category:microsoft-security","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoftintune":{"__typename":"Category","id":"category:microsoftintune","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"CachedAsset:text:en_US-components/community/Navbar-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1750285382195","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content","gxcuf89792":"Tech Community","external-1":"Events","s-m-b":"Nonprofit Community","windows-server":"Windows Server","education-sector":"Education Sector","driving-adoption":"Driving Adoption","Common-content_management-link":"Content Management","microsoft-learn":"Microsoft Learn","s-q-l-server":"Content Management","partner-community":"Microsoft Partner Community","microsoft365":"Microsoft 365","external-9":".NET","external-8":"Teams","external-7":"Github","products-services":"Products","external-6":"Power Platform","communities-1":"Topics","external-5":"Microsoft Security","planner":"Outlook","external-4":"Microsoft 365","external-3":"Dynamics 365","azure":"Azure","healthcare-and-life-sciences":"Healthcare and Life Sciences","external-2":"Azure","microsoft-mechanics":"Microsoft Mechanics","microsoft-learn-1":"Community","external-10":"Learning Room Directory","microsoft-learn-blog":"Blog","windows":"Windows","i-t-ops-talk":"ITOps Talk","external-link-1":"View All","microsoft-securityand-compliance":"Microsoft Security","public-sector":"Public Sector","community-info-center":"Lounge","external-link-2":"View All","microsoft-teams":"Microsoft Teams","external":"Blogs","microsoft-endpoint-manager":"Microsoft Intune","startupsat-microsoft":"Startups at Microsoft","exchange":"Exchange","a-i":"AI and Machine Learning","io-t":"Internet of Things (IoT)","Common-microsoft365-copilot-link":"Microsoft 365 Copilot","outlook":"Microsoft 365 Copilot","external-link":"Community Hubs","communities":"Products"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1750285382195","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1750285382195","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1750285382195","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1750285382195","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLink-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1750285382195","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCoverImage-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCoverImage-1750285382195","value":{"coverImageTitle":"Cover Image"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeTitle-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeTitle-1750285382195","value":{"nodeTitle":"{nodeTitle, select, community {Community} other {{nodeTitle}}} "},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTimeToRead-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTimeToRead-1750285382195","value":{"minReadText":"{min} MIN READ"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1750285382195","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1750285382195","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1750285382195","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1750285382195","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1750285382195","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1750285382195","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRevision-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRevision-1750285382195","value":{"lastUpdatedDatePublished":"{publishCount, plural, one{Published} other{Updated}} {date}","lastUpdatedDateDraft":"Created {date}","version":"Version {major}.{minor}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1750285382195","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1750285382195","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageAuthorBio-1750285382195","value":{"sendMessage":"Send Message","actionMessage":"Follow this blog board to get notified when there's new activity","coAuthor":"CO-PUBLISHER","contributor":"CONTRIBUTOR","userProfile":"View Profile","iconlink":"Go to {name} {type}"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1750285382195","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-components/customComponent/CustomComponent-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/customComponent/CustomComponent-1750285382195","value":{"errorMessage":"Error rendering component id: {customComponentId}","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1750285382195","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1750285382195","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagView/TagViewChip-1750285382195","value":{"tagLabelName":"Tag name {tagName}"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserRegistrationDate-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserRegistrationDate-1750285382195","value":{"noPrefix":"{date}","withPrefix":"Joined {date}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeAvatar-1750285382195","value":{"altTitle":"Node avatar for {nodeTitle}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeDescription-1750285382195","value":{"description":"{description}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1750285382195":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1750285382195","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false}}}},"page":"/blogs/BlogMessagePage/BlogMessagePage","query":{"boardId":"educatordeveloperblog","messageSubject":"fine-tune-and-integrate-custom-phi-3-models-with-prompt-flow-in-azure-ai-studio","messageId":"4191726"},"buildId":"cQon2PUqbQU8la6pXifn2","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"o365","openTelemetryServiceVersion":"25.3.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/blogs/BlogArticleWidget/BlogArticleWidget.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/messages/ThreadedReplyList/ThreadedReplyList.tsx","./components/external/components/ExternalComponent.tsx","./components/customComponent/CustomComponentContent/HtmlContent.tsx","../shared/client/components/common/List/UnwrappedList/UnwrappedList.tsx","./components/tags/TagView/TagView.tsx","./components/tags/TagView/TagViewChip/TagViewChip.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx","./components/customComponent/CustomComponentContent/CustomComponentScripts.tsx"],"appGip":true,"scriptLoader":[{"id":"analytics","src":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1730819800000/analytics.js?page.id=BlogMessagePage&entity.id=board%3Aeducatordeveloperblog&entity.id=message%3A4191726","strategy":"afterInteractive"}]}