"}},"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\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageListTabs\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageListTabs-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageView/MessageViewInline\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/OverflowNav\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTime\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTime-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageUnreadCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageViewCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageViewCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/kudos/KudosCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/kudos/KudosCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRepliesCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745505307000"}],"cachedText({\"lastModified\":\"1745505307000\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505307000"}]},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"User:user:-1":{"__typename":"User","id":"user:-1","uid":-1,"login":"Deleted","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-1746570310983":{"__typename":"CachedAsset","id":"pages-1746570310983","value":[{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"UserBlogPermissions.Page","type":"COMMUNITY","urlPath":"/c/user-blog-permissions/page","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"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":1746570310983,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"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":1746570310983,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"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":1746570310983,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"HealthCheckPage","type":"COMMUNITY","urlPath":"/health","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1746570310983,"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},"CachedAsset:theme:customTheme1-1746570310386":{"__typename":"CachedAsset","id":"theme:customTheme1-1746570310386","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-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1745505307000","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1745505307000","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/tags/TagPage-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-pages/tags/TagPage-1745505307000","value":{"tagPageTitle":"Tag:\"{tagName}\" | {communityTitle}","tagPageForNodeTitle":"Tag:\"{tagName}\" in \"{title}\" | {communityTitle}","name":"Tags Page","tag":"Tag: {tagName}"},"localOverride":false},"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","displayId":"top","nodeType":"category","depth":0,"title":"Top"},"Category:category:communities":{"__typename":"Category","id":"category:communities","displayId":"communities","nodeType":"category","depth":1,"parent":{"__ref":"Category:category:top"},"title":"Communities"},"Category:category:solutions":{"__typename":"Category","id":"category:solutions","displayId":"solutions","nodeType":"category","depth":2,"parent":{"__ref":"Category:category:communities"},"title":"Topics"},"Blog:board:EducatorDeveloperBlog":{"__typename":"Blog","id":"board:EducatorDeveloperBlog","entityType":"BLOG","displayId":"EducatorDeveloperBlog","nodeType":"board","depth":4,"conversationStyle":"BLOG","title":"Educator Developer Blog","description":"","avatar":null,"profileSettings":{"__typename":"ProfileSettings","language":null},"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},"boardPolicies":{"__typename":"BoardPolicies","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":[]}}},"theme":{"__ref":"Theme:customTheme1"},"shortTitle":"Educator Developer Blog","tagPolicies":{"__typename":"TagPolicies","canSubscribeTagOnNode":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","args":[]}},"canManageTagDashboard":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","args":[]}}}},"CachedAsset:quilt:o365.prod:pages/tags/TagPage:board:EducatorDeveloperBlog-1746740537376":{"__typename":"CachedAsset","id":"quilt:o365.prod:pages/tags/TagPage:board:EducatorDeveloperBlog-1746740537376","value":{"id":"TagPage","container":{"id":"Common","headerProps":{"removeComponents":["community.widget.bannerWidget"],"__typename":"QuiltContainerSectionProps"},"items":[{"id":"tag-header-widget","layout":"ONE_COLUMN","bgColor":"var(--lia-bs-white)","showBorder":"BOTTOM","sectionEditLevel":"LOCKED","columnMap":{"main":[{"id":"tags.widget.TagsHeaderWidget","__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"},{"id":"messages-list-for-tag-widget","layout":"ONE_COLUMN","columnMap":{"main":[{"id":"messages.widget.messageListForNodeByRecentActivityWidget","props":{"viewVariant":{"type":"inline","props":{"useUnreadCount":true,"useViewCount":true,"useAuthorLogin":true,"clampBodyLines":3,"useAvatar":true,"useBoardIcon":false,"useKudosCount":true,"usePreviewMedia":true,"useTags":false,"useNode":true,"useNodeLink":true,"useTextBody":true,"truncateBodyLength":-1,"useBody":true,"useRepliesCount":true,"useSolvedBadge":true,"timeStampType":"conversation.lastPostingActivityTime","useMessageTimeLink":true,"clampSubjectLines":2}},"panelType":"divider","useTitle":false,"hideIfEmpty":false,"pagerVariant":{"type":"loadMore"},"style":"list","showTabs":true,"tabItemMap":{"default":{"mostRecent":true,"mostRecentUserContent":false,"newest":false},"additional":{"mostKudoed":true,"mostViewed":true,"mostReplies":false,"noReplies":false,"noSolutions":false,"solutions":false}}},"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"}],"__typename":"QuiltContainer"},"__typename":"Quilt"},"localOverride":false},"CachedAsset:quiltWrapper:o365.prod:Common:1746797693388":{"__typename":"CachedAsset","id":"quiltWrapper:o365.prod:Common:1746797693388","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.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-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1745505307000","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},"CachedAsset:component:custom.widget.HeroBanner-en-us-1746740526816":{"__typename":"CachedAsset","id":"component:custom.widget.HeroBanner-en-us-1746740526816","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-1746740526816":{"__typename":"CachedAsset","id":"component:custom.widget.MicrosoftFooter-en-us-1746740526816","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: 43px;\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.social-share-rss-image {\n border-bottom-right-radius: 7px;\n}\n.social-share-rss-image:hover {\n border-radius: 0;\n}\n\n.social-link-footer {\n position: relative;\n display: block;\n margin: -2px 0;\n transition: all 0.2s ease;\n}\n.social-link-footer:hover .linkedin-icon {\n border-radius: 0;\n}\n.social-link-footer:hover .social-share-rss-image {\n border-radius: 0;\n}\n\n.social-link-footer img {\n width: 40px;\n height: auto;\n transition: filter 0.3s ease;\n}\n\n.social-share-list {\n width: 40px;\n}\n.social-share-rss-image {\n width: 40px;\n}\n\n.share-icon {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n\n.share-icon:hover {\n opacity: 1;\n border: 2px solid white;\n box-sizing: border-box;\n}\n\n.share-icon: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: 40px;\n border-radius: 0 6px 6px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 5px 20px 8px;\n margin-left: -1px;\n}\n.linkedin {\n background-color: #0474b4;\n}\n.facebook {\n background-color: #3c5c9c;\n}\n.twitter {\n background-color: white;\n color: black;\n}\n.reddit {\n background-color: #fc4404;\n}\n.mail {\n background-color: #848484;\n}\n.bluesky {\n background-color: white;\n color: black;\n}\n.rss {\n background-color: #ec7b1c;\n}\n#RSS {\n width: 40px;\n height: 40px;\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_105bp_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_105bp_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_105bp_12 {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.custom_widget_MicrosoftFooter_c-uhff-nav_105bp_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_105bp_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_105bp_57 {\n .custom_widget_MicrosoftFooter_c-uhff-nav-group_105bp_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_105bp_78.custom_widget_MicrosoftFooter_f-bare_105bp_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_105bp_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_105bp_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_105bp_107:hover {\n text-decoration: underline;\n }\n ul.custom_widget_MicrosoftFooter_c-list_105bp_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_105bp_78.custom_widget_MicrosoftFooter_f-bare_105bp_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_105bp_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_105bp_146 {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 2.6875rem;\n border-radius: 0 0.4375rem 0.4375rem 0;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_105bp_156 {\n border-top-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_105bp_156:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n border-bottom-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169 {\n position: relative;\n display: block;\n margin: -0.125rem 0;\n transition: all 0.2s ease;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169:hover .custom_widget_MicrosoftFooter_linkedin-icon_105bp_156 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169:hover .custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169 img {\n width: 2.5rem;\n height: auto;\n transition: filter 0.3s ease;\n}\n.custom_widget_MicrosoftFooter_social-share-list_105bp_188 {\n width: 2.5rem;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n width: 2.5rem;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195 {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195:hover {\n opacity: 1;\n border: 2px solid white;\n box-sizing: border-box;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195:hover .custom_widget_MicrosoftFooter_label_105bp_207 {\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_105bp_207 {\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: 2.5rem;\n border-radius: 0 0.375rem 0.375rem 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.25rem 0.3125rem 1.25rem 0.5rem;\n margin-left: -0.0625rem;\n}\n.custom_widget_MicrosoftFooter_linkedin_105bp_156 {\n background-color: #0474b4;\n}\n.custom_widget_MicrosoftFooter_facebook_105bp_237 {\n background-color: #3c5c9c;\n}\n.custom_widget_MicrosoftFooter_twitter_105bp_240 {\n background-color: white;\n color: black;\n}\n.custom_widget_MicrosoftFooter_reddit_105bp_244 {\n background-color: #fc4404;\n}\n.custom_widget_MicrosoftFooter_mail_105bp_247 {\n background-color: #848484;\n}\n.custom_widget_MicrosoftFooter_bluesky_105bp_250 {\n background-color: white;\n color: black;\n}\n.custom_widget_MicrosoftFooter_rss_105bp_254 {\n background-color: #ec7b1c;\n}\n#custom_widget_MicrosoftFooter_RSS_105bp_1 {\n width: 2.5rem;\n height: 2.5rem;\n}\n@media (max-width: 991px) {\n .custom_widget_MicrosoftFooter_social-share_105bp_138 {\n display: none;\n }\n}\n","tokens":{"context-uhf":"custom_widget_MicrosoftFooter_context-uhf_105bp_1","c-uhff-link":"custom_widget_MicrosoftFooter_c-uhff-link_105bp_12","c-uhff":"custom_widget_MicrosoftFooter_c-uhff_105bp_12","c-uhff-nav":"custom_widget_MicrosoftFooter_c-uhff-nav_105bp_35","c-heading-4":"custom_widget_MicrosoftFooter_c-heading-4_105bp_49","c-uhff-nav-row":"custom_widget_MicrosoftFooter_c-uhff-nav-row_105bp_57","c-uhff-nav-group":"custom_widget_MicrosoftFooter_c-uhff-nav-group_105bp_58","c-list":"custom_widget_MicrosoftFooter_c-list_105bp_78","f-bare":"custom_widget_MicrosoftFooter_f-bare_105bp_78","c-uhff-base":"custom_widget_MicrosoftFooter_c-uhff-base_105bp_94","c-uhff-ccpa":"custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107","social-share":"custom_widget_MicrosoftFooter_social-share_105bp_138","sharing-options":"custom_widget_MicrosoftFooter_sharing-options_105bp_146","linkedin-icon":"custom_widget_MicrosoftFooter_linkedin-icon_105bp_156","social-share-rss-image":"custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162","social-link-footer":"custom_widget_MicrosoftFooter_social-link-footer_105bp_169","social-share-list":"custom_widget_MicrosoftFooter_social-share-list_105bp_188","share-icon":"custom_widget_MicrosoftFooter_share-icon_105bp_195","label":"custom_widget_MicrosoftFooter_label_105bp_207","linkedin":"custom_widget_MicrosoftFooter_linkedin_105bp_156","facebook":"custom_widget_MicrosoftFooter_facebook_105bp_237","twitter":"custom_widget_MicrosoftFooter_twitter_105bp_240","reddit":"custom_widget_MicrosoftFooter_reddit_105bp_244","mail":"custom_widget_MicrosoftFooter_mail_105bp_247","bluesky":"custom_widget_MicrosoftFooter_bluesky_105bp_250","rss":"custom_widget_MicrosoftFooter_rss_105bp_254","RSS":"custom_widget_MicrosoftFooter_RSS_105bp_1"}},"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1745505307000","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagsHeaderWidget-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagsHeaderWidget-1745505307000","value":{"tag":"{tagName}","topicsCount":"{count} {count, plural, one {Topic} other {Topics}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745505307000","value":{"title@userScope:other":"Recent Content","title@userScope:self":"Contributions","title@board:FORUM@userScope:other":"Recent Discussions","title@board:BLOG@userScope:other":"Recent Blogs","emptyDescription":"No content to show","MessageListForNodeByRecentActivityWidgetEditor.nodeScope.label":"Scope","title@instance:1722894000155":"Recent Discussions","title@instance:1727367112619":"Recent Blog Articles","title@instance:1727367069748":"Recent Discussions","title@instance:1727366213114":"Latest Discussions","title@instance:1727899609720":"","title@instance:1727363308925":"Latest Discussions","title@instance:1737115580352":"Latest Articles","title@instance:1720453418992":"Recent Discssions","title@instance:1727365950181":"Latest Blog Articles","title@instance:bmDPnI":"Latest Blog Articles","title@instance:IiDDJZ":"Latest Blog Articles","title@instance:1721244347979":"Latest blog posts","title@instance:1728383752171":"Related Content","title@instance:1722893956545":"Latest Skilling Resources","title@instance:dhcgCU":"Latest Discussions"},"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}}},"Conversation:conversation:4197933":{"__typename":"Conversation","id":"conversation:4197933","topic":{"__typename":"BlogTopicMessage","uid":4197933},"lastPostingActivityTime":"2024-10-25T00:00:00.028-07:00","solved":false},"User:user:2355214":{"__typename":"User","uid":2355214,"login":"KhalidAbdelaty","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMzU1MjE0LTYzMDg4MGk3QjNENjg1QzhCOUU3RTFD"},"id":"user:2355214"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc1NGkwNTg3ODBFMzYwQTYyRjA3?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc1NGkwNTg3ODBFMzYwQTYyRjA3?revision=2","title":"Azure.png","associationType":"TEASER","width":873,"height":292,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc1NWlERDBFNjg3RkQ0MTk4RjY3?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc1NWlERDBFNjg3RkQ0MTk4RjY3?revision=2","title":"Azure.png","associationType":"BODY","width":873,"height":292,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2MWk2RUI3QzU4REQzREQ5NTc5?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2MWk2RUI3QzU4REQzREQ5NTc5?revision=2","title":"unnamed.png","associationType":"BODY","width":995,"height":497,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NGlCNEE4M0NENzVBNjA1NzJG?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NGlCNEE4M0NENzVBNjA1NzJG?revision=2","title":"KhalidAbdelaty_2-1729428579203.png","associationType":"BODY","width":1044,"height":728,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NWkxMDk1QzcxMzFCMzIzMjZG?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NWkxMDk1QzcxMzFCMzIzMjZG?revision=2","title":"KhalidAbdelaty_3-1729428740994.png","associationType":"BODY","width":1452,"height":644,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NmlBREJEN0ZBOUQzNkY4MDM2?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NmlBREJEN0ZBOUQzNkY4MDM2?revision=2","title":"KhalidAbdelaty_4-1729428841352.png","associationType":"BODY","width":1476,"height":117,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2N2k1NTc4ODY4QTA1MzVDNjVF?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2N2k1NTc4ODY4QTA1MzVDNjVF?revision=2","title":"KhalidAbdelaty_5-1729428908684.png","associationType":"BODY","width":1317,"height":771,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2OGk1NkNGQzE5RDlBN0Q3NTA4?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2OGk1NkNGQzE5RDlBN0Q3NTA4?revision=2","title":"KhalidAbdelaty_6-1729428992382.png","associationType":"BODY","width":1269,"height":714,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2OWlDQzI1REE0N0QyMzJFNzND?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2OWlDQzI1REE0N0QyMzJFNzND?revision=2","title":"KhalidAbdelaty_7-1729429567594.png","associationType":"BODY","width":1237,"height":824,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3MGk2QUMwMkY4NzE5MDcyNURG?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3MGk2QUMwMkY4NzE5MDcyNURG?revision=2","title":"KhalidAbdelaty_8-1729429632076.png","associationType":"BODY","width":1455,"height":835,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3MmkzMkZFQjk2QjNBMkFCMzI0?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3MmkzMkZFQjk2QjNBMkFCMzI0?revision=2","title":"KhalidAbdelaty_9-1729429915194.png","associationType":"BODY","width":1478,"height":109,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3M2k3MDcyNkRGMzE1RTVEQkNG?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3M2k3MDcyNkRGMzE1RTVEQkNG?revision=2","title":"KhalidAbdelaty_10-1729430008685.png","associationType":"BODY","width":1850,"height":833,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NGkyOTk0NDdDRUEwMTQ2OTg5?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NGkyOTk0NDdDRUEwMTQ2OTg5?revision=2","title":"KhalidAbdelaty_11-1729430098341.png","associationType":"BODY","width":1853,"height":829,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NWlDRTM5QjI0RjYyNjlEQTM4?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NWlDRTM5QjI0RjYyNjlEQTM4?revision=2","title":"KhalidAbdelaty_12-1729430137032.png","associationType":"BODY","width":1782,"height":821,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NmkxRTA0MkJDNDYxRDgzOTY2?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NmkxRTA0MkJDNDYxRDgzOTY2?revision=2","title":"KhalidAbdelaty_13-1729430211659.png","associationType":"BODY","width":1180,"height":657,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3N2k4MTRGNzE3M0JDQUUyQkVG?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3N2k4MTRGNzE3M0JDQUUyQkVG?revision=2","title":"KhalidAbdelaty_14-1729430266786.png","associationType":"BODY","width":799,"height":529,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3OGk4MEE0RDQ2NTYxQzJFQjVG?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3OGk4MEE0RDQ2NTYxQzJFQjVG?revision=2","title":"KhalidAbdelaty_15-1729430352620.png","associationType":"BODY","width":1782,"height":828,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3OWlGODFFRUUwRjg0OTU2NUNF?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3OWlGODFFRUUwRjg0OTU2NUNF?revision=2","title":"chrt.png","associationType":"BODY","width":1357,"height":858,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc4MGkxM0NGNjcxNzlDQURFNjgy?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc4MGkxM0NGNjcxNzlDQURFNjgy?revision=2","title":"qu.png","associationType":"BODY","width":970,"height":858,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc4MWk5MjBDQzgwMThBNDEzMTU5?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc4MWk5MjBDQzgwMThBNDEzMTU5?revision=2","title":"KhalidAbdelaty_16-1729430567261.png","associationType":"BODY","width":1745,"height":744,"altText":null},"BlogTopicMessage:message:4197933":{"__typename":"BlogTopicMessage","subject":"Azure Synapse: A Step-by-Step Beginner’s Guide","conversation":{"__ref":"Conversation:conversation:4197933"},"id":"message:4197933","revisionNum":2,"uid":4197933,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2355214"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" An easy-to-follow guide for beginners to learn Azure Synapse, covering everything from setting up your workspace to integrating data and running analytics. \n \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":53633},"postTime":"2024-10-25T00:00:00.028-07:00","lastPublishTime":"2024-10-25T00:00:00.028-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" \n \n \n \n \n Azure Synapse: A Step-by-Step Beginner’s Guide \n \n Introduction \n \n Hi, I am Khalid Abdelaty a Microsoft Learn Student Ambassador, studying Computer Science Student @ Tanta University in Egypt. I am fancisanted by the opportunity of AI and the ability to analyze and interpret data. \n \n As we continue to amass large volumes of data from various sources, the real challenge lies in transforming this data into actionable insights that drive decision-making and growth. It’s not just about data collection; it’s about finding the most efficient way to manage, analyze, and leverage this data at scale. \n As organizations explore solutions to these challenges, several platforms rise to the forefront. In 2024, Databricks, Azure Synapse, Google BigQuery, and Snowflake are among the top choices in the industry. \n \n Azure Synapse Analytics has distinguished itself from other players by offering a comprehensive platform comprising data integration, big data analytics, and enterprise data warehousing into a unified solution. \n In this blog, we’ll explore why Azure Synapse has become a compelling choice in 2024 for organizations aiming to streamline their data operations and how you can leverage it to solve some of your organization's complex data analysis challenges. \n \n What is Azure Synapse? \n \n Azure Synapse is a powerful, end-to-end analytics service from Microsoft that unifies data integration, big data, and data warehousing into a single cohesive platform. \n Unlike traditional analytics services that often require multiple tools for different stages of data processing, Azure Synapse brings these capabilities together, enabling organizations to streamline their data workflows. \n Whether ingesting large datasets, preparing data for analysis, or running complex queries, Azure Synapse provides a unified experience that simplifies the entire process. \n One of Azure Synapse's key strengths is its flexibility. Users can query data on their terms, choosing between serverless options for on-demand queries or dedicated resources for more intensive workloads. This adaptability allows businesses to tailor their analytics environment to meet specific needs, whether scaling up for high-performance scenarios or optimizing costs for less demanding tasks. \n Azure Synapse integrates seamlessly with other Azure services, such as Power BI and Azure Machine Learning, enabling a holistic approach to data analytics and fostering collaboration across data teams. \n If you want to learn about the power of Microsoft Azure and cloud computing and how they can help companies improve their data analytics, data science, and engineering workload, check out this amazing free Introduction to Azure . \n Features of Azure Synapse: \n \n Unified experience: Azure Synapse offers a unified platform for data integration, data warehousing, and big data analytics, enabling users to work with their data seamlessly and efficiently. \n Serverless and provisioned compute: Azure Synapse provides serverless and provisioned compute options, allowing users to choose the most appropriate resource for their workloads. \n Integration with Power BI and Azure Machine Learning: Azure Synapse integrates seamlessly with Power BI and Azure Machine Learning, enabling users to create data visualizations and leverage advanced analytics capabilities easily. \n Advanced security and compliance: Azure Synapse boasts comprehensive security and compliance features, ensuring that data is protected and organizations can meet regulatory requirements. \n Seamless integration with Azure Data Lake Storage: Azure Synapse's tight integration with Azure Data Lake Storage allows users to access and analyze data stored in the data lake easily. \n \n Benefits of Using Azure Synapse \n \n Here are some of the benefits of using Azure Synapse Analytics: \n \n Scalability and flexibility: Azure Synapse's on-demand scaling capabilities allow users to quickly adjust their compute and storage resources to meet changing business needs. \n Unified analytics platform: By combining data integration, data warehousing, and big data analytics, Azure Synapse provides a comprehensive and streamlined analytics solution. \n Enhanced productivity: Azure Synapse's integrated tools and seamless user experience help users be more productive and efficient in their data-driven tasks. \n Cost-efficiency: Azure Synapse's on-demand scaling and pay-per-use pricing model can help organizations optimize costs and reduce overall data analytics expenditure. \n Comprehensive security and compliance: Azure Synapse's robust security features and compliance certifications ensure that data is protected and that organizations can meet regulatory requirements. \n \n Kickstart your cloud journey with the Azure Fundamentals Certification. \n \n Use Cases for Azure Synapse \n \n Azure Synapse is a versatile platform that can be applied to a broad range of data analytics use cases, making it a powerful tool for businesses seeking to unlock the full potential of their data. \n \n Some of the most common use cases include: \n \n \n \n \n \n \n Use case \n \n Description \n \n \n \n Data warehousing and ETL processes \n \n \n Azure Synapse consolidates data from various sources into a centralized data warehouse. It offers robust ETL capabilities to efficiently transform raw data into structured, usable formats. This centralized data repository is the backbone for enterprise reporting, ensuring decision-makers can access consistent and reliable data. \n \n \n \n \n Real-time data analytics \n \n \n Azure Synapse supports real-time data processing, enabling organizations to capture and analyze data as it’s generated. This capability is crucial for monitoring live events, detecting anomalies, or making instant decisions based on up-to-the-minute information. \n \n \n \n \n Predictive analytics and machine learning \n \n \n By integrating seamlessly with Azure Machine Learning, Azure Synapse allows businesses to perform advanced predictive analytics. Organizations can combine historical data with machine learning models to forecast trends, predict outcomes, and make data-driven decisions more accurately. \n \n \n \n \n Business intelligence reporting \n \n \n Azure Synapse integrates with Power BI to create rich, interactive data visualizations and reports. This integration helps organizations turn raw data into compelling dashboards and reports that provide actionable insights. \n \n \n \n \n \n \n \n \n \n \n Azure Synapse vs. Databricks \n \n Azure Synapse and Databricks are potent large-scale data processing and analytics platforms, but they excel in different areas. \n \n Azure Synapse is an all-in-one solution that unifies data integration, warehousing, and big data analytics, as mentioned before. It is ideal for organizations needing a comprehensive platform to handle diverse workloads, from structured data to massive datasets. \n Databricks, built on Apache Spark, specializes in collaborative data science, data engineering, and machine learning. It’s known for its strength in large-scale data processing and model deployment and offers a collaborative environment for data teams. \n \n Differences and similarities \n \n \n \n \n \n \n \n \n \n \n Azure Synapse \n \n Databricks \n \n \n \n Platform focus \n \n \n An all-in-one solution combining data integration, warehousing, and big data analytics. Ideal for holistic solutions. \n \n \n Focuses on Apache Spark-based big data processing and machine learning. Strong in collaborative data science, engineering, and model deployment. \n \n \n \n \n Data storage integration \n \n \n Seamless integration with Azure Data Lake and Blob Storage. \n \n \n Strong integration with cloud storage services like Azure Data Lake and Amazon S3. \n \n \n \n \n SQL support \n \n \n Native SQL support for data warehousing. \n \n \n It uses Apache Spark SQL and is optimized for big data scenarios. \n \n \n \n \n Ecosystem integration \n \n \n Close integration with other Azure services. \n \n \n Aligns more with the open-source Apache Spark ecosystem. \n \n \n \n \n \n After a comprehensive overview of Azure Synapse, let’s get hands-on! \n \n Setting Up Azure Synapse \n To get started with Azure Synapse, you'll need to have an active Azure account. Once your account is set up, you can create a new Synapse workspace and configure your data sources and connections. \n \n 1. Start Azure free trial \n If you're new to Azure, the first step is to create a subscription. Click the \"Start\" button under \"Start with an Azure free trial.\" \n During the signup process, you'll need to verify your account using a phone number and provide credit card information for verification purposes. \n \n \n \n \n \n 2. Prerequisite: Create Data Lake Storage Gen2 \n Before proceeding with Azure Synapse, you must create a Data Lake Storage Gen2 account to store and manage your data. \n Start by navigating to the Azure portal and selecting \"Create a resource.\" Choose \"Storage account\" and fill in the required details, such as the resource group, storage account name, and region. \n Ensure that \"Azure Blob Storage or Azure Data Lake Storage Gen2\" is selected as the primary service, and configure other settings like performance and redundancy as per your use-case. \n Create an Azure storage account. \n \n \n \n After filling in the details, click \"Review + create\" to deploy the storage account. It can take several minutes before the storage deployment is complete. \n \n \n \n \n Once the deployment is complete, your new Data Lake Storage Gen2 account will be listed under the Storage Accounts section and will be ready for use with Azure Synapse. \n \n \n \n 3. Create Synapse workspace \n Azure Synapse workspace is the foundational environment where you can set up, organize, and manage all the resources and services needed for data integration, analytics, and storage within Azure Synapse. It acts as the central hub for configuring and accessing various tools and data assets in your Synapse project. \n Create Azure Synapse workspace by clicking the “Create Synapse Workspace” button. \n \n \n \n In the next step, you'll need to fill out the form to create your Azure Synapse workspace. \n Start by selecting your subscription and resource group, then enter a name for your workspace and choose the appropriate region. \n \n \n \n \n \n \n Review the details on the final tab before clicking the “Create” button. \n \n \n \n \n It can take several minutes before the Azure Synapse workspace is deployed. \n deployment in progress. \n \n \n \n \n \n Once the workspace is deployed, click on its name to open it. \n \n 4. Open Synapse Studio \n Azure Synapse Studio is the web-based interface for managing and interacting with your Azure Synapse workspace. It provides a unified workspace where you can perform data integration, big data analytics, and data warehousing tasks all in one place. \n Synapse Studio is essential because it lets you quickly develop, manage, and monitor your data pipelines, SQL scripts, Spark jobs, and more without switching between different tools or environments. \n \n \n \n \n \n Importing a Dataset \n In Synapse Studio, you can import the data from several different sources. You can import it from a Gen2 storage account linked to the Synapse workspace (see step 2 above), from a SQL server database, or external sources. \n For this tutorial, we will use one of the sample datasets, “Bing COVID-19 Data,” available in the Synapse Gallery. \n To import, click on “Dataset” on the left-hand side navigation menu and then click on “+ sign” → \"Gallery.\" \n \n \n \n \n You can review the metadata and sample rows from the data before clicking the “Add dataset” button to import this data. \n \n \n \n \n Once the import is successful, you will be able to see the dataset under “Data.” \n \n \n \n \n Writing and Running Queries \n Azure Synapse Studio provides a user-friendly interface for writing and running queries. You can use SQL to perform a wide range of data analysis tasks, from simple data retrieval to more complex analytics. \n Synapse Studio also allows you to save and manage your queries and view and handle the results of your queries. \n You can analyze this dataset using an SQL script or by creating a Notebook. In a Notebook, you can load the dataset as a Spark DataFrame and use Spark for data manipulation and analysis. \n To run SQL queries on this dataset, click the three dots next to the dataset name. \n \n \n \n \n \n Clicking “Select TOP 100 rows” will open an SQL editor where you can write SQL queries and execute them to view the results. \n \n \n \n \n \n If you want to visualize the output instead of a table view, click “Chart” under “Results”. \n \n \n \n Those changes are initially saved as drafts when you create or modify a SQL script. Publishing the script by clicking the “Publish” button on top commits those changes, ensuring the latest version is stored in the workspace. \n Publishing an SQL script in Synapse Studio means saving your script to the Synapse workspace, making it available for future use, collaboration, and version control. \n Example: Analyzing daily growth in COVID-19 confirmed cases worldwide \n Let’s run an SQL query on this dataset to analyze the daily increase in COVID-19 confirmed cases worldwide. \n The query retrieves data from the “Bing COVID-19 dataset”, calculates the number of new cases reported each day by comparing the current day's confirmed cases to the previous day's count, and orders the results by date. \n \n \n Analyzing Data in Notebooks \n In Synapse Studio, you can analyze data using notebooks, which provide an interactive environment for running code, visualizing results, and conducting data analysis. \n Notebooks in Synapse Studio support multiple languages, including PySpark, which is particularly powerful for big data processing. \n To run a Notebook in Synapse Studio, attach it to an Apache Spark pool, which provides the necessary distributed computing resources to process large datasets efficiently. \n An Apache Spark pool is a collection of compute nodes that are dynamically allocated to run your Spark jobs. If you don't already have a Spark pool, you can create one by navigating to the \"Manage pools\" section in Synapse Studio, where you can specify the number of nodes, their size, and other configurations. \n Once your Spark pool is set up and attached to the notebook, you can execute code cells within the notebook to load, manipulate, and analyze data, as shown in the screenshot below. \n This setup enables you to leverage the full power of Spark for large-scale data analysis directly within Azure Synapse. \n \n \n \n \n \n Integrating Azure Synapse with Other Azure Services \n Azure Synapse integrates seamlessly with other Azure services, enabling you to build comprehensive data analytics solutions. \n Some key integrations include: \n \n Azure Data Factory: Utilize Azure Data Factory to orchestrate complex data workflows and automate ETL (Extract, Transform, Load) or ELT (Extract, Load, Transform) processes. By integrating Azure Synapse with Data Factory, you can easily move and transform data from various sources into your Synapse workspace, ensuring your data is always ready for analysis. \n Power BI: Azure Synapse integrates smoothly with Power BI, allowing you to create advanced data visualizations and interactive dashboards. This integration enables businesses to transform raw data into insightful, visually compelling reports that can be shared across teams, fostering data-driven decision-making and enhancing business intelligence capabilities. \n Azure Machine Learning: Combine the data processing power of Azure Synapse with Azure Machine Learning to unlock advanced predictive analytics capabilities. This integration allows you to train, deploy, and manage machine learning models directly within your Synapse environment, enabling more accurate predictions and smarter data-driven strategies. \n Azure Databricks: For organizations focused on collaborative data science and machine learning, integrating Azure Synapse with Azure Databricks provides a powerful solution. This integration facilitates seamless collaboration among data scientists, engineers, and analysts, allowing them to build and scale data pipelines, develop models, and conduct advanced analytics in a unified, collaborative environment. \n \n Best Practices for Using Azure Synapse \n To get the most out of Azure Synapse, it's important to follow best practices, such as: \n \n Optimizing data storage formats: Selecting the right data storage formats, such as Parquet or ORC, is crucial for ensuring optimal query performance and efficient data processing. These formats are designed for big data analytics and can significantly reduce query execution times and storage costs by supporting columnar storage and compression. \n Managing compute resources efficiently: Efficiently managing compute resources is key to balancing performance and cost-effectiveness. By scaling resources up or down based on workload demands and using serverless options where appropriate, you can ensure that you are not overspending on unused compute power while still meeting performance requirements. \n Implementing security best practices: Security should be a top priority when using Azure Synapse. To protect sensitive information, implement robust security measures, such as data encryption, role-based access control, and network isolation. \n Monitoring and troubleshooting workloads: Continuous monitoring of your Azure Synapse workloads is essential for maintaining optimal performance and identifying potential issues before they impact operations. Utilize built-in monitoring tools to track resource usage, query performance, and data pipeline efficiency, and be proactive in troubleshooting any anomalies to minimize disruptions. \n \n Conclusion \n Azure Synapse Analytics stands as a powerful and versatile solution for organizations seeking to harness the full potential of their data. By unifying data integration, big data analytics, and enterprise data warehousing into a single, comprehensive platform, Azure Synapse empowers businesses to streamline their data operations and extract valuable insights with unprecedented efficiency. \n The platform's flexibility, scalability, and seamless integration with other Azure services make it ideal for various data-driven tasks, from real-time analytics to complex machine learning projects. As data grows in volume and importance, Azure Synapse positions itself as a crucial tool for organizations looking to stay competitive in an increasingly data-centric world. \n By adopting Azure Synapse, businesses can optimize their current data processes and pave the way for future innovations in data analytics. As we move forward, the ability to quickly and effectively turn data into actionable insights will be a key differentiator for successful organizations. Azure Synapse provides the robust foundation needed to meet this challenge head-on, enabling businesses to unlock new opportunities and drive growth through the power of data. \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"19858","kudosSumWeight":2,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc1NGkwNTg3ODBFMzYwQTYyRjA3?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc1NWlERDBFNjg3RkQ0MTk4RjY3?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2MWk2RUI3QzU4REQzREQ5NTc5?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NGlCNEE4M0NENzVBNjA1NzJG?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NWkxMDk1QzcxMzFCMzIzMjZG?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2NmlBREJEN0ZBOUQzNkY4MDM2?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2N2k1NTc4ODY4QTA1MzVDNjVF?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2OGk1NkNGQzE5RDlBN0Q3NTA4?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc2OWlDQzI1REE0N0QyMzJFNzND?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3MGk2QUMwMkY4NzE5MDcyNURG?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3MmkzMkZFQjk2QjNBMkFCMzI0?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3M2k3MDcyNkRGMzE1RTVEQkNG?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NGkyOTk0NDdDRUEwMTQ2OTg5?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NWlDRTM5QjI0RjYyNjlEQTM4?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3NmkxRTA0MkJDNDYxRDgzOTY2?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3N2k4MTRGNzE3M0JDQUUyQkVG?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3OGk4MEE0RDQ2NTYxQzJFQjVG?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc3OWlGODFFRUUwRjg0OTU2NUNF?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc4MGkxM0NGNjcxNzlDQURFNjgy?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTk3OTMzLTYzMDc4MWk5MjBDQzgwMThBNDEzMTU5?revision=2\"}"}}],"totalCount":20,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4191726":{"__typename":"Conversation","id":"conversation:4191726","topic":{"__typename":"BlogTopicMessage","uid":4191726},"lastPostingActivityTime":"2024-09-02T01:16:15.893-07:00","solved":false},"User:user:2076234":{"__typename":"User","uid":2076234,"login":"Minseok_Song","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMDc2MjM0LTUyMTI2MmlDRjAzQ0Q1OUIwNDRFOTJB"},"id":"user:2076234"},"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},"BlogTopicMessage:message:4191726":{"__typename":"BlogTopicMessage","subject":"Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio","conversation":{"__ref":"Conversation:conversation:4191726"},"id":"message:4191726","revisionNum":46,"uid":4191726,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2076234"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \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":"","metrics":{"__typename":"MessageMetrics","views":20289},"postTime":"2024-07-18T00:00:00.041-07:00","lastPublishTime":"2024-09-02T01:16:15.893-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow in Azure AI Studio \n \n \n Introduction \n \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. \n \n \n Note\n Unlike the previous tutorial, Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow: Step-by-Step Guide, which involved running code locally, this tutorial focuses entirely on fine-tuning and integrating your model within the Azure AI / ML Studio. \n \n \n \n Here is an overview of this tutorial. \n \n \n \n \n \n Note\n For more detailed information and to explore additional resources about Phi-3, please visit the Phi-3CookBook. \n \n \n \n Prerequisites \n \n Python \n Azure subscription \n Visual Studio Code \n \n \n Table of Contents \n 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 Type azure machine learning in the search bar at the top of the portal page and select Azure Machine Learning from the options that appear. \n \n \n \n \n Select + Create from the navigation menu. \n \n \n Select New workspace from the navigation menu. \n \n \n \n \n \n Perform the following tasks: \n \n Select your Azure Subscription. \n Select the Resource group to use (create a new one if needed). \n Enter Workspace Name. It must be a unique value. \n Select the Region you'd like to use. \n Select the Storage account to use (create a new one if needed). \n Select the Key vault to use (create a new one if needed). \n Select the Application insights to use (create a new one if needed). \n Select the Container registry to use (create a new one if needed). \n \n \n \n \n \n Select Review + Create. \n \n \n Select Create. \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 the Standard_NC24ads_A100_v4 GPU, which requires a quota request. For deployment, you will use the Standard_NC6s_v3 GPU, 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. \n \n \n \n In this exercise, you will: \n \n Request GPU Quotas in your Azure Subscription \n \n \n Request GPU Quotas in Azure Subscription \n \n \n \n Visit Azure ML Studio. \n \n \n Perform the following tasks to request Standard NCADSA100v4 Family quota: \n \n \n Select Quota from the left side tab. \n \n \n Select the Virtual machine family to use. For example, select Standard NCADSA100v4 Family Cluster Dedicated vCPUs, which includes the Standard_NC24ads_A100_v4 GPU. \n \n \n Select the Request quota from the navigation menu. \n \n \n \n \n \n \n Inside the Request quota page, enter the New cores limit you'd like to use. For example, 24. \n \n \n Inside the Request quota page, select Submit to request the GPU quota. \n \n \n \n \n Perform the following tasks to request Standard NCSv3 Family quota: \n \n Select Quota from the left side tab. \n Select the Virtual machine family to use. For example, select Standard NCSv3 Family Cluster Dedicated vCPUs, which includes the Standard_NC6s_v3 GPU. \n Select the Request quota from the navigation menu. \n Inside the Request quota page, enter the New cores limit you'd like to use. For example, 24. \n Inside the Request quota page, select Submit to 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 Type managed identities in the search bar at the top of the portal page and select Managed Identities from 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 Azure Subscription. \n Select the Resource group to use (create a new one if needed). \n Select the Region you'd like to use. \n Enter the Name. It must be a unique value. \n \n \n \n \n \n \n \n \n \n \n \n Select Review + 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 Select Azure role assignments from the left side tab. \n \n \n Select +Add role assignment from the navigation menu. \n \n \n Inside Add role assignment page, Perform the following tasks: \n \n Select the Scope to Resource group. \n Select your Azure Subscription. \n Select the Resource group to use. \n Select the Role to Contributor. \n \n \n \n \n \n \n \n \n \n Select Save. \n \n \n \n Add Storage Blob Data Reader role assignment to Managed Identity \n \n \n \n Type azure storage accounts in the search bar at the top of the portal page and select Storage accounts from 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 Select Access Control (IAM) from the left side tab. \n Select + Add from the navigation menu. \n Select Add role assignment from 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, type Storage Blob Data Reader in the search bar and select Storage Blob Data Reader from the options that appear. \n \n \n \n \n \n \n Inside the Role page, select Next. \n \n \n Inside the Members page, select Assign access to Managed identity. \n \n \n Inside the Members page, select + Select members. \n \n \n Inside Select managed identities page, select your Azure Subscription. \n \n \n Inside Select managed identities page, select the Managed identity to Manage Identity. \n \n \n Inside Select managed identities page, select the Manage Identity that you created. For example, finetunephi-managedidentity. \n \n \n Inside Select managed identities page, select Select. \n \n \n \n \n \n \n Select Review + assign. \n \n \n \n \n Add AcrPull role assignment to Managed Identity \n \n \n \n Type container registries in the search bar at the top of the portal page and select Container registries from the options that appear. \n \n \n \n \n \n \n \n Select the container registry that associated with the Azure Machine Learning workspace. For example, finetunephicontainerregistries \n \n \n Perform the following tasks to navigate to Add role assignment page: \n \n Select Access Control (IAM) from the left side tab. \n Select + Add from the navigation menu. \n Select Add role assignment from the navigation menu. \n \n \n \n Inside Add role assignment page, Perform the following tasks: \n \n Inside the Role page, Type AcrPull in the search bar and select AcrPull from the options that appear. \n Inside the Role page, select Next. \n Inside the Members page, select Assign access to Managed identity. \n Inside the Members page, select + Select members. \n Inside Select managed identities page, select your Azure Subscription. \n Inside Select managed identities page, select the Managed identity to Manage Identity. \n Inside Select managed identities page, select the Manage Identity that you created. For example, finetunephi-managedidentity. \n Inside Select managed identities page, select Select. \n Select Review + assign. \n \n \n \n \n Set up the project \n \n To download the datasets needed for fine-tuning, you will set up a local environment. \n In this exercise, you will: \n \n \n Create a folder to work inside it. \n Create a virtual environment. \n Install the required packages. \n Create a download_dataset.py file to download the dataset. \n \n Create a folder to work inside it \n \n \n \n Open a terminal window and type the following command to create a folder named finetune-phi in the default path. \n mkdir finetune-phi\n \n \n \n Type the following command inside your terminal to navigate to the finetune-phi folder you created. \n cd finetune-phi\n \n \n \n \n Create a virtual environment \n \n \n \n Type the following command inside your terminal to create a virtual environment named .venv. \n python -m venv .venv\n \n \n \n Type the following command inside your terminal to activate the virtual environment. \n .venv\\Scripts\\activate.bat \n \n \n \n \n Note\n If it worked, you should see (.venv) before the command prompt. \n \n \n \n Install the required packages \n \n \n \n Type the following commands inside your terminal to install the required packages. \n pip install datasets==2.19.1\n \n \n \n \n Create donload_dataset.py \n \n \n Note\n \n Complete folder structure: \n └── YourUserName\n. └── finetune-phi\n. └── download_dataset.py\n \n \n \n \n \n \n Open Visual Studio Code. \n \n \n Select File from the menu bar. \n \n \n Select Open Folder. \n \n \n Select the finetune-phi folder that you created, which is located at C:\\Users\\yourUserName\\finetune-phi. \n \n \n \n \n \n \n \n \n In the left pane of Visual Studio Code, right-click and select New File to create a new file named download_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 the download_dataset.py file to download the ultrachat_200k datasets 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 the download_dataset.py file to download the datasets. \n Run the download_dataset.py file to download datasets to your local environment. \n \n \n Download your dataset using download_dataset.py \n \n \n \n Open the download_dataset.py file in Visual Studio Code. \n \n \n Add the following code into download_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 local finetune-phi/data directory. \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. \n \n Create computer cluster for fine-tuning \n \n \n Visit Azure ML Studio. \n \n \n Select Compute from the left side tab. \n \n \n Select Compute clusters from the navigation menu. \n \n \n Select + New. \n \n \n \n \n \n \n \n \n Perform the following tasks: \n \n \n Select the Region you'd like to use. \n \n \n Select the Virtual machine tier to Dedicated. \n \n \n Select the Virtual machine type to GPU. \n \n \n Select the Virtual machine size filter to Select from all options. \n \n \n Select the Virtual machine size to Standard_NC24ads_A100_v4. \n \n \n \n \n \n \n \n \n \n \n Select Next. \n \n \n Perform the following tasks: \n \n \n Enter Compute name. It must be a unique value. \n \n \n Select the Minimum number of nodes to 0. \n \n \n Select the Maximum number of nodes to 1. \n \n \n Select the Idle seconds before scale down to 120. \n \n \n \n \n \n \n \n \n \n \n Select Create. \n \n \n Fine-tune the Phi-3 model \n \n \n \n Visit Azure ML Studio. \n \n \n Select the Azure Macnine Learning workspace that you created. \n \n \n \n \n \n \n \n \n Perform the following tasks: \n \n Select Model catalog from the left side tab. \n Type phi-3-mini-4k in the search bar and select Phi-3-mini-4k-instruct from the options that appear. \n \n \n \n \n \n \n \n \n \n Select Fine-tune from the navigation menu. \n \n \n \n \n \n \n \n \n Perform the following tasks: \n \n \n Select Select task type to Chat completion. \n \n \n Select + Select data to upload Traning data. \n \n \n Select the Validation data upload type to Provide different validation data. \n \n \n Select + Select data to upload Validation 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 Select Finish. \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. \n Create an online endpoint. \n Deploy the registered fine-tuned Phi-3 model. \n \n \n Register the fine-tuned model \n \n \n \n Visit Azure ML Studio. \n \n \n Select the Azure Macnine Learning workspace that you created. \n \n \n \n \n \n \n \n \n Select Models from the left side tab. \n \n \n Select + Register. \n \n \n Select From 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 Select Next. \n \n \n Select Model type to MLflow. \n \n \n Ensure that Job output is selected; it should be automatically selected. \n \n \n \n \n \n \n \n \n Select Next. \n \n \n Select Register. \n \n \n \n \n \n \n \n \n You can view your registered model by navigating to the Models menu 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 Select Endpoints from the left side tab. \n \n \n Select Real-time endpoints from the navigation menu. \n \n \n \n \n \n \n \n \n Select Create. \n \n \n select the registered model that you created. \n \n \n \n \n \n \n \n \n Select Select. \n \n \n Perform the following tasks: \n \n \n Select Virtual machine to Standard_NC6s_v3. \n \n \n Select the Instance count you'd like to use. For example, 1. \n \n \n Select the Endpoint to New to create an endpoint. \n \n \n Enter Endpoint name. It must be a unique value. \n \n \n Enter Deployment name. It must be a unique value. \n \n \n \n \n \n \n \n \n \n \n Select Deploy. \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 Select Endpoints from 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 that Live traffic is set to 100%. If it is not, select Update traffic to 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. \n \n \n Visit Azure AI Studio. \n \n \n Select All hubs from the left side tab. \n \n \n Select + New hub from the navigation menu. \n \n \n \n \n \n \n \n \n Perform the following tasks: \n \n Enter Hub name. It must be a unique value. \n Select your Azure Subscription. \n Select the Resource group to use (create a new one if needed). \n Select the Location you'd like to use. \n Select the Connect Azure AI Services to use (create a new one if needed). \n Select Connect Azure AI Search to Skip connecting. \n \n \n \n \n \n \n \n \n \n Select Next. \n \n \n Create Azure AI Studio Project \n \n \n \n In the Hub that you created, select All projects from the left side tab. \n \n \n Select + New project from the navigation menu. \n \n \n \n \n \n \n \n \n Enter Project name. It must be a unique value. \n \n \n \n \n \n \n \n \n Select Create 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 \n \n \n \n Visit Azure ML Studio. \n \n \n Navigate to the Azure Machine learning workspace that you created. \n \n \n Select Endpoints from the left side tab. \n \n \n \n \n \n \n \n \n Select endpoint that you created. \n \n \n \n \n \n \n \n \n Select Consume from the navigation menu. \n \n \n Copy your REST endpoint and Primary key. \n \n \n \n \n \n \n \n \n Add the Custom Connection \n \n \n \n Visit Azure AI Studio. \n \n \n Navigate to the Azure AI Studio project that you created. \n \n \n In the Project that you created, select Settings from the left side tab. \n \n \n Select + New connection. \n \n \n \n \n \n \n \n \n Select Custom keys from 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, enter endpoint and paste the endpoint you copied from Azure ML Studio into the value field. \n Select + Add key value pairs again. \n For the key name, enter key and paste the key you copied from Azure ML Studio into the value field. \n After adding the keys, select is secret to prevent the key from being exposed. \n \n \n \n \n \n \n \n Select Add 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 Select Prompt flow from the left side tab. \n \n \n Select + Create from the navigation menu. \n \n \n \n \n \n \n \n \n Select Chat flow from the navigation menu. \n \n \n \n \n \n \n \n \n Enter Folder name to use. \n \n \n \n \n \n \n \n \n Select Create. \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: \n \n \n Select Raw file mode. \n \n \n Delete all existing code in the flow.dag.yaml file. \n \n \n Add the folling code to flow.dag.yaml file. \n inputs:\n input_data:\n type: string\n default: \"Who founded Microsoft?\"\n\noutputs:\n answer:\n type: string\n reference: ${integrate_with_promptflow.output}\n\nnodes:\n- name: integrate_with_promptflow\n type: python\n source:\n type: code\n path: integrate_with_promptflow.py\n inputs:\n input_data: ${inputs.input_data} \n \n Select Save. \n \n \n \n \n \n \n \n \n \n \n \n \n Add the following code to integrate_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 \n \n \n \n \n \n \n \n Note\n For more detailed information on using Prompt flow in Azure AI Studio, you can refer to Prompt flow in Azure AI Studio. \n \n \n \n \n Select Chat input, Chat output to 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 Select Start compute sessions to start Prompt flow. \n \n \n \n \n \n \n \n \n Select Validate and parse input to renew parameters. \n \n \n \n \n \n \n \n \n Select the Value of the connection to 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 Select Chat. \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: \n \n \n The Azure Machine learning resource. \n The Azure Machine learning model endpoint. \n The Azure AI Studio Project resource. \n The Azure AI Studio Prompt flow resource. \n \n \n Next Steps \n \n Documentation \n \n \n microsoft/Phi-3CookBook \n Azure/azure-llm-fine-tuning \n Azure Machine Learning documentation \n Azure AI Studio documentation \n Prompt flow documentation \n \n \n Training Content \n \n \n Prompt flow tutorials \n Introduction to Azure AI Studio \n \n \n Reference \n \n \n microsoft/Phi-3CookBook \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"33716","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"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}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4178612":{"__typename":"Conversation","id":"conversation:4178612","topic":{"__typename":"BlogTopicMessage","uid":4178612},"lastPostingActivityTime":"2024-09-02T01:15:43.376-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5Mmk3ODRDM0ZFODZENUIxMDQy?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5Mmk3ODRDM0ZFODZENUIxMDQy?revision=73","title":"00-1-architecture.png","associationType":"BODY","width":8008,"height":3172,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxMWlGRDVENDE3MDI3NzUxOUI4?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxMWlGRDVENDE3MDI3NzUxOUI4?revision=73","title":"01-1-type-azml.png","associationType":"BODY","width":873,"height":280,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxMmk5QThGRDE3M0MwNjJCNTg1?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxMmk5QThGRDE3M0MwNjJCNTg1?revision=73","title":"01-2-select-new-workspace.png","associationType":"BODY","width":967,"height":378,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTYwMzAzNGlBM0NFN0RBOEQ1NTFBMDBE?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTYwMzAzNGlBM0NFN0RBOEQ1NTFBMDBE?revision=73","title":"01-03-fill-AZML.png","associationType":"BODY","width":1495,"height":1210,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTYwMzAzNWkyOTEzOTFFRTNBN0U0OThB?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTYwMzAzNWkyOTEzOTFFRTNBN0U0OThB?revision=73","title":"01-04-request-quota.png","associationType":"BODY","width":1807,"height":817,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxNWk5MEMwN0NBNUFCRjAzQjdD?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxNWk5MEMwN0NBNUFCRjAzQjdD?revision=73","title":"02-7-type-managed-identities.png","associationType":"BODY","width":876,"height":279,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxNmlEMDRFNTRBRDY4RDM3QjUy?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxNmlEMDRFNTRBRDY4RDM3QjUy?revision=73","title":"02-8-select-create.png","associationType":"BODY","width":913,"height":216,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxN2lBQTdFNTgwN0U1MjBFNkEy?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxN2lBQTdFNTgwN0U1MjBFNkEy?revision=73","title":"02-9-fill-managed-identities-1.png","associationType":"BODY","width":1165,"height":691,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxOGlEM0Q2N0Y1QzA0RjNBMjEz?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxOGlEM0Q2N0Y1QzA0RjNBMjEz?revision=73","title":"02-0-fill-contributor-role.png","associationType":"BODY","width":1293,"height":751,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxOWlDQjc1QzgzMTBDRDAxMURF?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxOWlDQjc1QzgzMTBDRDAxMURF?revision=73","title":"02-1-type-storage-accounts.png","associationType":"BODY","width":868,"height":280,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyMWkyMzZGQTBCMTU5RDEyNTk0?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyMWkyMzZGQTBCMTU5RDEyNTk0?revision=73","title":"02-3-add-role.png","associationType":"BODY","width":1147,"height":325,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyMmk0NEVDMDBGQ0EwMzczMzMx?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyMmk0NEVDMDBGQ0EwMzczMzMx?revision=73","title":"02-4-select-data-reader-role.png","associationType":"BODY","width":1264,"height":541,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5M2kyNkI0ODdCQjY2QTEzMUY4?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5M2kyNkI0ODdCQjY2QTEzMUY4?revision=73","title":"02-5-select-managed-identity.png","associationType":"BODY","width":1551,"height":757,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNGk1NkY3REU5QUQ1MTcyMTA4?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNGk1NkY3REU5QUQ1MTcyMTA4?revision=73","title":"02-10-type-container-registries.png","associationType":"BODY","width":871,"height":280,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNWk3RDQ2MkNFOTA4NTUxNzkx?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNWk3RDQ2MkNFOTA4NTUxNzkx?revision=73","title":"04-1-open-project-folder.png","associationType":"BODY","width":985,"height":270,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNmkwODBGNDlBRkM4Mjg2QTA1?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNmkwODBGNDlBRkM4Mjg2QTA1?revision=73","title":"04-2-create-new-file.png","associationType":"BODY","width":967,"height":295,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyN2lBRDU1RjIyMDFDMUVDNTgz?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyN2lBRDU1RjIyMDFDMUVDNTgz?revision=73","title":"05-3-type-subscriptions.png","associationType":"BODY","width":870,"height":279,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzMGk1RjFENDZEOTY3RDlDRjY2?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzMGk1RjFENDZEOTY3RDlDRjY2?revision=73","title":"05-4-find-subscriptionid.png","associationType":"BODY","width":1051,"height":265,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzNWkzMjczQzFEM0I1QUM1RUEz?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzNWkzMjczQzFEM0I1QUM1RUEz?revision=73","title":"05-5-find-AZML-name.png","associationType":"BODY","width":856,"height":274,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzMmkxRkNEMEZCRkVCQkY5MjdF?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzMmkxRkNEMEZCRkVCQkY5MjdF?revision=73","title":"05-6-find-AZML-resourcegroup.png","associationType":"BODY","width":856,"height":274,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5NWlFNzU0Q0U2N0UwODMxNDZB?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5NWlFNzU0Q0U2N0UwODMxNDZB?revision=73","title":"05-9-find-uai.png","associationType":"BODY","width":2254,"height":468,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzOGlBOEY2MThDMEUyMTFCRDVD?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzOGlBOEY2MThDMEUyMTFCRDVD?revision=73","title":"07-1-azlogin.png","associationType":"BODY","width":1639,"height":421,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzOWk4MTc3RjEzQjE2OTJGRDcx?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzOWk4MTc3RjEzQjE2OTJGRDcx?revision=73","title":"07-1-az-login.png","associationType":"BODY","width":1698,"height":441,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTg0MGk5NTQyREQ0OUExRTg3OUJB?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTg0MGk5NTQyREQ0OUExRTg3OUJB?revision=73","title":"07-2-type-code.png","associationType":"BODY","width":988,"height":588,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTg0MWlEM0NFQTA0NDBCRUQ2Qjgx?revision=73\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTg0MWlEM0NFQTA0NDBCRUQ2Qjgx?revision=73","title":"07-3-select-account.png","associationType":"BODY","width":1594,"height":592,"altText":null},"BlogTopicMessage:message:4178612":{"__typename":"BlogTopicMessage","subject":"Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow: Step-by-Step Guide","conversation":{"__ref":"Conversation:conversation:4178612"},"id":"message:4178612","revisionNum":73,"uid":4178612,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2076234"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n In this tutorial, you will learn how to fine-tune the Phi-3 model and integrate it with Prompt Flow. By leveraging Azure Machine Learning, and Prompt flow you will establish a workflow for deploying and utilizing custom AI models. \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":31311},"postTime":"2024-07-03T00:00:00.052-07:00","lastPublishTime":"2024-09-02T01:15:43.376-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Fine-Tune and Integrate Custom Phi-3 Models with Prompt Flow: Step-by-Step Guide \n \n \n \n \n Introduction \n \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 it with Prompt flow. By leveraging Azure Machine Learning, and Prompt flow 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: Set up an Azure Machine Learning workspace, which serves as the hub for managing machine learning experiments and models. \n \n \n Request GPU quotas: Request GPU quotas in your Azure subscription to ensure sufficient resources for model fine-tuning. \n \n \n Add role assignment: 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 \n \n Set up the project: 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 \n \n Series 2: Fine-tune and Deploy the Phi-3 model \n \n \n \n Define fine-tuning process: Add code to the fine_tune.py file to define the fine-tuning process, including data loading, preprocessing, and training configurations. \n \n \n Fine-tune the Phi-3 model: Add code to and run the setup_ml.py file to set up the compute environment, define the fine-tuning job, and submit it to Azure Machine Learning. \n \n \n Deploy the Fine-tuned model: Once fine-tuning is complete, Add code to the deploy_model.py file to register the fine-tuned model in Azure Machine Learning, create an online endpoint, and deploy the model for real-time inference. \n \n \n \n Series 3: Integrate the custom Phi-3 model with Prompt flow \n \n \n \n Build Prompt flow: Add code to the flow.dag.yml file to build a flow. \n \n \n Integrate with Prompt flow: Add code to integrate_with_promptflow file to integrate the custom Phi-3 model with Prompt flow. \n \n \n \n Here is an overview of this tutorial. \n \n \n \n \n \n Note\n Microsoft has released the Phi-3.5 models, featuring enhanced multi-language support, improved vision capabilities, and advanced Intelligence Mixture of Experts (MOEs). Although this tutorial primarily focuses on Phi-3, you can apply the same steps to fine-tune and integrate the Phi-3.5 model for even better performance. A tip on how to modify the fine_tune.py script to switch to the Phi-3.5 model is included below at Fine-tune the Phi-3 model section. \n \n For more detailed information and to explore additional resources about Phi-3 and Phi-3.5, please visit the Phi-3CookBook. \n \n \n \n Prerequisites \n \n Python \n Azure subscription \n Visual Studio Code \n Azure CLI \n \n \n Table of Contents \n \n Series 1: Set Up Azure resources and prepare for fine-tuning \n \n \n Create Azure Machine Learning workspace \n Request GPU quotas in Azure subscription \n Set up the project and install the libraries \n Set up project files in Visual Studio Code \n Prepare dataset for fine-tuning \n \n \n Series 2: Fine-tune and Deploy the Phi-3 model \n \n \n Fine-tune the Phi-3 model \n Deploy the fine-tuned Phi-3 model \n \n \n Series 3: Integrate the custom Phi-3 model with Prompt flow \n \n \n Integrate the custom Phi-3 model with Prompt flow \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 In this exercise, you will: \n \n Create an Azure Machine Learning Workspace. \n \n \n Create an Azure Machine Learning Workspace \n \n \n \n Type azure machine learning in the search bar at the top of the portal page and select Azure Machine Learning from the options that appear. \n \n \n \n \n \n \n \n \n Select + Create from the navigation menu. \n \n \n Select New workspace from the navigation menu. \n \n \n \n \n \n \n \n \n Perform the following tasks: \n \n Select your Azure Subscription. \n Select the Resource group to use (create a new one if needed). \n Enter Workspace Name. It must be a unique value. \n Select the Region you'd like to use. \n Select the Storage account to use (create a new one if needed). \n Select the Key vault to use (create a new one if needed). \n Select the Application insights to use (create a new one if needed). \n Select the Container registry to use (create a new one if needed). \n \n \n \n \n \n \n \n Tip\n When you create or use a Storage account in Azure Machine Learning, a container named \"azureml\" is automatically created within the Storage account. This container is used for storing model artifacts, training outputs, and other data generated during the machine learning process. In this tutorial, you will use the \"azureml\" container to manage and store all the necessary files and outputs related to our machine learning workflows. \n \n \n \n \n \n \n Select Review + Create. \n \n \n Select Create. \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 the Standard_NC24ads_A100_v4 GPU, which requires a quota request. For deployment, you will use the Standard_E4s_v3 CPU, which does not require 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. \n For those using benefit subscriptions (such as Visual Studio Enterprise Subscription) or those looking to quickly test the fine-tuning and deployment process, this tutorial also provides guidance for fine-tuning with a minimal dataset using a CPU. However, it is important to note that fine-tuning results are significantly better when using a GPU with larger datasets. \n \n \n \n In this exercise, you will: \n \n Request GPU Quotas in your Azure Subscription \n \n \n Request GPU Quotas in Azure Subscription \n \n \n \n Visit Azure ML Studio. \n \n \n Perform the following tasks to request Standard NCADSA100v4 Family quota: \n \n Select Quota from the left side tab. \n \n Select the Virtual machine family to use. For example, select Standard NCADSA100v4 Family Cluster Dedicated vCPUs, which includes the Standard_NC24ads_A100_v4 GPU. \n \n \n Select the Request quota from the navigation menu. \n \n \n \n \n \n \n \n \n Inside the Request quota page, enter the New cores limit you'd like to use. For example, 24. \n \n \n Inside the Request quota page, select Submit to request the GPU quota. \n \n \n \n \n \n Note\n You can select the appropriate GPU or CPU for your needs by referring to Sizes for Virtual Machines in Azure document. \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 \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 Create User Assigned Managed Identity(UAI) \n \n \n \n Type managed identities in the search bar at the top of the portal page and select Managed Identities from the options that appear. \n \n \n \n \n \n \n \n \n Select + Create. \n \n \n \n \n \n \n \n \n Perform the following tasks to navigate to Add role assignment page: \n \n Select your Azure Subscription. \n Select the Resource group to use (create a new one if needed). \n Select the Region you'd like to use. \n Enter the Name. It must be a unique value. \n \n \n \n \n \n \n \n \n \n Select Review + 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 Select Azure role assignments from the left side tab. \n \n \n Select +Add role assignment from the navigation menu. \n \n \n Inside Add role assignment page, Perform the following tasks: \n \n Select the Scope to Resource group. \n Select your Azure Subscription. \n Select the Resource group to use. \n Select the Role to Contributor. \n \n \n \n \n \n \n \n \n \n Select Save. \n \n \n \n Add Storage Blob Data Reader role assignment to Managed Identity \n \n \n \n Type azure storage accounts in the search bar at the top of the portal page and select Storage accounts from the options that appear. \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 Select Access Control (IAM) from the left side tab. \n Select + Add from the navigation menu. \n Select Add role assignment from the navigation menu. \n \n \n \n \n \n \n \n \n \n Inside Add role assignment page, Perform the following tasks: \n \n \n Inside the Role page, type Storage Blob Data Reader in the search bar and select Storage Blob Data Reader from the options that appear. \n \n \n \n \n \n \n \n Inside the Role page, select Next. \n \n \n Inside the Members page, select Assign access to Managed identity. \n \n \n Inside the Members page, select + Select members. \n \n \n Inside Select managed identities page, select your Azure Subscription. \n \n \n Inside Select managed identities page, select the Managed identity to Manage Identity. \n \n \n Inside Select managed identities page, select the Manage Identity that you created. For example, finetunephi-managedidentity. \n \n \n Inside Select managed identities page, select Select. \n \n \n \n \n \n \n \n Select Review + assign. \n \n \n \n \n \n Add AcrPull role assignment to Managed Identity \n \n \n \n Type container registries in the search bar at the top of the portal page and select Container registries from the options that appear. \n \n \n \n \n \n \n \n \n Select the container registry that associated with the Azure Machine Learning workspace. For example, finetunephicontainerregistries \n \n \n Perform the following tasks to navigate to Add role assignment page: \n \n Select Access Control (IAM) from the left side tab. \n Select + Add from the navigation menu. \n Select Add role assignment from the navigation menu. \n \n \n \n Inside Add role assignment page, Perform the following tasks: \n \n Inside the Role page, Type AcrPull in the search bar and select AcrPull from the options that appear. \n Inside the Role page, select Next. \n Inside the Members page, select Assign access to Managed identity. \n Inside the Members page, select + Select members. \n Inside Select managed identities page, select your Azure Subscription. \n Inside Select managed identities page, select the Managed identity to Manage Identity. \n Inside Select managed identities page, select the Manage Identity that you created. For example, finetunephi-managedidentity. \n Inside Select managed identities page, select Select. \n Select Review + assign. \n \n \n \n \n Set up the project and install the libraries \n \n Now, you will create a folder to work in and set up a virtual environment to develop a program. \n In this exercise, you will \n \n Create a folder to work inside it. \n Create a virtual environment. \n Install the required packages. \n \n \n Create a folder to work inside it \n \n \n \n Open a terminal window and type the following command to create a folder named finetune-phi in the default path. \n mkdir finetune-phi\n \n \n \n Type the following command inside your terminal to navigate to the finetune-phi folder you created. \n cd finetune-phi\n \n \n \n \n Create a virtual environment \n \n \n \n Type the following command inside your terminal to create a virtual environment named .venv. \n python -m venv .venv\n \n \n \n Type the following command inside your terminal to activate the virtual environment. \n .venv\\Scripts\\activate.bat\n \n \n \n \n \n Note\n If it worked, you should see (.venv) before the command prompt. \n \n \n \n Install the required packages \n \n \n \n Type the following commands inside your terminal to install the required packages. \n pip install datasets==2.19.1\npip install transformers==4.41.1\npip install azure-ai-ml==1.16.0\npip install torch==2.3.1\npip install trl==0.9.4\npip install promptflow==1.12.0 \n \n \n \n Set up project files in Visual Studio Code \n \n In this exercise, you will create the essential files for our project. These files include scripts for downloading the dataset, setting up the Azure Machine Learning environment, fine-tuning the Phi-3 model, and deploying the fine-tuned model. You will also create a conda.yml file to set up the fine-tuning environment. \n In this exercise, you will: \n \n Create a download_dataset.py file to download the dataset. \n Create a setup_ml.py file to set up the Azure Machine Learning environment. \n Create a fine_tune.py file in the finetuning_dir folder to fine-tune the Phi-3 model using the dataset. \n Create a conda.yml file to setup fine-tuning environment. \n Create a deploy_model.py file to deploy the fine-tuned model. \n Create a integrate_with_promptflow.py file, to integrate the fine-tuned model and execute the model using Prompt flow. \n Create a flow.dag.yml file, to set up the workflow structure for Prompt flow. \n Create a config.py file to enter Azure information. \n \n \n Note\n Complete folder structure: \n └── YourUserName\n. └── finetune-phi\n. ├── finetuning_dir\n. │ └── fine_tune.py\n. ├── conda.yml\n. ├── config.py\n. ├── deploy_model.py\n. ├── download_dataset.py\n. ├── flow.dag.yml\n. ├── integrate_with_promptflow.py\n. └── setup_ml.py\n \n \n \n \n Create Project Files \n \n \n \n Open Visual Studio Code. \n \n \n Select File from the menu bar. \n \n \n Select Open Folder. \n \n \n Select the finetune-phi folder that you created, which is located at C:\\Users\\yourUserName\\finetune-phi. \n \n \n \n \n \n \n \n \n In the left pane of Visual Studio Code, right-click and select New File to create a new file named download_dataset.py. \n \n \n In the left pane of Visual Studio Code, right-click and select New File to create a new file named setup_ml.py. \n \n \n In the left pane of Visual Studio Code, right-click and select New File to create a new file named deploy_model.py. \n \n \n \n \n \n \n \n \n In the left pane of Visual Studio Code, right-click and select New Folder to create a new forder named finetuning_dir. \n \n \n In the finetuning_dir folder, create a new file named fine_tune.py. \n \n \n Create and Configure conda.yml file \n \n \n In the left pane of Visual Studio Code, right-click and select New File to create a new file named conda.yml. \n \n \n Add the following code to the conda.yml file to set up the fine-tuning environment for the Phi-3 model. \n name: phi-3-training-env\nchannels:\n - defaults\n - conda-forge\ndependencies:\n - python=3.10\n - pip\n - numpy<2.0\n - pip:\n - torch==2.4.0\n - torchvision==0.19.0\n - trl==0.8.6\n - transformers==4.41\n - datasets==2.21.0\n - azureml-core==1.57.0\n - azure-storage-blob==12.19.0\n - azure-ai-ml==1.16\n - azure-identity==1.17.1\n - accelerate==0.33.0\n - mlflow==2.15.1\n - azureml-mlflow==1.57.0 \n \n \n \n Create and Configure config.py file \n \n \n \n In the left pane of Visual Studio Code, right-click and select New File to create a new file named config.py. \n \n \n Add the following code to the config.py file to include your Azure information. \n # Azure settings\nAZURE_SUBSCRIPTION_ID = \"your_subscription_id\"\nAZURE_RESOURCE_GROUP_NAME = \"your_resource_group_name\" # \"TestGroup\"\n\n# Azure Machine Learning settings\nAZURE_ML_WORKSPACE_NAME = \"your_workspace_name\" # \"finetunephi-workspace\"\n\n# Azure Managed Identity settings\nAZURE_MANAGED_IDENTITY_CLIENT_ID = \"your_azure_managed_identity_client_id\"\nAZURE_MANAGED_IDENTITY_NAME = \"your_azure_managed_identity_name\" # \"finetunephi-mangedidentity\"\nAZURE_MANAGED_IDENTITY_RESOURCE_ID = f\"/subscriptions/{AZURE_SUBSCRIPTION_ID}/resourceGroups/{AZURE_RESOURCE_GROUP_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{AZURE_MANAGED_IDENTITY_NAME}\"\n\n# Dataset file paths\nTRAIN_DATA_PATH = \"data/train_data.jsonl\"\nTEST_DATA_PATH = \"data/test_data.jsonl\"\n\n# Fine-tuned model settings\nAZURE_MODEL_NAME = \"your_fine_tuned_model_name\" # \"finetune-phi-model\"\nAZURE_ENDPOINT_NAME = \"your_fine_tuned_model_endpoint_name\" # \"finetune-phi-endpoint\"\nAZURE_DEPLOYMENT_NAME = \"your_fine_tuned_model_deployment_name\" # \"finetune-phi-deployment\"\n\nAZURE_ML_API_KEY = \"your_fine_tuned_model_api_key\"\nAZURE_ML_ENDPOINT = \"your_fine_tuned_model_endpoint_uri\" # \"https://{your-endpoint-name}.{your-region}.inference.ml.azure.com/score\" \n \n \n Add Azure Environment Variables \n \n \n \n Perform the following tasks to add the Azure Subscription ID: \n \n Type subscriptions in the search bar at the top of the portal page and select Subscriptions from the options that appear. \n \n \n \n \n \n \n Select the Azure Subscription you are currently using. \n Copy and paste your Subscription ID into the config.py file. \n \n \n \n \n Perform the following tasks to add the Azure Workspace Name: \n \n Navigate to the Azure Machine Learning resource that you created. \n Copy and paste your account name into the config.py file. \n \n \n \n \n Perform the following tasks to add the Azure Resource Group Name: \n \n Navigate to the Azure Machine Learning resource that you created. \n Copy and paste your Azure Resource Group Name into the config.py file. \n \n \n \n \n Perform the following tasks to add the Azure Managed Identity name \n \n Navigate to the Managed Identities resource that you created. \n Copy and paste your Azure Managed Identity name into the config.py file. \n \n \n \n \n Prepare Dataset for Fine-tuning \n \n In this exercise, you will run the download_dataset.py file to download the ultrachat_200k datasets 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 Add code to the download_dataset.py file to download the datasets. \n Run the download_dataset.py file to download datasets to your local environment. \n \n \n Download your dataset using download_dataset.py \n \n \n \n Open the download_dataset.py file in Visual Studio Code. \n \n \n Add the following code into download_dataset.py. \n import json\nimport os\nfrom datasets import load_dataset\nfrom config import (\n TRAIN_DATA_PATH,\n TEST_DATA_PATH)\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, TRAIN_DATA_PATH)\n \n # Save the test dataset to a separate JSONL file\n save_dataset_to_jsonl(test_dataset, TEST_DATA_PATH)\n\nif __name__ == \"__main__\":\n main()\n \n \n \n Tip\n Guidance for fine-tuning with a minimal dataset using a CPU \n If you want to use a CPU for fine-tuning, this approach is ideal for those with benefit subscriptions (such as Visual Studio Enterprise Subscription) or to quickly test the fine-tuning and deployment process. \n Replace dataset = load_and_split_dataset(\"HuggingFaceH4/ultrachat_200k\", 'default', 'train_sft[:1%]') with dataset = load_and_split_dataset(\"HuggingFaceH4/ultrachat_200k\", 'default', 'train_sft[:10]') \n \n \n \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 local finetune-phi/data directory. \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 ( train_sft[: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 \n \n Fine-tune the Phi-3 model \n \n In this exercise, you will fine-tune the Phi-3 model using the provided dataset. First, you will define the fine-tuning process in the fine_tune.py file. Then, you will configure the Azure Machine Learning environment and initiate the fine-tuning process by running the setup_ml.py file. This script ensures that the fine-tuning occurs within the Azure Machine Learning environment. \n By running setup_ml.py, you will run the fine-tuning process in the Azure Machine Learning environment. \n In this exercise, you will: \n \n Set up Azure CLI to authenticate environment \n Add code to the fine_tune.py file to fine-tune the model. \n Add code to and run the setup_ml.py file to initiate the fine-tuning process in Azure Machine Learning. \n Run the setup_ml.py file to fine-tune the Phi-3 model using Azure Machine Learning. \n \n \n Set up Azure CLI \n \n You need to set up Azure CLI to authenticate your environment. Azure CLI allows you to manage Azure resources directly from the command line and provides the credentials necessary for Azure Machine Learning to access these resources. To get started install Azure CLI \n \n \n Open a terminal window and type the following command to log in to your Azure account. \n az login\n \n \n \n Select your Azure account to use. \n \n \n Select your Azure subscription to use. \n \n \n \n \n \n \n \n \n \n Tip\n Having trouble signing in to Azure? Try using a device code \n \n \n Open a terminal window and type the following command to log in to your Azure account. \n az login --use-device-code \n \n \n \n Visit the website displayed in the terminal window and enter the provided code on that site. \n \n \n \n Inside the website, select Next. \n \n \n Inside the website, select the account to use in this tutorial \n \n \n Inside the website, select continue to complete login. \n After successful login, go back to your terminal and select your Azure subscription to use. \n \n \n \n \n \n \n Add code to the fine_tune.py file \n \n \n \n Navigate to the finetuning_dir folder and Open the fine_tune.py file in Visual Studio Code. \n \n \n Add the following code into fine_tune.py. \n import argparse\nimport sys\nimport logging\nimport os\nfrom datasets import load_dataset\nimport torch\nimport mlflow\nfrom transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments\nfrom trl import SFTTrainer\n\n# To avoid the INVALID_PARAMETER_VALUE error in MLflow, disable MLflow integration\nos.environ[\"DISABLE_MLFLOW_INTEGRATION\"] = \"True\"\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 handlers=[logging.StreamHandler(sys.stdout)],\n level=logging.WARNING\n)\nlogger = logging.getLogger(__name__)\n\ndef initialize_model_and_tokenizer(model_name, model_kwargs):\n \"\"\"\n Initialize the model and tokenizer with the given pretrained model name and arguments.\n \"\"\"\n model = AutoModelForCausalLM.from_pretrained(model_name, **model_kwargs)\n tokenizer = AutoTokenizer.from_pretrained(model_name)\n tokenizer.model_max_length = 2048\n tokenizer.pad_token = tokenizer.unk_token\n tokenizer.pad_token_id = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)\n tokenizer.padding_side = 'right'\n return model, tokenizer\n\ndef apply_chat_template(example, tokenizer):\n \"\"\"\n Apply a chat template to tokenize messages in the example.\n \"\"\"\n messages = example[\"messages\"]\n if messages[0][\"role\"] != \"system\":\n messages.insert(0, {\"role\": \"system\", \"content\": \"\"})\n example[\"text\"] = tokenizer.apply_chat_template(\n messages, tokenize=False, add_generation_prompt=False\n )\n return example\n\ndef load_and_preprocess_data(train_filepath, test_filepath, tokenizer):\n \"\"\"\n Load and preprocess the dataset.\n \"\"\"\n train_dataset = load_dataset('json', data_files=train_filepath, split='train')\n test_dataset = load_dataset('json', data_files=test_filepath, split='train')\n column_names = list(train_dataset.features)\n\n train_dataset = train_dataset.map(\n apply_chat_template,\n fn_kwargs={\"tokenizer\": tokenizer},\n num_proc=10,\n remove_columns=column_names,\n desc=\"Applying chat template to train dataset\",\n )\n\n test_dataset = test_dataset.map(\n apply_chat_template,\n fn_kwargs={\"tokenizer\": tokenizer},\n num_proc=10,\n remove_columns=column_names,\n desc=\"Applying chat template to test dataset\",\n )\n\n return train_dataset, test_dataset\n\ndef train_and_evaluate_model(train_dataset, test_dataset, model, tokenizer, output_dir):\n \"\"\"\n Train and evaluate the model.\n \"\"\"\n training_args = TrainingArguments(\n bf16=True,\n do_eval=True,\n output_dir=output_dir,\n eval_strategy=\"epoch\",\n learning_rate=5.0e-06,\n logging_steps=20,\n lr_scheduler_type=\"cosine\",\n num_train_epochs=3,\n overwrite_output_dir=True,\n per_device_eval_batch_size=4,\n per_device_train_batch_size=4,\n remove_unused_columns=True,\n save_steps=500,\n seed=0,\n gradient_checkpointing=True,\n gradient_accumulation_steps=1,\n warmup_ratio=0.2,\n )\n\n trainer = SFTTrainer(\n model=model,\n args=training_args,\n train_dataset=train_dataset,\n eval_dataset=test_dataset,\n max_seq_length=2048,\n dataset_text_field=\"text\",\n tokenizer=tokenizer,\n packing=True\n )\n\n train_result = trainer.train()\n trainer.log_metrics(\"train\", train_result.metrics)\n\n mlflow.transformers.log_model(\n transformers_model={\"model\": trainer.model, \"tokenizer\": tokenizer},\n artifact_path=output_dir,\n )\n\n tokenizer.padding_side = 'left'\n eval_metrics = trainer.evaluate()\n eval_metrics[\"eval_samples\"] = len(test_dataset)\n trainer.log_metrics(\"eval\", eval_metrics)\n\ndef main(train_file, eval_file, model_output_dir):\n \"\"\"\n Main function to fine-tune the model.\n \"\"\"\n model_kwargs = {\n \"use_cache\": False,\n \"trust_remote_code\": True,\n \"torch_dtype\": torch.bfloat16,\n \"device_map\": None,\n \"attn_implementation\": \"eager\"\n }\n \n pretrained_model_name = \"microsoft/Phi-3.5-mini-instruct\"\n # pretrained_model_name = \"microsoft/Phi-3-mini-4k-instruct\"\n\n with mlflow.start_run():\n model, tokenizer = initialize_model_and_tokenizer(pretrained_model_name, model_kwargs)\n train_dataset, test_dataset = load_and_preprocess_data(train_file, eval_file, tokenizer)\n train_and_evaluate_model(train_dataset, test_dataset, model, tokenizer, model_output_dir)\n\nif __name__ == \"__main__\":\n parser = argparse.ArgumentParser()\n parser.add_argument(\"--train-file\", type=str, required=True, help=\"Path to the training data\")\n parser.add_argument(\"--eval-file\", type=str, required=True, help=\"Path to the evaluation data\")\n parser.add_argument(\"--model_output_dir\", type=str, required=True, help=\"Directory to save the fine-tuned model\")\n args = parser.parse_args()\n main(args.train_file, args.eval_file, args.model_output_dir)\n \n \n \n \n Save and close the fine_tune.py file. \n \n \n \n \n Tip\n You can fine-tune Phi-3.5 model \n In fine_tune.py file, you can change the pretrained_model_name from \"microsoft/Phi-3-mini-4k-instruct\" to any model you want to fine-tune. For example, if you change it to \"microsoft/Phi-3.5-mini-instruct\" , you'll be using the Phi-3.5-mini-instruct model for fine-tuning. To find and use the model name you prefer, visit Hugging Face, search for the model you're interested in, and then copy and paste its name into the pretrained_model_name field in your script. \n \n \n \n Add code to the setup_ml.py file \n \n \n \n Open the setup_ml.py file in Visual Studio Code. \n \n \n Add the following code into setup_ml.py. \n import logging\nfrom azure.ai.ml import MLClient, command, Input\nfrom azure.ai.ml.entities import Environment, AmlCompute\nfrom azure.identity import AzureCliCredential\nfrom config import (\n AZURE_SUBSCRIPTION_ID,\n AZURE_RESOURCE_GROUP_NAME,\n AZURE_ML_WORKSPACE_NAME,\n TRAIN_DATA_PATH,\n TEST_DATA_PATH\n)\n\n# Constants\n\n# Uncomment the following lines to use a CPU instance for training\n# COMPUTE_INSTANCE_TYPE = \"Standard_E16s_v3\" # cpu\n# COMPUTE_NAME = \"cpu-e16s-v3\"\n# DOCKER_IMAGE_NAME = \"mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest\"\n\n# Uncomment the following lines to use a GPU instance for training\nCOMPUTE_INSTANCE_TYPE = \"Standard_NC24ads_A100_v4\"\nCOMPUTE_NAME = \"gpu-nc24s-a100-v4\"\nDOCKER_IMAGE_NAME = \"mcr.microsoft.com/azureml/curated/acft-hf-nlp-gpu:59\"\n\nCONDA_FILE = \"conda.yml\"\nLOCATION = \"eastus2\" # Replace with the location of your compute cluster\nFINETUNING_DIR = \"./finetuning_dir\" # Path to the fine-tuning script\nTRAINING_ENV_NAME = \"phi-3-training-environment\" # Name of the training environment\nMODEL_OUTPUT_DIR = \"./model_output\" # Path to the model output directory in azure ml\n\n# Logging setup to track the process\nlogger = logging.getLogger(__name__)\nlogging.basicConfig(\n format=\"%(asctime)s - %(levelname)s - %(name)s - %(message)s\",\n datefmt=\"%Y-%m-%d %H:%M:%S\",\n level=logging.WARNING\n)\n\ndef get_ml_client():\n \"\"\"\n Initialize the ML Client using Azure CLI credentials.\n \"\"\"\n credential = AzureCliCredential()\n return MLClient(credential, AZURE_SUBSCRIPTION_ID, AZURE_RESOURCE_GROUP_NAME, AZURE_ML_WORKSPACE_NAME)\n\ndef create_or_get_environment(ml_client):\n \"\"\"\n Create or update the training environment in Azure ML.\n \"\"\"\n env = Environment(\n image=DOCKER_IMAGE_NAME, # Docker image for the environment\n conda_file=CONDA_FILE, # Conda environment file\n name=TRAINING_ENV_NAME, # Name of the environment\n )\n return ml_client.environments.create_or_update(env)\n\ndef create_or_get_compute_cluster(ml_client, compute_name, COMPUTE_INSTANCE_TYPE, location):\n \"\"\"\n Create or update the compute cluster in Azure ML.\n \"\"\"\n try:\n compute_cluster = ml_client.compute.get(compute_name)\n logger.info(f\"Compute cluster '{compute_name}' already exists. Reusing it for the current run.\")\n except Exception:\n logger.info(f\"Compute cluster '{compute_name}' does not exist. Creating a new one with size {COMPUTE_INSTANCE_TYPE}.\")\n compute_cluster = AmlCompute(\n name=compute_name,\n size=COMPUTE_INSTANCE_TYPE,\n location=location,\n tier=\"Dedicated\", # Tier of the compute cluster\n min_instances=0, # Minimum number of instances\n max_instances=1 # Maximum number of instances\n )\n ml_client.compute.begin_create_or_update(compute_cluster).wait() # Wait for the cluster to be created\n return compute_cluster\n\ndef create_fine_tuning_job(env, compute_name):\n \"\"\"\n Set up the fine-tuning job in Azure ML.\n \"\"\"\n return command(\n code=FINETUNING_DIR, # Path to fine_tune.py\n command=(\n \"python fine_tune.py \"\n \"--train-file ${{inputs.train_file}} \"\n \"--eval-file ${{inputs.eval_file}} \"\n \"--model_output_dir ${{inputs.model_output}}\"\n ),\n environment=env, # Training environment\n compute=compute_name, # Compute cluster to use\n inputs={\n \"train_file\": Input(type=\"uri_file\", path=TRAIN_DATA_PATH), # Path to the training data file\n \"eval_file\": Input(type=\"uri_file\", path=TEST_DATA_PATH), # Path to the evaluation data file\n \"model_output\": MODEL_OUTPUT_DIR\n }\n )\n\ndef main():\n \"\"\"\n Main function to set up and run the fine-tuning job in Azure ML.\n \"\"\"\n # Initialize ML Client\n ml_client = get_ml_client()\n\n # Create Environment\n env = create_or_get_environment(ml_client)\n \n # Create or get existing compute cluster\n create_or_get_compute_cluster(ml_client, COMPUTE_NAME, COMPUTE_INSTANCE_TYPE, LOCATION)\n\n # Create and Submit Fine-Tuning Job\n job = create_fine_tuning_job(env, COMPUTE_NAME)\n returned_job = ml_client.jobs.create_or_update(job) # Submit the job\n ml_client.jobs.stream(returned_job.name) # Stream the job logs\n \n # Capture the job name\n job_name = returned_job.name\n print(f\"Job name: {job_name}\")\n\nif __name__ == \"__main__\":\n main()\n \n \n \n \n Replace COMPUTE_INSTANCE_TYPE , COMPUTE_NAME , and LOCATION with your specific details. \n # Uncomment the following lines to use a GPU instance for training\nCOMPUTE_INSTANCE_TYPE = \"Standard_NC24ads_A100_v4\"\nCOMPUTE_NAME = \"gpu-nc24s-a100-v4\"\n...\nLOCATION = \"eastus2\" # Replace with the location of your compute cluster\n \n \n \n \n \n \n \n Tip\n Guidance for fine-tuning with a minimal dataset using a CPU \n \n If you want to use a CPU for fine-tuning, this approach is ideal for those with benefit subscriptions (such as Visual Studio Enterprise Subscription) or to quickly test the fine-tuning and deployment process. \n \n Open the setup_ml file. \n Replace COMPUTE_INSTANCE_TYPE , COMPUTE_NAME , and DOCKER_IMAGE_NAME with the following. If you do not have access to Standard_E16s_v3, you can use an equivalent CPU instance or request a new quota. \n Replace LOCATION with your specific details. \n \n \n # Uncomment the following lines to use a CPU instance for training\nCOMPUTE_INSTANCE_TYPE = \"Standard_E16s_v3\" # cpu\nCOMPUTE_NAME = \"cpu-e16s-v3\"\nDOCKER_IMAGE_NAME = \"mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest\"\nLOCATION = \"eastus2\" # Replace with the location of your compute cluster \n \n \n \n \n \n \n \n Type the following command to run the setup_ml.py script and start the fine-tuning process in Azure Machine Learning. \n python setup_ml.py\n \n \n \n In this exercise, you successfully fine-tuned the Phi-3 model using Azure Machine Learning. By running the setup_ml.py script, you have set up the Azure Machine Learning environment and initiated the fine-tuning process defined in fine_tune.py file. Please note that the fine-tuning process can take a considerable amount of time. After running the python setup_ml.py command, you need to wait for the process to complete. You can monitor the status of the fine-tuning job by following the link provided in the terminal to the Azure Machine Learning portal. 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 Set the model name, endpoint name, and deployment name for deployment. \n Register the fine-tuned model in the Azure Machine Learning workspace. \n Create an online endpoint. \n Deploy the registered fine-tuned Phi-3 model. \n \n Set the model name, endpoint name, and deployment name for deployment \n \n \n \n Open config.py file. \n \n \n Replace AZURE_MODEL_NAME = \"your_fine_tuned_model_name\" with the desired name for your model. \n \n \n Replace AZURE_ENDPOINT_NAME = \"your_fine_tuned_model_endpoint_name\" with the desired name for your endpoint. \n \n \n Replace AZURE_DEPLOYMENT_NAME = \"your_fine_tuned_model_deployment_name\" with the desired name for your deployment. \n \n \n Deploy the fine-tuned model \n \n Running the deploy_model.py file automates the entire deployment process. It registers the model, creates an endpoint, and executes the deployment based on the settings specified in the config.py file, which includes the model name, endpoint name, and deployment name. \n \n \n Open the deploy_model.py file in Visual Studio Code. \n \n \n Add the following code into deploy_model.py. \n import logging\nfrom azure.identity import AzureCliCredential\nfrom azure.ai.ml import MLClient\nfrom azure.ai.ml.entities import Model, ProbeSettings, ManagedOnlineEndpoint, ManagedOnlineDeployment, IdentityConfiguration, ManagedIdentityConfiguration, OnlineRequestSettings\nfrom azure.ai.ml.constants import AssetTypes\n\n# Configuration imports\nfrom config import (\n AZURE_SUBSCRIPTION_ID,\n AZURE_RESOURCE_GROUP_NAME,\n AZURE_ML_WORKSPACE_NAME,\n AZURE_MANAGED_IDENTITY_RESOURCE_ID,\n AZURE_MANAGED_IDENTITY_CLIENT_ID,\n AZURE_MODEL_NAME,\n AZURE_ENDPOINT_NAME,\n AZURE_DEPLOYMENT_NAME\n)\n\n# Constants\nJOB_NAME = \"your-job-name\"\nCOMPUTE_INSTANCE_TYPE = \"Standard_E4s_v3\"\n\ndeployment_env_vars = {\n \"SUBSCRIPTION_ID\": AZURE_SUBSCRIPTION_ID,\n \"RESOURCE_GROUP_NAME\": AZURE_RESOURCE_GROUP_NAME,\n \"UAI_CLIENT_ID\": AZURE_MANAGED_IDENTITY_CLIENT_ID,\n}\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 get_ml_client():\n \"\"\"Initialize and return the ML Client.\"\"\"\n credential = AzureCliCredential()\n return MLClient(credential, AZURE_SUBSCRIPTION_ID, AZURE_RESOURCE_GROUP_NAME, AZURE_ML_WORKSPACE_NAME)\n\ndef register_model(ml_client, model_name, job_name):\n \"\"\"Register a new model.\"\"\"\n model_path = f\"azureml://jobs/{job_name}/outputs/artifacts/paths/model_output\"\n logger.info(f\"Registering model {model_name} from job {job_name} at path {model_path}.\")\n run_model = Model(\n path=model_path,\n name=model_name,\n description=\"Model created from run.\",\n type=AssetTypes.MLFLOW_MODEL,\n )\n model = ml_client.models.create_or_update(run_model)\n logger.info(f\"Registered model ID: {model.id}\")\n return model\n\ndef delete_existing_endpoint(ml_client, endpoint_name):\n \"\"\"Delete existing endpoint if it exists.\"\"\"\n try:\n endpoint_result = ml_client.online_endpoints.get(name=endpoint_name)\n logger.info(f\"Deleting existing endpoint {endpoint_name}.\")\n ml_client.online_endpoints.begin_delete(name=endpoint_name).result()\n logger.info(f\"Deleted existing endpoint {endpoint_name}.\")\n except Exception as e:\n logger.info(f\"No existing endpoint {endpoint_name} found to delete: {e}\")\n\ndef create_or_update_endpoint(ml_client, endpoint_name, description=\"\"):\n \"\"\"Create or update an endpoint.\"\"\"\n delete_existing_endpoint(ml_client, endpoint_name)\n logger.info(f\"Creating new endpoint {endpoint_name}.\")\n endpoint = ManagedOnlineEndpoint(\n name=endpoint_name,\n description=description,\n identity=IdentityConfiguration(\n type=\"user_assigned\",\n user_assigned_identities=[ManagedIdentityConfiguration(resource_id=AZURE_MANAGED_IDENTITY_RESOURCE_ID)]\n )\n )\n endpoint_result = ml_client.online_endpoints.begin_create_or_update(endpoint).result()\n logger.info(f\"Created new endpoint {endpoint_name}.\")\n return endpoint_result\n\ndef create_or_update_deployment(ml_client, endpoint_name, deployment_name, model):\n \"\"\"Create or update a deployment.\"\"\"\n\n logger.info(f\"Creating deployment {deployment_name} for endpoint {endpoint_name}.\")\n deployment = ManagedOnlineDeployment(\n name=deployment_name,\n endpoint_name=endpoint_name,\n model=model.id,\n instance_type=COMPUTE_INSTANCE_TYPE,\n instance_count=1,\n environment_variables=deployment_env_vars,\n request_settings=OnlineRequestSettings(\n max_concurrent_requests_per_instance=3,\n request_timeout_ms=180000,\n max_queue_wait_ms=120000\n ),\n liveness_probe=ProbeSettings(\n failure_threshold=30,\n success_threshold=1,\n period=100,\n initial_delay=500,\n ),\n readiness_probe=ProbeSettings(\n failure_threshold=30,\n success_threshold=1,\n period=100,\n initial_delay=500,\n ),\n )\n deployment_result = ml_client.online_deployments.begin_create_or_update(deployment).result()\n logger.info(f\"Created deployment {deployment.name} for endpoint {endpoint_name}.\")\n return deployment_result\n\ndef set_traffic_to_deployment(ml_client, endpoint_name, deployment_name):\n \"\"\"Set traffic to the specified deployment.\"\"\"\n try:\n # Fetch the current endpoint details\n endpoint = ml_client.online_endpoints.get(name=endpoint_name)\n \n # Log the current traffic allocation for debugging\n logger.info(f\"Current traffic allocation: {endpoint.traffic}\")\n \n # Set the traffic allocation for the deployment\n endpoint.traffic = {deployment_name: 100}\n \n # Update the endpoint with the new traffic allocation\n endpoint_poller = ml_client.online_endpoints.begin_create_or_update(endpoint)\n updated_endpoint = endpoint_poller.result()\n \n # Log the updated traffic allocation for debugging\n logger.info(f\"Updated traffic allocation: {updated_endpoint.traffic}\")\n logger.info(f\"Set traffic to deployment {deployment_name} at endpoint {endpoint_name}.\")\n return updated_endpoint\n except Exception as e:\n # Log any errors that occur during the process\n logger.error(f\"Failed to set traffic to deployment: {e}\")\n raise\n\n\ndef main():\n ml_client = get_ml_client()\n\n registered_model = register_model(ml_client, AZURE_MODEL_NAME, JOB_NAME)\n logger.info(f\"Registered model ID: {registered_model.id}\")\n\n endpoint = create_or_update_endpoint(ml_client, AZURE_ENDPOINT_NAME, \"Endpoint for finetuned Phi-3 model\")\n logger.info(f\"Endpoint {AZURE_ENDPOINT_NAME} is ready.\")\n\n try:\n deployment = create_or_update_deployment(ml_client, AZURE_ENDPOINT_NAME, AZURE_DEPLOYMENT_NAME, registered_model)\n logger.info(f\"Deployment {AZURE_DEPLOYMENT_NAME} is created for endpoint {AZURE_ENDPOINT_NAME}.\")\n\n set_traffic_to_deployment(ml_client, AZURE_ENDPOINT_NAME, AZURE_DEPLOYMENT_NAME)\n logger.info(f\"Traffic is set to deployment {AZURE_DEPLOYMENT_NAME} at endpoint {AZURE_ENDPOINT_NAME}.\")\n except Exception as e:\n logger.error(f\"Failed to create or update deployment: {e}\")\n\nif __name__ == \"__main__\":\n main()\n \n \n \n \n Perform the following tasks to get the JOB_NAME : \n \n Navigate to Azure Machine Learning resource that you created. \n Select Studio web URL to open the Azure Machine Learning workspace. \n Select Jobs from the left side tab. \n Select the experiment for fine-tuning. For example, finetunephi. \n Select the job that you created. \n Copy and paste your job Name into the JOB_NAME = \"your-job-name\" in deploy_model.py file. \n \n \n \n Replace COMPUTE_INSTANCE_TYPE with your specific details. \n \n \n Type the following command to run the deploy_model.py script and start the deployment process in Azure Machine Learning. \n python deploy_model.py \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 Visit Azure ML Studio. \n \n \n Navigate to Azure Machine Learning workspace that you created. \n \n \n Select Studio web URL to open the Azure Machine Learning workspace. \n \n Select Endpoints from the left side tab.\n \n \n \n \n \n \n \n \n Select endpoint that you created. \n \n \n \n \n \n \n \n \n On this page, you can manage the endpoints created during the deployment process. \n \n \n \n Series 3: Integrate the custom Phi-3 model with Prompt flow \n Integrate the custom Phi-3 model with Prompt Flow \n \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 \n Set api key and endpoint uri of the fine-tuned Phi-3 model. \n Add code to the flow.dag.yml file. \n Add code to the integrate_with_promptflow.py file. \n Test your custom Phi-3 model on Prompt flow. \n \n \n Set api key and endpoint uri of the fine-tuned Phi-3 model \n \n \n \n Navigate to the Azure Machine learning workspace that you created. \n \n \n Select Endpoints from the left side tab. \n \n \n \n \n \n \n \n \n Select endpoint that you created. \n \n \n \n \n \n \n \n \n Select Consume from the navigation menu. \n \n \n Copy and paste your REST endpoint into the config.py file, replacing AZURE_ML_ENDPOINT = \"your_fine_tuned_model_endpoint_uri\" with your REST endpoint. \n \n \n Copy and paste your Primary key into the config.py file, replacing AZURE_ML_API_KEY = \"your_fine_tuned_model_api_key\" with your Primary key. \n \n \n \n \n \n \n \n \n Add code to the flow.dag.yml file \n \n \n \n Open the flow.dag.yml file in Visual Studio Code. \n \n \n Add the following code into flow.dag.yml. \n inputs:\n input_data:\n type: string\n default: \"Who founded Microsoft?\"\n\noutputs:\n answer:\n type: string\n reference: ${integrate_with_promptflow.output}\n\nnodes:\n- name: integrate_with_promptflow\n type: python\n source:\n type: code\n path: integrate_with_promptflow.py\n inputs:\n input_data: ${inputs.input_data}\n \n \n \n Add code to the integrate_with_promptflow.py file \n \n \n \n Open the integrate_with_promptflow.py file in Visual Studio Code. \n \n \n Add the following code into integrate_with_promptflow.py. \n import logging\nimport requests\nfrom promptflow.core import tool\nimport asyncio\nimport platform\nfrom config import (\n AZURE_ML_ENDPOINT,\n AZURE_ML_API_KEY\n)\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_azml_endpoint(input_data: list, endpoint_url: str, api_key: str) -> str:\n \"\"\"\n Send a request to the Azure ML endpoint with the given input data.\n \"\"\"\n headers = {\n \"Content-Type\": \"application/json\",\n \"Authorization\": f\"Bearer {api_key}\"\n }\n data = {\n \"input_data\": [input_data],\n \"params\": {\n \"temperature\": 0.7,\n \"max_new_tokens\": 128,\n \"do_sample\": True,\n \"return_full_text\": True\n }\n }\n try:\n response = requests.post(endpoint_url, json=data, headers=headers)\n response.raise_for_status()\n result = response.json()[0]\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\ndef setup_asyncio_policy():\n \"\"\"\n Setup asyncio event loop policy for Windows.\n \"\"\"\n if platform.system() == 'Windows':\n asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())\n logger.info(\"Set Windows asyncio event loop policy.\")\n\n@tool\ndef my_python_tool(input_data: str) -> str:\n \"\"\"\n Tool function to process input data and query the Azure ML endpoint.\n \"\"\"\n setup_asyncio_policy()\n return query_azml_endpoint(input_data, AZURE_ML_ENDPOINT, AZURE_ML_API_KEY)\n \n \n \n \n Type the following command to run the integrate_with_promptflow script and start Prompt flow. \n pf flow serve --source ./ --port 8080 --host localhost\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. This tutorial introduced the simplest method of fine-tuning, avoiding additional techniques such as LoRA or QLoRA, and using MLflow to streamline the fine-tuning and deployment process. Advanced techniques and detailed explanations will be covered in the next series. \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: \n \n The Azure Machine Learning resource. \n The Azure Machine Learning model endpoint. \n \n \n Source Code for the Tutorial \n \n You can find the complete source code for this tutorial in the following repository: \n skytin1004/Fine-Tune-and-Integrate-Custom-Phi-3-Models-with-Prompt-Flow \n \n Reference \n \n \n microsoft/Phi-3CookBook \n Azure/azure-llm-fine-tuning \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"53412","kudosSumWeight":2,"repliesCount":1,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5Mmk3ODRDM0ZFODZENUIxMDQy?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxMWlGRDVENDE3MDI3NzUxOUI4?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxMmk5QThGRDE3M0MwNjJCNTg1?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTYwMzAzNGlBM0NFN0RBOEQ1NTFBMDBE?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTYwMzAzNWkyOTEzOTFFRTNBN0U0OThB?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxNWk5MEMwN0NBNUFCRjAzQjdD?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxNmlEMDRFNTRBRDY4RDM3QjUy?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxN2lBQTdFNTgwN0U1MjBFNkEy?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxOGlEM0Q2N0Y1QzA0RjNBMjEz?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgxOWlDQjc1QzgzMTBDRDAxMURF?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyMWkyMzZGQTBCMTU5RDEyNTk0?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyMmk0NEVDMDBGQ0EwMzczMzMx?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5M2kyNkI0ODdCQjY2QTEzMUY4?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNGk1NkY3REU5QUQ1MTcyMTA4?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNWk3RDQ2MkNFOTA4NTUxNzkx?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyNmkwODBGNDlBRkM4Mjg2QTA1?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgyN2lBRDU1RjIyMDFDMUVDNTgz?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzMGk1RjFENDZEOTY3RDlDRjY2?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzNWkzMjczQzFEM0I1QUM1RUEz?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzMmkxRkNEMEZCRkVCQkY5MjdF?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NzI5NWlFNzU0Q0U2N0UwODMxNDZB?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzOGlBOEY2MThDMEUyMTFCRDVD?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDIz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTgzOWk4MTc3RjEzQjE2OTJGRDcx?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTg0MGk5NTQyREQ0OUExRTg3OUJB?revision=73\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTc4NjEyLTU5NTg0MWlEM0NFQTA0NDBCRUQ2Qjgx?revision=73\"}"}}],"totalCount":35,"pageInfo":{"__typename":"PageInfo","hasNextPage":true,"endCursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI1","hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4231650":{"__typename":"Conversation","id":"conversation:4231650","topic":{"__typename":"BlogTopicMessage","uid":4231650},"lastPostingActivityTime":"2024-08-30T00:00:00.034-07:00","solved":false},"User:user:2204790":{"__typename":"User","uid":2204790,"login":"Sharda_Kaur","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMjA0NzkwLUtxSHFtdA?image-coordinates=315%2C534%2C915%2C1134"},"id":"user:2204790"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk4Mmk0QjhEMjAwMDc4OUU3MUY5?revision=4\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk4Mmk0QjhEMjAwMDc4OUU3MUY5?revision=4","title":"mmonsma_1-1716254588987.png","associationType":"TEASER","width":999,"height":387,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5MGkyOEM3MjIyQ0YzRDNENjA5?revision=4\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5MGkyOEM3MjIyQ0YzRDNENjA5?revision=4","title":"shardakaur_5-1724911308976.png","associationType":"BODY","width":1328,"height":796,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNTAxMWk4QzkwMEFCNzY1NzYwRTFB?revision=4\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNTAxMWk4QzkwMEFCNzY1NzYwRTFB?revision=4","title":"shardakaur_0-1724916924760.png","associationType":"BODY","width":1115,"height":624,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5MmlDN0RBMEE5NkZDNDhBRjMx?revision=4\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5MmlDN0RBMEE5NkZDNDhBRjMx?revision=4","title":"shardakaur_7-1724911390766.png","associationType":"BODY","width":953,"height":551,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5NWlGNTkzMjRDRUNDRTYzRkNB?revision=4\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5NWlGNTkzMjRDRUNDRTYzRkNB?revision=4","title":"shardakaur_10-1724911473347.png","associationType":"BODY","width":1216,"height":772,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5N2lEQThDQjc4NDQ3NDRGOThE?revision=4\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5N2lEQThDQjc4NDQ3NDRGOThE?revision=4","title":"shardakaur_12-1724911530390.png","associationType":"BODY","width":1086,"height":593,"altText":null},"BlogTopicMessage:message:4231650":{"__typename":"BlogTopicMessage","subject":"Evaluating Generative AI Models with Azure Machine Learning","conversation":{"__ref":"Conversation:conversation:4231650"},"id":"message:4231650","revisionNum":4,"uid":4231650,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2204790"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n LLM evaluation assesses the performance of a large language model on a set of tasks, such as text classification, sentiment analysis, question answering, and text generation. The goal is to measure the model's ability to understand and generate human-like language. \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":4480},"postTime":"2024-08-30T00:00:00.034-07:00","lastPublishTime":"2024-08-30T00:00:00.034-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hello, I'm Sharda Kaur! \n I'm a Microsoft Learn Beta Student Ambassador pursuing my Master’s in Computer Application at Chitkara University in Punjab, India. With a strong passion for technology and community engagement, I'm dedicated to sharing my knowledge and expertise with others. \n \n As a tech enthusiast, I'm fascinated by the latest advancements in Microsoft technology, including Microsoft Fabric, Power Platform, GitHub, and Microsoft Learn. I believe in the power of sharing knowledge and experiences, and I'm committed to creating informative and engaging content that helps others learn and grow. \n \n Through my blog, I aim to provide valuable insights, tutorials, and resources on various Microsoft technologies, to empower individuals and communities to achieve their full potential. I'm excited to connect with like-minded individuals and collaborate on projects that drive innovation and positive change. \n \n Evaluating Generative AI Models \n Introduction to LLM Evaluation \n Large Language Models (LLMs) have become increasingly popular in natural language processing (NLP) tasks. Evaluating the performance of these models is crucial to understand their strengths and weaknesses. Here's a brief overview of LLM evaluation: \n \n What is LLM Evaluation? \n LLM evaluation assesses the performance of a large language model on a set of tasks, such as text classification, sentiment analysis, question answering, and text generation. The goal is to measure the model's ability to understand and generate human-like language. \n \n Pre-requisites for training in a model. \n Here are some of the key ones: \n Data Preparation \n \n Collecting and preprocessing the dataset \n \n \n Feature engineering and selection \n \n \n Data normalization and transformation \n \n \n Handling missing values and outliers \n \n Model Selection \n \n Choosing the right algorithm and model architecture \n \n \n Selecting the appropriate hyperparameters \n \n \n Considering the trade-offs between model complexity and interpretability \n \n Training \n \n Splitting the data into training, validation, and testing sets \n \n \n Training the model using the training set \n \n \n Tuning hyperparameters utilizing the validation set \n \n \n Avoiding overfitting and underfitting \n \n Model Evaluation Metrics \n \n Choosing the right evaluation metrics for the specific problem \n \n \n Understanding the strengths and limitations of each metric \n \n \n Considering metrics such as accuracy, precision, recall, F1-score, mean squared error, etc. \n \n By fulfilling these prerequisites, you can ensure that your model is trained and evaluated properly, essential for achieving good performance and making informed decisions. \n \n Why Model Evaluation Matters \n Model evaluation is essential for several reasons: \n \n Ensures Model Quality: Evaluation helps you determine whether your model is accurate and reliable, and generalizes well to new, unseen data. \n Identifies Areas for Improvement: By analyzing evaluation metrics, you can pinpoint where your model is struggling and make targeted adjustments to improve its performance. \n Compares Model Performance: Evaluation enables you to compare the performance of different models, allowing you to select the best one for your specific use case. \n Reduces Deployment Risks: Thorough evaluation helps you avoid deploying a subpar model, which can lead to poor user experiences, financial losses, or even reputational damage. \n \n How to Evaluate Models in Azure Machine Learning \n Azure Machine Learning provides a comprehensive platform for building, training, and deploying machine learning models. To evaluate a model in Azure Machine Learning, follow these steps: \n \n \n Create a Model: Train a generative AI model using Azure Machine Learning's automated machine learning (AutoML) or manual training options. \n \n \n Prepare Evaluation Data: Split your dataset into training and testing sets. Use the testing set for evaluation. \n \n \n \n \n Configure Evaluation Metrics: Choose relevant metrics for your model type, such as accuracy, precision, recall, F1-score, or mean squared error. \n \n \n Run Model Evaluation: Use Azure Machine Learning's Evaluate Model component to run an evaluation on your model. \n \n \n \n \n Analyze Results: Examine the evaluation metrics to understand your model's performance. \n \n \n \n \n \n Comparing Model Evaluation Results \n Let's consider an example where we're building a generative AI model to generate product descriptions. We've trained two models, Model A and Model B, using different architectures and hyperparameters. We want to compare their performance using evaluation metrics. \n \n Model A Evaluation Results \n \n \n \n \n Metric \n \n \n Value \n \n \n \n \n Accuracy \n \n \n 0.85 \n \n \n \n \n Precision \n \n \n 0.80 \n \n \n \n \n Recall \n \n \n 0.90 \n \n \n \n \n F1-score \n \n \n 0.85 \n \n \n \n \n \n Model B Evaluation Results \n \n \n \n \n Metric \n \n \n Value \n \n \n \n \n Accuracy \n \n \n 0.88 \n \n \n \n \n Precision \n \n \n 0.85 \n \n \n \n \n Recall \n \n \n 0.92 \n \n \n \n \n F1-score \n \n \n 0.89 \n \n \n \n \n \n By comparing the evaluation results, we can see that: \n \n Model B has a higher accuracy and F1 score, indicating better overall performance. \n \n \n Model A has a higher recall, suggesting it's better at generating descriptions for a wider range of products. \n \n \n Model B has a higher precision, indicating it's more accurate in generating descriptions for the products it's trained on. \n \n Based on these results, we might decide to deploy Model B as it has better overall performance. However, we might also consider using Model A for specific product categories where its higher recall is beneficial. \n Conclusion \n Model evaluation is a critical step in the machine learning workflow that helps you understand your model's performance and identify areas for improvement. By using Evaluate Model Azure Machine Learning component, you can easily evaluate your generative AI models and compare their performance. Remember to choose relevant evaluation metrics and analyze the results to make informed decisions about your model's deployment. With this beginner's guide, you're now equipped to evaluate your models and take the first step toward building high-quality generative AI solutions. \n \n Explore our samples and read the Evaluate Model Azure Machine Learning to get yourself started. \n Train and Evaluate a Model \n Prediction model prerequisites \n Train a model in Azure Machine Learning ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"7008","kudosSumWeight":2,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk4Mmk0QjhEMjAwMDc4OUU3MUY5?revision=4\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5MGkyOEM3MjIyQ0YzRDNENjA5?revision=4\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNTAxMWk4QzkwMEFCNzY1NzYwRTFB?revision=4\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5MmlDN0RBMEE5NkZDNDhBRjMx?revision=4\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5NWlGNTkzMjRDRUNDRTYzRkNB?revision=4\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MjMxNjUwLTYxNDk5N2lEQThDQjc4NDQ3NDRGOThE?revision=4\"}"}}],"totalCount":6,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4118978":{"__typename":"Conversation","id":"conversation:4118978","topic":{"__typename":"BlogTopicMessage","uid":4118978},"lastPostingActivityTime":"2024-07-30T00:00:00.051-07:00","solved":false},"User:user:2181140":{"__typename":"User","uid":2181140,"login":"ShivamGoyal03","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMTgxMTQwLTU2NDU5OWlENTNEOTUwNTkyNDMwODVE"},"id":"user:2181140"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTE4OTc4LTYwMzg0NGk2Mjg1MDlCMkU3NDFFNkUz?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTE4OTc4LTYwMzg0NGk2Mjg1MDlCMkU3NDFFNkUz?revision=10","title":"ShivamGoyal03_0-1722012337329.png","associationType":"BODY","width":1240,"height":816,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTE4OTc4LTYwMzg0NWkyQ0NFMTQxQkQzOTY4REY5?revision=10\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTE4OTc4LTYwMzg0NWkyQ0NFMTQxQkQzOTY4REY5?revision=10","title":"ShivamGoyal03_1-1722012401582.png","associationType":"BODY","width":1164,"height":813,"altText":null},"BlogTopicMessage:message:4118978":{"__typename":"BlogTopicMessage","subject":"Exploring Azure AI Services : Introduction and its use cases","conversation":{"__ref":"Conversation:conversation:4118978"},"id":"message:4118978","revisionNum":10,"uid":4118978,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" Build an AI-powered chatbot that understands your users' needs. Learn how to use Azure's Language Understanding (LUIS) service to create intelligent conversational experiences. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":5760},"postTime":"2024-07-30T00:00:00.051-07:00","lastPublishTime":"2024-07-30T00:00:00.051-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hey everyone! We're Chanchal Kuntal and Shivam Goyal, both Microsoft Learn Student Ambassadors, excited to explore the world of AI and its impact on how we build applications. Today, we're diving into Azure AI Services a set of powerful pre-built AI capabilities designed to simplify adding intelligence to your apps. \n \n What are Azure Cognitive Services? \n \n Imagine wanting to add features like image recognition, language translation, or sentiment analysis to your application. Building these capabilities from scratch would require significant time, expertise, and resources. That's where Azure AI Services come in. They provide developers with ready-to-use AI models and APIs, so you can easily integrate intelligent features without needing to become an AI expert. \n \n Key Capabilities of Azure AI Services: \n \n Cognitive Services cover a broad range of AI domains, each with its own set of APIs. Here are some popular ones: \n \n Computer Vision: Analyze images and videos to identify objects, faces, emotions, and more. \n Text Analytics: Extract key phrases, detect sentiment, identify entities, and translate languages in text data. \n Speech Recognition: Convert speech to text, understand spoken commands, and even translate spoken languages in real time. \n Language Understanding (LUIS): Build applications that understand natural language and can respond to user requests or commands. \n \n This flowchart helps you navigate the various Azure AI Services based on the type of data you want to analyze or process. \n \n \n \n \n \n \n Getting Started with Azure AI Services : \n \n The best way to experience the power of Cognitive Services is to jump in and start experimenting. Here's a quick guide: \n \n Create a Resource: Head over to the Azure Portal and create an Azure resource. You'll be able to choose the specific service you want (e.g., Computer Vision). \n Obtain Credentials: Once your resource is created, grab the API key and endpoint URL. You'll need these to authenticate your requests to the service. \n Explore the Quickstart Code: The Cognitive Services Quickstart Code repository on GitHub provides sample code for various Cognitive Services APIs in different programming languages like Python. \n \n \n Real-World Use Cases: \n \n Azure Cognitive Services unlock a wide range of possibilities across diverse industries: \n \n E-commerce: Use Computer Vision to automatically tag products in images, enable visual search, or moderate user-generated content. \n Social Media: Analyze sentiment in social media posts to understand public opinion or gauge customer satisfaction. \n Customer Service: Build AI-powered chatbots using LUIS to answer customer questions or provide support. \n Healthcare: Analyze medical images to assist with diagnosis or identify patterns in patient data. \n \n To illustrate how Azure Cognitive Services can be used in real-world scenarios, let's take a look at this document processing workflow example. \n \n \n \n \n Ingestion:\n \n Azure Web App (1b): A web application acts as the entry point, allowing users to upload documents for processing. \n Azure Blob Storage (1a): The uploaded documents are stored in Blob Storage, providing a scalable and reliable storage solution. \n \n \n \n \n Azure Queue Storage (2): The web app triggers an event in Queue Storage, signifying a new document is ready for processing. \n \n \n Computer Vision Read API (3): The Computer Vision API extracts text from the document using Optical Character Recognition (OCR). \n \n \n Azure Functions Orchestration (Steps 4-6):\n \n Scan Activity (4): Azure Functions orchestrates the workflow, starting by scanning the extracted text to identify key information. \n Classify Activity (5): The document is classified based on its content or specific criteria, leveraging the power of Azure Kubernetes Service for scalability and resource management. \n Metadata Store Activity (6): Relevant metadata extracted from the document (e.g., document type, key dates, author) is stored in Azure Cosmos DB for easy retrieval and analysis. \n \n \n \n \n Indexing Activity (6): The extracted text and metadata are indexed by Azure AI Search to create a powerful search index. \n \n \n Access and Retrieval (7): The processed documents, enriched with metadata and a searchable index, are now readily accessible for analysis, reporting, or retrieval through other applications built on Azure. \n \n \n Code Samples: A Glimpse into Integration: \n Here's a simple Python snippet showing how to use the Computer Vision API to analyze an image: \n \n \n \n \n \n \n from azure.cognitiveservices.vision.computervision import ComputerVisionClient\nfrom msrest.authentication import CognitiveServicesCredentials\n\n# Your subscription key and endpoint \nsubscription_key = \"YOUR_SUBSCRIPTION_KEY\"\nendpoint = \"YOUR_ENDPOINT\"\n\n# Authenticate the client\ncomputervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))\n\n# Analyze an image\nimage_url = \"https://example.com/image.jpg\"\nanalysis = computervision_client.analyze_image(image_url, visual_features=[\"description\"])\n\n# Print the image description\nprint(analysis.description.captions[0].text) \n \n \n \n \n \n \n Best Practices for Using Cognitive Services: \n \n To get the most out of Cognitive Services, keep these tips in mind: \n \n Security: Secure your API keys and consider using Azure Key Vault to store them. \n Scalability: Choose the appropriate pricing tier for your expected usage and consider autoscaling to handle varying demands. \n Cost Management: Monitor your usage and costs to optimize spending. \n \n \n Ready to Dive Deeper? Explore These Resources: \n \n Quickstart - Getting started with Azure OpenAI Assistants (Preview) - Azure OpenAI | Microsoft Learn \n Explore and configure the Azure Machine Learning workspace - Training | Microsoft Learn \n Microsoft Azure AI Fundamentals: Natural Language Processing - Training | Microsoft Learn \n Microsoft Azure AI Fundamentals: Computer Vision - Training | Microsoft Learn \n Quickstart - Python client library - Azure Cosmos DB for NoSQL | Microsoft Learn \n Build an AI-Powered Chatbot with LlamaIndex and Azure: Step-by-Step Guide \n \n \n Conclusion: \n \n Azure AI Services offer a powerful and accessible way to add AI capabilities to your applications. Whether you're building a chatbot, analyzing customer feedback, or creating a personalized news feed, AI Services can help you enhance your applications and unlock the potential of AI. Start exploring, experimenting, and building intelligent solutions today! ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"6840","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTE4OTc4LTYwMzg0NGk2Mjg1MDlCMkU3NDFFNkUz?revision=10\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTE4OTc4LTYwMzg0NWkyQ0NFMTQxQkQzOTY4REY5?revision=10\"}"}}],"totalCount":2,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3835949":{"__typename":"Conversation","id":"conversation:3835949","topic":{"__typename":"BlogTopicMessage","uid":3835949},"lastPostingActivityTime":"2024-02-01T00:23:21.556-08:00","solved":false},"User:user:1165321":{"__typename":"User","uid":1165321,"login":"aaryan2134","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMTY1MzIxLTQ3NTYwM2k5Q0JBMDE1RkREQTJGMTRD"},"id":"user:1165321"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTYwN2kzQUZDMDMzQUE1RkM5ODNE?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTYwN2kzQUZDMDMzQUE1RkM5ODNE?revision=16","title":"Integrating Power Apps with Azure Machine Learning.png","associationType":"TEASER","width":1280,"height":720,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc3NGlFMjgxNTM4N0VDMDlGQjEy?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc3NGlFMjgxNTM4N0VDMDlGQjEy?revision=16","title":"aaryan2134_2-1685566393463.png","associationType":"BODY","width":2008,"height":1125,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjE0MGk4MTkzRjE5NEFDMjFERUVB?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjE0MGk4MTkzRjE5NEFDMjFERUVB?revision=16","title":"aaryan2134_0-1685637679968.png","associationType":"BODY","width":968,"height":132,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5MGlFODE4OEY4QTI5Mjg0N0RF?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5MGlFODE4OEY4QTI5Mjg0N0RF?revision=16","title":"aaryan2134_3-1685567484411.png","associationType":"BODY","width":1280,"height":532,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzNWkxMjA5NkIwQkE5MjUyQzM2?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzNWkxMjA5NkIwQkE5MjUyQzM2?revision=16","title":"aaryan2134_6-1685636834364.png","associationType":"BODY","width":541,"height":504,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzM2k0MEY0OTlFMTAyNjg2N0Qy?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzM2k0MEY0OTlFMTAyNjg2N0Qy?revision=16","title":"aaryan2134_4-1685636720295.png","associationType":"BODY","width":599,"height":333,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzNGk1QTdFMzEwM0VGMzJFMzdB?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzNGk1QTdFMzEwM0VGMzJFMzdB?revision=16","title":"aaryan2134_5-1685636755502.png","associationType":"BODY","width":603,"height":182,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4N2lFOTdBMkQ1RjhDNTBDRTUx?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4N2lFOTdBMkQ1RjhDNTBDRTUx?revision=16","title":"aaryan2134_0-1685567405143.png","associationType":"BODY","width":1068,"height":601,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4OGlENTlGQUUyMjA4NzZBQTdD?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4OGlENTlGQUUyMjA4NzZBQTdD?revision=16","title":"aaryan2134_1-1685567438668.png","associationType":"BODY","width":1280,"height":620,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4OWk3NTg5OUM1M0Q0NzlDQzky?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4OWk3NTg5OUM1M0Q0NzlDQzky?revision=16","title":"aaryan2134_2-1685567450294.png","associationType":"BODY","width":708,"height":241,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEyOGkwODM3MTlBMTk1NDZDRDU0?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEyOGkwODM3MTlBMTk1NDZDRDU0?revision=16","title":"piechart.png","associationType":"BODY","width":347,"height":286,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5MWk3RTU2RTk5NkNFQTI3NzMw?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5MWk3RTU2RTk5NkNFQTI3NzMw?revision=16","title":"aaryan2134_4-1685567509802.png","associationType":"BODY","width":2006,"height":1125,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5Mmk3N0IxREVENkU1NzAyRUZF?revision=16\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5Mmk3N0IxREVENkU1NzAyRUZF?revision=16","title":"aaryan2134_5-1685567515967.png","associationType":"BODY","width":1997,"height":1125,"altText":null},"BlogTopicMessage:message:3835949":{"__typename":"BlogTopicMessage","subject":"Integrating Power Apps with Azure Machine Learning & OpenAI using Power Automate","conversation":{"__ref":"Conversation:conversation:3835949"},"id":"message:3835949","revisionNum":16,"uid":3835949,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:1165321"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n Learn how to integrate Power Apps with Azure Machine Learning & OpenAI using Power Automate through a Health Expense Planner Application. This app allows the user to predict their Health Expense using a Machine Learning Model and then get a detailed personalized plan to save funds for it. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":17559},"postTime":"2023-06-05T12:00:00.107-07:00","lastPublishTime":"2023-06-26T13:15:28.539-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" About the Author \n I am a pre-final year student, currently pursuing B Tech in Computer Engineering at Delhi Technological University. I love to learn new things through exploration and connecting with people along the journey. My key skills include Machine Learning, Web Development, Data Structures & Algorithms. I am also an active open source contributor. \n \n Connect with me \n LinkedIn Profile GitHub Profile \n \n Introduction \n Are you interested in harnessing the power of artificial intelligence and machine learning to predict and plan for your health expenses? Are you curious about how Power Apps, Azure Machine Learning, and OpenAI can work together to create innovative solutions? Look no further! In this blog post, we will explore how to integrate Power Apps with Azure Machine Learning and OpenAI using Power Automate, creating a cutting-edge Health Expense Planner Application. \n \n \n \n The Project \n The Health Expense Planner Application allows users to leverage a machine learning model to predict their health expenses accurately. By inputting various parameters such as age, sex, BMI, number of children, and smoking status, users can generate personalized predictions for their health expenses. But that's not all—the application goes a step further by providing a detailed plan to save funds specifically tailored to the predicted expenses. \n \n The Health Expense Planner Application serves as an excellent illustration of how these technologies can be combined to solve real-world challenges. While the focus is on health expenses in this application, the concepts and techniques discussed can be applied to various domains and use cases. \n \n Features \n \n Predict Health expenses based on various parameters like age, sex, BMI, number of children and whether they are a smoker or not \n Uses a custom built Azure Auto ML model integrated to Power Apps using Power Automate Flow \n Provides a customized plan to save for health expenses based on inputs and the result of the model using OpenAI's API \n \n Prerequisites \n \n You need to get an API key from OpenAI \n You need to have an account for Power Apps & Power Automate \n You need an active account in Azure \n You need to have a deployed Azure Auto ML Model’s end point URL for predictions \n \n Components \n The solution is composed of several key components. First, the Power App itself serves as the interface for users to input their information and receive the predictions and savings plan. The heart of the application lies in the integration of Azure Auto ML which allows us to create powerful, custom Machine Learning models without writing a single line of code using automated machine learning in the Azure Machine Learning studio. \n \n To enable seamless communication between Power Apps and Azure Auto ML, we employ Power Automate Flow. This flow acts as the bridge, passing the user's inputs to the model's endpoint and retrieving the results. Through HTTP requests and JSON parsing, the flow handles the data exchange and ensures a smooth user experience. \n \n In addition to Azure Machine Learning, we leverage the capabilities of OpenAI's API (OpenAI Connector) to enhance the health expense planning process. The application connects to the OpenAI API, utilizing the information to generate a personalized health expense plan. This integration allows users to have a comprehensive understanding of their predicted expenses and offers tailored savings strategies. \n \n Power App \n \n The Health Expense Power App is the main user interface for interacting with the project. It uses some basic UI elements like text labels and input boxes for making the app interactive. \n \n The interesting part in the App though is the predict button. It is responsible for two tasks: calling the AutoML Flow and The OpenAI Connector. \n \n \n \n \n ClearCollect(Result, AzureAutoMLFlow.Run(TextInput1.Text, TextInput1_1.Text, TextInput1_2.Text, TextInput1_3.Text, TextInput1_4.Text));\n\nClearCollect(explain, 'OpenAI(IndependentPublisher)'.Completion(\"text-davinci-003\", \"Use the given information about a person to create a plan to save \" & First(Result).response & \" USD for their health expenses\" & \"Their age is \" & TextInput1.Text & \" they are a \" & TextInput1_1.Text & \" having \" & TextInput1_2.Text & \" children.\\n\", {temperature: 0.3, max_tokens: 100, best_of: 1.0, frequency_penalty: 0.5}).choices); \n \n \n \n The ClearCollect function is used to store only the last result obtained. The Azure AutoML Flow is pretty simple. It only passes the input parameters to the Flow which returns the response back and that is stored in Result. \n \n The OpenAI connector uses the Text Completion method. The text-davinci-003 model was used based on the results and documentation provided on the OpenAI website. Finally, a prompt is passed to the connector along with some parameters. The parameters were based on some trial and error. For the prompt, it was created in such a way that the input parameters are also included along with the resultant expenses. They are linked together in a meaningful way for the Large Language Model of OpenAI to process properly. \n \n Power Automate Flow \n \n The flow is called when the Predict button is pressed in the Power App. \n \n It uses a Power Automate Flow to pass the input to the model and get the results back. \n \n The flow uses HTTP to POST the inputs to the Model Endpoint \n It then uses Parse JSON to parse the output \n Finally sends it back to the Power App \n \n HTTP uses the POST method. We need to provide the deployed endpoint URL of the model along with the input scheme and the input parameters from the Power App. This is then sent as a request to the endpoint using a POST request. \n \n \n \n Parse JSON uses the response scheme which can be auto generated by providing a sample response \n \n \n Next, we pass the results back to the Power App as a response \n \n \n \n Azure Automated ML \n \n For this project, we used AutoML to make the ML Model using Low Code in the Azure Machine Learning Studio. \n \n The model creation process was extremely easy and intuitive using AutoML as it provides a GUI where we only need to select the required parameters, set the target variable (in case of regression) and some other basic details like cross validation and metrics. \n \n Instructions to Deploy your own Azure AutoML Model \n \n Go to Azure Machine Learning Studio and create a new Workspace \n Select Automated ML and Select +New automated ML job \n Follow the instructions on the screen to add dataset \n After that, configure the job and forecast settings \n Run the experiment \n Once training is completed, select the best model from the results \n Select Deploy \n This process might take a while \n Once deploying is completed, go to the deployed model and copy the end point URL \n This end point URL can be used directly in the Power Automate Flow to connect the model with Power Apps \n \n The service automatically selects the best model. Then we can deploy the best model or make some changes if required. Once deployed, we get an endpoint to be used in the Power Automate Flow. \n \n \n \n We used the Health Expenses Dataset from Kaggle to create the Prediction Model (Regression based). A snapshot of the dataset and the distribution is shown below: \n \n \n \n \n \n \n Dataset \n \n OpenAI Connector \n We used the OpenAI Independent Publisher Connector to access the API. We need to add the connector by adding it as a Data Source and then creating a connection. To create the connection, we need to provide the API key from the OpenAI Platform as well. Once the connection is created, the connector allows us to use the API in the Power App like any other function or method. \n \n Results \n Let us have a look at few interesting results from the Power App that we just created. \n Here, we can see in the first example, the person is a bit old in comparison to the 2nd example (even though their metrics suggest them to be pretty healthy which is accounted in predicted expenses through the Regression Model). Due to them being older, the Proposed Plan is pretty different and takes into account that they need to prepare for health expense at an urgent basis. \n \n \n \n \n The second example is in stark contrast with the person being younger though unhealthy. This leads to an increase in the predicted Health Expenses as expected. Though the interesting difference is that the Proposed Plan takes into account the age factor and provides long term planning strategies! \n \n \n \n Note: The OpenAI's API though very powerful comes at a cost of reliability which can be observed by the fact that it confuses the BMI with children and assumes that the person has 26 children! \n \n Resources \n Check out the Project Demo Video at Microsoft Power Platform community call – May 2023 - here to see it in action! \n \n You can also have a look at the Power App Sample Pull Request here to get more technical details regarding the Power App Sample. \n To Learn More: \n \n Power Apps \n Introduction to Power Apps \n Introduction to Power Apps portals \n How to build a canvas app \n Microsoft Power Apps Learning Resources \n Power Apps Resources \n Azure Auto ML \n Integrating Azure ML End point 1 \n Integrating Azure ML End point 2 \n \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"9695","kudosSumWeight":2,"repliesCount":17,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTYwN2kzQUZDMDMzQUE1RkM5ODNE?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc3NGlFMjgxNTM4N0VDMDlGQjEy?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjE0MGk4MTkzRjE5NEFDMjFERUVB?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5MGlFODE4OEY4QTI5Mjg0N0RF?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzNWkxMjA5NkIwQkE5MjUyQzM2?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzM2k0MEY0OTlFMTAyNjg2N0Qy?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEzNGk1QTdFMzEwM0VGMzJFMzdB?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4N2lFOTdBMkQ1RjhDNTBDRTUx?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4OGlENTlGQUUyMjA4NzZBQTdD?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc4OWk3NTg5OUM1M0Q0NzlDQzky?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NjEyOGkwODM3MTlBMTk1NDZDRDU0?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5MWk3RTU2RTk5NkNFQTI3NzMw?revision=16\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zODM1OTQ5LTQ3NTc5Mmk3N0IxREVENkU1NzAyRUZF?revision=16\"}"}}],"totalCount":13,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[{"__typename":"VideoEdge","cursor":"MHxodHRwczovL3lvdXR1LmJlL1dHWHpLRm4xemtNP3Q9NzkzfDB8MjU7MjV8fA","node":{"__typename":"AssociatedVideo","videoTag":{"__typename":"VideoTag","vid":"https://youtu.be/WGXzKFn1zkM?t=793","thumbnail":"https://i.ytimg.com/vi/WGXzKFn1zkM/hqdefault.jpg","uploading":false,"height":225,"width":400,"title":null},"videoAssociationType":"INLINE_BODY"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:3941896":{"__typename":"Conversation","id":"conversation:3941896","topic":{"__typename":"BlogTopicMessage","uid":3941896},"lastPostingActivityTime":"2023-09-29T12:20:00.035-07:00","solved":false},"User:user:1379878":{"__typename":"User","uid":1379878,"login":"japhletnwamu","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xMzc5ODc4LTM2ODk1OWk3MEU0MEEzNThGN0U0OTAz"},"id":"user:1379878"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTQxODk2LTUxMjQ2MmlDNDhEOTVERDEyN0VCRDIy?revision=8\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTQxODk2LTUxMjQ2MmlDNDhEOTVERDEyN0VCRDIy?revision=8","title":"Foundational Models in Azure Machine Learning.png","associationType":"TEASER","width":1920,"height":1080,"altText":null},"BlogTopicMessage:message:3941896":{"__typename":"BlogTopicMessage","subject":"Your Startup's Secret Weapon for AI Success - Foundation Models in Azure Machine Learning","conversation":{"__ref":"Conversation:conversation:3941896"},"id":"message:3941896","revisionNum":8,"uid":3941896,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:1379878"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" In the past, managing and using large models has been a cumbersome task, with customers having to manage the infrastructure and environment dependencies for these models. \n \n Foundational models, at their core, are pre-built machine learning models that have been meticulously crafted and fine-tuned by experts. These models serve as a rock-solid foundation upon which startups can build their AI applications. \n \n \n ","introduction":"","metrics":{"__typename":"MessageMetrics","views":4322},"postTime":"2023-09-29T12:20:00.035-07:00","lastPublishTime":"2023-09-29T12:20:00.035-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" In the fast-paced world of startups and entrepreneurship, staying ahead of the competition is crucial for success. To gain a competitive edge, startups need to harness the power of data-driven insights and machine learning. AI has made significant progress, thanks to the development of large-scale foundation models. Azure Machine Learning, Microsoft's cutting-edge cloud-based service, offers a game-changing opportunity for startups to access foundational models that can transform their businesses. In this article, we'll take a look at foundation models and explore some of the benefits that Azure Machine Learning provides to startups and entrepreneurs, ultimately helping them thrive in an increasingly data-centric world. \n \n What are Foundation Models in Azure Machine Learning? \n In the past, managing and using large models has been a cumbersome task, with customers having to manage the infrastructure and environment dependencies for these models. Now, Foundation Models in Azure Machine Learning provides Azure Machine Learning native capabilities that enable customers to build and operationalize open-source Foundation Models at scale. Azure Machine Learning provides the capability to easily integrate these pretrained models into your applications. \n \n These Foundation Models serve as a starting point for developing specialized models and can be easily adapted to a wide variety of applications across various industries. Foundational models, at their core, are pre-built machine learning models that have been meticulously crafted and fine-tuned by experts. These models serve as a rock-solid foundation upon which startups can build their AI applications. This gives rise to a unique opportunity for enterprises to build and use these Foundation Models in their deep learning workloads. \n \n Benefit of Foundation Models in Azure Machine Learning \n 1. Democratizing AI for Startups: Azure Machine Learning provides a democratized platform for startups, enabling them to access state-of-the-art machine learning models without the need for an extensive background in AI. This levels the playing field, allowing startups to compete with industry giants on an even footing. With foundational models at your disposal, you can quickly build and deploy machine learning solutions that meet your specific business needs, making your startup agile and adaptable. \n \n 2. Speed and Efficiency: Time is of the essence for startups, and Azure Machine Learning can significantly reduce the time-to-market for your AI-based products or services. Foundational models serve as a launching pad for your projects, saving you the extensive time required for model development from scratch. With these pre-trained models, you can jump-start your AI initiatives and bring your innovations to market faster. \n \n 3. Cost-Effective Solutions: Startups often operate on tight budgets, and building and training machine learning models can be expensive. Azure Machine Learning helps reduce costs by eliminating the need to invest in costly hardware and infrastructure. Instead, you pay for what you use, making it a cost-effective choice for startups. With foundational models, you're not only saving on hardware costs but also on development time and resources. \n \n 4. Enhanced Predictive Power: Foundational models are the result of extensive research and development by experts in the field. Leveraging these models allows startups to benefit from the accumulated knowledge and data insights, leading to more accurate predictions and improved decision-making. Whether you're in e-commerce, healthcare, finance, or any other industry, Azure Machine Learning empowers your startup to make informed choices based on high-quality data. \n \n 5. Scalability: As your startup grows, your data and AI needs will expand. Azure Machine Learning seamlessly scales with your business, ensuring that you can handle increasing data volumes and complexity. The foundational models offered in Azure Machine Learning can be fine-tuned to meet your evolving requirements, providing the flexibility and scalability your startup needs. \n \n 6. Customization and Personalization: Foundational models are just the starting point. Azure Machine Learning enables startups to customize and fine-tune these models to fit their unique business challenges and objectives. This level of personalization allows you to create AI solutions that cater specifically to your customers, enhancing user experience and satisfaction. \n \n 7. Continuous Learning and Improvement: In the ever-evolving field of AI, staying up-to-date with the latest advancements is critical. Azure Machine Learning keeps your startup in the loop by providing access to updates and new foundational models as they become available. This ensures that your business remains at the forefront of AI innovation. \n \n 8. Comprehensive Support and Resources: Microsoft offers a wealth of resources, including documentation, tutorials, and a vibrant community, to help startups navigate the world of Azure Machine Learning. The extensive support and guidance available make it easier for entrepreneurs and startups to harness the full potential of this powerful tool. \n \n Getting Started with Foundation Models in Azure Machine Learning \n In this video, Parinita Rahi a Principal Program Manager in the AI Frameworks team at Microsoft and Swati Gharse a Principal Product Manager with the Azure Machine Learning team at Microsoft, gives us a quick overview of Foundation Models that are now available within Microsoft Azure Machine Learning. \n \n \n \n Conclusion \n In an era where data is king and AI reigns supreme, startups and entrepreneurs cannot afford to miss the opportunities presented by Azure Machine Learning's foundational models. These pre-built models empower startups to leverage the full potential of data-driven decision-making, reduce development time and costs, and ensure scalability and continuous learning. Startups and entrepreneurs must seize the opportunities presented by machine learning and AI. \n \n Additional Resources \n 1. Learn about Foundation Models in Azure Machine Learning \n 2. Announcing Foundation Models in Azure Machine Learning \n 3. How to use Open-Source foundation models curated by Azure Machine Learning (preview) \n 4. Fine-tune a foundation model from the model catalog in Azure Machine Learning \n 5. Check out more episodes Open at Microsoft Series \n 6. Sign up for Microsoft for Startup Founders Hub \n 7. Sign up to get access to Microsoft Azure for Student for free ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"6780","kudosSumWeight":2,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTQxODk2LTUxMjQ2MmlDNDhEOTVERDEyN0VCRDIy?revision=8\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[{"__typename":"VideoEdge","cursor":"MHxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1QT1FfT3NEOTlBJmxpc3Q9UExscnhEMEh0aWVIZzhPbjZ0MWw1X2tqLS03UE1teWZHaSZpbmRleD01fDB8MjU7MjV8fA","node":{"__typename":"AssociatedVideo","videoTag":{"__typename":"VideoTag","vid":"https://www.youtube.com/watch?v=mPOQ_OsD99A&list=PLlrxD0HtieHg8On6t1l5_kj--7PMmyfGi&index=5","thumbnail":"https://i.ytimg.com/vi/mPOQ_OsD99A/hqdefault.jpg","uploading":false,"height":338,"width":600,"title":null},"videoAssociationType":"INLINE_BODY"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"CachedAsset:text:en_US-components/community/Navbar-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1745505307000","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-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1745505307000","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1745505307000","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1745505307000","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1745505307000","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-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1745505307000","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagSubscriptionAction-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagSubscriptionAction-1745505307000","value":{"success.follow.title":"Following Tag","success.unfollow.title":"Unfollowed Tag","success.follow.message.followAcrossCommunity":"You will be notified when this tag is used anywhere across the community","success.unfollowtag.message":"You will no longer be notified when this tag is used anywhere in this place","success.unfollowtagAcrossCommunity.message":"You will no longer be notified when this tag is used anywhere across the community","unexpected.error.title":"Error - Action Failed","unexpected.error.message":"An unidentified problem occurred during the action you took. Please try again later.","buttonTitle":"{isSubscribed, select, true {Unfollow} false {Follow} other{}}","unfollow":"Unfollow"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1745505307000","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1745505307000","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListTabs-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListTabs-1745505307000","value":{"mostKudoed":"{value, select, IDEA {Most Votes} other {Most Likes}}","mostReplies":"Most Replies","mostViewed":"Most Viewed","newest":"{value, select, IDEA {Newest Ideas} OCCASION {Newest Events} other {Newest Topics}}","newestOccasions":"Newest Events","mostRecent":"Most Recent","noReplies":"No Replies Yet","noSolutions":"No Solutions Yet","solutions":"Solutions","mostRecentUserContent":"Most Recent","trending":"Trending","draft":"Drafts","spam":"Spam","abuse":"Abuse","moderation":"Moderation","tags":"Tags","PAST":"Past","UPCOMING":"Upcoming","sortBymostRecent":"Sort By Most Recent","sortBymostRecentUserContent":"Sort By Most Recent","sortBymostKudoed":"Sort By Most Likes","sortBymostReplies":"Sort By Most Replies","sortBymostViewed":"Sort By Most Viewed","sortBynewest":"Sort By Newest Topics","sortBynewestOccasions":"Sort By Newest Events","otherTabs":" Messages list in the {tab} for {conversationStyle}","guides":"Guides","archives":"Archives"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1745505307000","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/OverflowNav-1745505307000","value":{"toggleText":"More"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1745505307000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1745505307000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1745505307000","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-shared/client/components/nodes/NodeIcon-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1745505307000","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageUnreadCount-1745505307000","value":{"unread":"{count} unread","comments":"{count, plural, one { unread comment} other{ unread comments}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageViewCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageViewCount-1745505307000","value":{"textTitle":"{count, plural,one {View} other{Views}}","views":"{count, plural, one{View} other{Views}}"},"localOverride":false},"CachedAsset:text:en_US-components/kudos/KudosCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/kudos/KudosCount-1745505307000","value":{"textTitle":"{count, plural,one {{messageType, select, IDEA{Vote} other{Like}}} other{{messageType, select, IDEA{Votes} other{Likes}}}}","likes":"{count, plural, one{like} other{likes}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRepliesCount-1745505307000","value":{"textTitle":"{count, plural,one {{conversationStyle, select, IDEA{Comment} OCCASION{Comment} other{Reply}}} other{{conversationStyle, select, IDEA{Comments} OCCASION{Comments} other{Replies}}}}","comments":"{count, plural, one{Comment} other{Comments}}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505307000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1745505307000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false}}}},"page":"/tags/TagPage/TagPage","query":{"nodeId":"board:EducatorDeveloperBlog","tagName":"azure machine learning"},"buildId":"-gVUpXaWnPcjlrLJZ92B7","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/tags/TagsHeaderWidget/TagsHeaderWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/tags/TagSubscriptionAction/TagSubscriptionAction.tsx","./components/external/components/ExternalComponent.tsx","../shared/client/components/common/List/ListGroup/ListGroup.tsx","./components/messages/MessageView/MessageView.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx"],"appGip":true,"scriptLoader":[{"id":"analytics","src":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1730819800000/analytics.js?page.id=TagPage","strategy":"afterInteractive"}]}