CINXE.COM
<!DOCTYPE html> <html lang="en" id="facebook" class="no_js"> <head><meta charset="utf-8" /><meta name="referrer" content="default" id="meta_referrer" /><script nonce="rF3EhZnQ">function envFlush(a){function b(b){for(var c in a)b[c]=a[c]}window.requireLazy?window.requireLazy(["Env"],b):(window.Env=window.Env||{},b(window.Env))}envFlush({"useTrustedTypes":true,"isTrustedTypesReportOnly":false,"ajaxpipe_token":"AXhX59utXvgfg_U7MMU","stack_trace_limit":30,"timesliceBufferSize":5000,"show_invariant_decoder":false,"compat_iframe_token":"AUVqxdLM0fgTJgKo_KUHrEtloj0","isCQuick":false,"brsid":"7440532770668790760"});</script><script nonce="rF3EhZnQ">(function(a){function b(a){var b;a=Object.getOwnPropertyDescriptor(Document.prototype,a);if(a===void 0||a.configurable!==!0)return null;b=(b=a.set)==null?void 0:b.bind(document);a=(a=a.get)==null?void 0:a.bind(document);return b===void 0||a===void 0?null:{get:a,set:b}}function c(c){var d=b("cookie");if(d==null)return;var e=!1;c.I_AM_CORE_COOKIE_INFRASTRUCTURE_AND_NEED_TO_ACCESS_COOKIES=function(){if(e)throw new Error("CookieStore already initialized");e=!0;return d};Object.defineProperty(document,"cookie",{get:function(){throw new Error()},set:function(a){throw new Error()}})}function d(){var a=b("domain");if(a==null)return;Object.defineProperty(document,"domain",{get:function(){var b=a.get();return b==null?null:b},set:function(a){throw new Error()}})}c(a);d()})(this);</script><script nonce="rF3EhZnQ">window.openDatabase&&(window.openDatabase=function(){throw new Error()});</script><script nonce="rF3EhZnQ">_btldr={};</script><script nonce="rF3EhZnQ">function parentIsNotHeadNorBody(a){return a.parentElement!==document.body&&a.parentElement!==document.head}function isTagSupported(a){return a.nodeName==="SCRIPT"||a.nodeName==="LINK"&&((a=getNodeDataSet(a))==null?void 0:a.asyncCss)}function getNodeDataSet(a){return!(a.dataset instanceof window.DOMStringMap)?null:a.dataset}function addLoadEventListeners(a){var b;try{if(a.nodeType!==Node.ELEMENT_NODE)return}catch(a){return}if(parentIsNotHeadNorBody(a)||!isTagSupported(a))return;var c=(b=getNodeDataSet(a))==null?void 0:b.bootloaderHash;if(c!=null&&c!==""){var d=null,e=function(){window._btldr[c]=1,d==null?void 0:d()};d=function(){a.removeEventListener("load",e),a.removeEventListener("error",e)};a.addEventListener("load",e);a.addEventListener("error",e)}}(function(){Array.from(document.querySelectorAll('script,link[data-async-css="1"]')).forEach(function(a){return addLoadEventListeners(a)});var a=new MutationObserver(function(a,b){a.forEach(function(a){a.type==="childList"&&Array.from(a.addedNodes).forEach(function(a){addLoadEventListeners(a)})})});a.observe(document.getElementsByTagName("html")[0],{attributes:!1,childList:!0,subtree:!0})})();</script><style nonce="rF3EhZnQ"></style><script nonce="rF3EhZnQ">__DEV__=0;</script><noscript><meta http-equiv="refresh" content="0; URL=/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/?_fb_noscript=1" /></noscript><title id="pageTitle">Introducing SPDL: Faster AI model training with thread-based data loading</title><meta name="bingbot" content="noarchive" /><meta name="description" content="SPDL is a framework-agnostic data loading solution that uses multi-threading, which achieves high-throughput in a regular Python interpreter (built..." /><link rel="canonical" href="https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/" /><meta name="viewport" content="width=device-width, initial-scale=1" /><meta name="title" content="Introducing SPDL: Faster AI model training with thread-based data loading" /><meta name="description" content="SPDL is a framework-agnostic data loading solution that uses multi-threading, which achieves high-throughput in a regular Python interpreter (built without free-threading option enabled)." /><meta name="og:site_name" content="Meta AI" /><meta name="og:title" content="Introducing SPDL: Faster AI model training with thread-based data loading" /><meta name="og:description" content="SPDL is a framework-agnostic data loading solution that uses multi-threading, which achieves high-throughput in a regular Python interpreter (built without free-threading option enabled)." /><meta property="og:image" content="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/468028718_896717795972568_4149636151183687506_n.png?_nc_cat=104&ccb=1-7&_nc_sid=e280be&_nc_ohc=fXIwDoBhFEwQ7kNvgGExUe_&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDEpBUEYTKnxYPv19i88h0fM85KOPsruWMIsdlWGE5tdQ&oe=675C6102" /><meta name="twitter:card" content="summary" /><meta property="twitter:description" content="SPDL is a framework-agnostic data loading solution that uses multi-threading, which achieves high-throughput in a regular Python interpreter (built without free-threading option enabled)." /><meta name="og:url" content="https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/" /><meta name="url" content="https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/" /><meta property="twitter:title" content="Introducing SPDL: Faster AI model training with thread-based data loading" /><meta property="twitter:image" content="https://ai.meta.com/static-resource/default-meta-image/" /><link rel="icon" href="https://static.xx.fbcdn.net/rsrc.php/v3/y4/r/WUJbsVI4ruF.png" /><link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yv/l/1,cross/KaxZ1Da-YEc.css" data-bootloader-hash="sjogf/J" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/y_/l/1,cross/i1du4dXRvDt.css" data-bootloader-hash="bhe4bEa" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yn/l/1,cross/rFI_n6V9OQU.css" data-bootloader-hash="wXaVolg" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yM/l/1,cross/I1D9Wn1z8YN.css" data-bootloader-hash="0j1kIxH" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/y_/l/1,cross/VHRGIarD3Rh.css" data-bootloader-hash="nVQScdg" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/y4/l/1,cross/AibfqOkftS7.css" data-bootloader-hash="qZsMJkC" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yl/l/1,cross/mL1vj6SIO4S.css" data-bootloader-hash="c9XxCfz" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yB/l/1,cross/r9Qyhrwg8xh.css" data-bootloader-hash="q7yhC7Y" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yG/l/1,cross/MrJ_dqWFhf1.css" data-bootloader-hash="6g2/bVI" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yv/l/1,cross/kb4l_VVOdHs.css" data-bootloader-hash="/RVh9bo" crossorigin="anonymous" /> <link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v4/yo/l/1,cross/uNWOHuxBVTb.css" data-bootloader-hash="DHo8rIt" crossorigin="anonymous" /> <script src="https://static.xx.fbcdn.net/rsrc.php/v3/yy/r/Vjp7vPnuShH.js" data-bootloader-hash="waFoMbU" crossorigin="anonymous"></script> <script nonce="rF3EhZnQ">requireLazy(["HasteSupportData"],function(m){m.handle({"clpData":{"6476":{"r":1000,"s":1},"1838142":{"r":1,"s":1},"1958484":{"r":1,"s":1},"1963303":{"r":1,"s":1},"1848815":{"r":10000,"s":1}},"gkxData":{"1221":{"result":false,"hash":null},"5415":{"result":false,"hash":null},"7742":{"result":false,"hash":null},"8068":{"result":false,"hash":null},"20935":{"result":false,"hash":null},"20936":{"result":false,"hash":null},"20940":{"result":false,"hash":null},"21043":{"result":false,"hash":null},"21116":{"result":false,"hash":null},"25571":{"result":false,"hash":null},"25572":{"result":false,"hash":null},"20948":{"result":true,"hash":null}},"justknobxData":{"2269":{"r":true},"2552":{"r":false},"3323":{"r":true}}})});requireLazy(["TimeSliceImpl","ServerJS"],function(TimeSlice,ServerJS){(new ServerJS()).handle({"define":[["cr:310",["RunWWW"],{"__rc":["RunWWW",null]},-1],["cr:1078",[],{"__rc":[null,null]},-1],["cr:1080",["unexpectedUseInComet"],{"__rc":["unexpectedUseInComet",null]},-1],["cr:1126",["TimeSliceImpl"],{"__rc":["TimeSliceImpl",null]},-1],["cr:3725",["clearTimeoutWWWOrMobile"],{"__rc":["clearTimeoutWWWOrMobile",null]},-1],["cr:4344",["setTimeoutWWWOrMobile"],{"__rc":["setTimeoutWWWOrMobile",null]},-1],["cr:6108",["CSS"],{"__rc":["CSS",null]},-1],["cr:6640",["PromiseImpl"],{"__rc":["PromiseImpl",null]},-1],["cr:7385",["clearIntervalWWW"],{"__rc":["clearIntervalWWW",null]},-1],["cr:7389",["setIntervalAcrossTransitionsWWW"],{"__rc":["setIntervalAcrossTransitionsWWW",null]},-1],["cr:7391",["setTimeoutAcrossTransitionsWWW"],{"__rc":["setTimeoutAcrossTransitionsWWW",null]},-1],["cr:8958",["FBJSON"],{"__rc":["FBJSON",null]},-1],["cr:8959",["DTSG"],{"__rc":["DTSG",null]},-1],["cr:8960",["DTSG_ASYNC"],{"__rc":["DTSG_ASYNC",null]},-1],["cr:696703",[],{"__rc":[null,null]},-1],["cr:708886",["EventProfilerImpl"],{"__rc":["EventProfilerImpl",null]},-1],["cr:135",["RunBlue"],{"__rc":["RunBlue",null]},-1],["cr:6669",["DataStore"],{"__rc":["DataStore",null]},-1],["URLFragmentPreludeConfig",[],{"hashtagRedirect":false,"fragBlacklist":["nonce","access_token","oauth_token","xs","checkpoint_data","code"]},137],["CookiePrivacySandboxConfig",[],{"is_affected_by_samesite_lax":false},7723],["CometPersistQueryParams",[],{"relative":{},"domain":{}},6231],["CookieDomain",[],{"domain":"ai.meta.com"},6421],["GetAsyncParamsExtraData",[],{"extra_data":{}},7511],["BootloaderConfig",[],{"deferBootloads":false,"jsRetries":[200,500],"jsRetryAbortNum":2,"jsRetryAbortTime":5,"silentDups":false,"timeout":60000,"tieredLoadingFromTier":100,"hypStep4":false,"phdOn":false,"btCutoffIndex":1993,"fastPathForAlreadyRequired":true,"earlyRequireLazy":false,"enableTimeoutLoggingForNonComet":false,"deferLongTailManifest":true,"lazySoT":false,"translationRetries":[200,500],"translationRetryAbortNum":3,"translationRetryAbortTime":50},329],["CSSLoaderConfig",[],{"timeout":5000},619],["CookieCoreConfig",[],{"locale":{"t":604800,"s":"None"}},2104],["CurrentUserInitialData",[],{"ACCOUNT_ID":"0","USER_ID":"0","NAME":"","SHORT_NAME":null,"IS_BUSINESS_PERSON_ACCOUNT":false,"HAS_SECONDARY_BUSINESS_PERSON":false,"IS_FACEBOOK_WORK_ACCOUNT":false,"IS_INSTAGRAM_BUSINESS_PERSON":false,"IS_MESSENGER_ONLY_USER":false,"IS_DEACTIVATED_ALLOWED_ON_MESSENGER":false,"IS_MESSENGER_CALL_GUEST_USER":false,"IS_WORK_MESSENGER_CALL_GUEST_USER":false,"IS_WORKROOMS_USER":false,"APP_ID":"256281040558","IS_BUSINESS_DOMAIN":false},270],["LSD",[],{"token":"AVp7sO4uhcw"},323],["ServerNonce",[],{"ServerNonce":"D1askWnGTd__ZKeZlQKpmC"},141],["SiteData",[],{"server_revision":1018448430,"client_revision":1018448430,"push_phase":"C3","pkg_cohort":"BP:DEFAULT","haste_session":"20050.BP:DEFAULT.2.0..0.0","pr":1,"manifest_base_uri":"https:\/\/static.xx.fbcdn.net","manifest_origin":null,"manifest_version_prefix":null,"be_one_ahead":false,"is_rtl":false,"is_experimental_tier":false,"is_jit_warmed_up":true,"hsi":"7440532770668790760","semr_host_bucket":"6","bl_hash_version":2,"comet_env":0,"wbloks_env":false,"ef_page":null,"compose_bootloads":false,"spin":4,"__spin_r":1018448430,"__spin_b":"trunk","__spin_t":1732384034,"vip":"57.144.160.141"},317],["SprinkleConfig",[],{"param_name":"jazoest","version":2,"should_randomize":false},2111],["UserAgentData",[],{"browserArchitecture":"32","browserFullVersion":"7.0","browserMinorVersion":0,"browserName":"IE","browserVersion":7,"deviceName":"Unknown","engineName":"Trident","engineVersion":"3.0","platformArchitecture":"32","platformName":"Windows","platformVersion":"Vista","platformFullVersion":"Vista"},527],["PromiseUsePolyfillSetImmediateGK",[],{"www_always_use_polyfill_setimmediate":true},2190],["JSErrorLoggingConfig",[],{"appId":256281040558,"extra":[],"reportInterval":50,"sampleWeight":null,"sampleWeightKey":"__jssesw","projectBlocklist":[]},2776],["CookieCoreLoggingConfig",[],{"maximumIgnorableStallMs":16.67,"sampleRate":9.7e-5,"sampleRateClassic":1.0e-10,"sampleRateFastStale":1.0e-8},3401],["ImmediateImplementationExperiments",[],{"prefer_message_channel":true},3419],["UriNeedRawQuerySVConfig",[],{"uris":["dms.netmng.com","doubleclick.net","r.msn.com","watchit.sky.com","graphite.instagram.com","www.kfc.co.th","learn.pantheon.io","www.landmarkshops.in","www.ncl.com","s0.wp.com","www.tatacliq.com","bs.serving-sys.com","kohls.com","lazada.co.th","xg4ken.com","technopark.ru","officedepot.com.mx","bestbuy.com.mx","booking.com","nibio.no","myworkdayjobs.com","united-united.com","gcc.gnu.org"]},3871],["InitialCookieConsent",[],{"deferCookies":false,"initialConsent":[1,2],"noCookies":false,"shouldShowCookieBanner":false,"shouldWaitForDeferredDatrCookie":false,"optedInIntegrations":[],"hasGranularThirdPartyCookieConsent":false,"exemptedIntegrations":["advertiser_hosted_pixel","airbus_sat","amazon_media","apps_for_office","arkose_captcha","aspnet_cdn","autodesk_fusion","bing_maps","bing_widget","boku_wallet","bootstrap","box","cardinal_centinel_api","chromecast_extensions","cloudflare_cdnjs","cloudflare_datatables","cloudflare_relay","conversions_api_gateway","demandbase_api","digitalglobe_maps_api","dlocal","dropbox","esri_sat","fastly_relay","gmg_pulse_embed_iframe","google_ads_conversions_tag","google_drive","google_fonts_legacy","google_hosted_libraries","google_oauth_api","google_recaptcha","here_map_ext","hive_streaming_video","isptoolbox","jquery","js_delivr","kbank","mathjax","metacdn","microsoft_excel","microsoft_office_addin","microsoft_onedrive","microsoft_speech","microsoft_teams","mmi_tiles","open_street_map","paypal_billing_agreement","paypal_oauth_api","payu","plaid","platformized_adyen_checkout","plotly","pydata","recruitics","rstudio","salesforce_lighting","stripe","team_center","tripshot","trustly_direct_debit_ach","twilio_voice","unifier","unsplash_api","unsplash_image_loading","vega","yoti_api","youtube_oembed_api"]},4328],["WebConnectionClassServerGuess",[],{"connectionClass":"EXCELLENT"},4705],["BootloaderEndpointConfig",[],{"debugNoBatching":false,"maxBatchSize":-1,"endpointURI":"https:\/\/ai.meta.com\/ajax\/bootloader-endpoint\/"},5094],["ServerTimeData",[],{"serverTime":1732384034267,"timeOfRequestStart":1732384034151.9,"timeOfResponseStart":1732384034151.9},5943],["BigPipeExperiments",[],{"link_images_to_pagelets":false,"am_page_load_promise_timeout":false},907],["cr:7730",["getFbtResult"],{"__rc":["getFbtResult",null]},-1],["cr:8906",["goURIWWW"],{"__rc":["goURIWWW",null]},-1],["cr:925100",["RunBlue"],{"__rc":["RunBlue",null]},-1],["cr:7386",["clearTimeoutWWW"],{"__rc":["clearTimeoutWWW",null]},-1],["cr:7390",["setTimeoutWWW"],{"__rc":["setTimeoutWWW",null]},-1],["cr:1003267",["clearIntervalBlue"],{"__rc":["clearIntervalBlue",null]},-1],["cr:896462",["setIntervalAcrossTransitionsBlue"],{"__rc":["setIntervalAcrossTransitionsBlue",null]},-1],["cr:986633",["setTimeoutAcrossTransitionsBlue"],{"__rc":["setTimeoutAcrossTransitionsBlue",null]},-1],["cr:6799",["EventProfilerAdsSessionProvider"],{"__rc":["EventProfilerAdsSessionProvider",null]},-1],["IntlVariationHoldout",[],{"disable_variation":false},6533],["IntlNumberTypeProps",["IntlCLDRNumberType01"],{"module":{"__m":"IntlCLDRNumberType01"}},7027],["AdsManagerReadRegions",[],{"excluded_endpoints":["\/am_tabular"]},7950],["AsyncRequestConfig",[],{"retryOnNetworkError":"1","useFetchStreamAjaxPipeTransport":true},328],["DTSGInitialData",[],{},258],["FbtQTOverrides",[],{"overrides":{}},551],["IntlPhonologicalRules",[],{"meta":{},"patterns":{}},1496],["IntlViewerContext",[],{"GENDER":3,"regionalLocale":null},772],["NumberFormatConfig",[],{"decimalSeparator":".","numberDelimiter":",","minDigitsForThousandsSeparator":4,"standardDecimalPatternInfo":{"primaryGroupSize":3,"secondaryGroupSize":3},"numberingSystemData":null},54],["SessionNameConfig",[],{"seed":"2KYD"},757],["ZeroCategoryHeader",[],{},1127],["ZeroRewriteRules",[],{"rewrite_rules":{},"whitelist":{"\/hr\/r":1,"\/hr\/p":1,"\/zero\/unsupported_browser\/":1,"\/zero\/policy\/optin":1,"\/zero\/optin\/write\/":1,"\/zero\/optin\/legal\/":1,"\/zero\/optin\/free\/":1,"\/about\/privacy\/":1,"\/about\/privacy\/update\/":1,"\/privacy\/explanation\/":1,"\/zero\/toggle\/welcome\/":1,"\/zero\/toggle\/nux\/":1,"\/zero\/toggle\/settings\/":1,"\/fup\/interstitial\/":1,"\/work\/landing":1,"\/work\/login\/":1,"\/work\/email\/":1,"\/ai.php":1,"\/js_dialog_resources\/dialog_descriptions_android.json":0,"\/connect\/jsdialog\/MPlatformAppInvitesJSDialog\/":0,"\/connect\/jsdialog\/MPlatformOAuthShimJSDialog\/":0,"\/connect\/jsdialog\/MPlatformLikeJSDialog\/":0,"\/qp\/interstitial\/":1,"\/qp\/action\/redirect\/":1,"\/qp\/action\/close\/":1,"\/zero\/support\/ineligible\/":1,"\/zero_balance_redirect\/":1,"\/zero_balance_redirect":1,"\/zero_balance_redirect\/l\/":1,"\/l.php":1,"\/lsr.php":1,"\/ajax\/dtsg\/":1,"\/checkpoint\/block\/":1,"\/exitdsite":1,"\/zero\/balance\/pixel\/":1,"\/zero\/balance\/":1,"\/zero\/balance\/carrier_landing\/":1,"\/zero\/flex\/logging\/":1,"\/tr":1,"\/tr\/":1,"\/sem_campaigns\/sem_pixel_test\/":1,"\/bookmarks\/flyout\/body\/":1,"\/zero\/subno\/":1,"\/confirmemail.php":1,"\/policies\/":1,"\/mobile\/internetdotorg\/classifier\/":1,"\/zero\/dogfooding":1,"\/xti.php":1,"\/zero\/fblite\/config\/":1,"\/hr\/zsh\/wc\/":1,"\/ajax\/bootloader-endpoint\/":1,"\/mobile\/zero\/carrier_page\/":1,"\/mobile\/zero\/carrier_page\/education_page\/":1,"\/mobile\/zero\/carrier_page\/feature_switch\/":1,"\/mobile\/zero\/carrier_page\/settings_page\/":1,"\/aloha_check_build":1,"\/upsell\/zbd\/softnudge\/":1,"\/mobile\/zero\/af_transition\/":1,"\/mobile\/zero\/af_transition\/action\/":1,"\/mobile\/zero\/freemium\/":1,"\/mobile\/zero\/freemium\/redirect\/":1,"\/mobile\/zero\/freemium\/zero_fup\/":1,"\/privacy\/policy\/":1,"\/privacy\/center\/":1,"\/data\/manifest\/":1,"\/cmon":1,"\/cmon\/":1,"\/4oh4.php":1,"\/autologin.php":1,"\/birthday_help.php":1,"\/checkpoint\/":1,"\/contact-importer\/":1,"\/cr.php":1,"\/legal\/terms\/":1,"\/login.php":1,"\/login\/":1,"\/mobile\/account\/":1,"\/n\/":1,"\/remote_test_device\/":1,"\/upsell\/buy\/":1,"\/upsell\/buyconfirm\/":1,"\/upsell\/buyresult\/":1,"\/upsell\/promos\/":1,"\/upsell\/continue\/":1,"\/upsell\/h\/promos\/":1,"\/upsell\/loan\/learnmore\/":1,"\/upsell\/purchase\/":1,"\/upsell\/promos\/upgrade\/":1,"\/upsell\/buy_redirect\/":1,"\/upsell\/loan\/buyconfirm\/":1,"\/upsell\/loan\/buy\/":1,"\/upsell\/sms\/":1,"\/wap\/a\/channel\/reconnect.php":1,"\/wap\/a\/nux\/wizard\/nav.php":1,"\/wap\/appreg.php":1,"\/wap\/birthday_help.php":1,"\/wap\/c.php":1,"\/wap\/confirmemail.php":1,"\/wap\/cr.php":1,"\/wap\/login.php":1,"\/wap\/r.php":1,"\/zero\/datapolicy":1,"\/a\/timezone.php":1,"\/a\/bz":1,"\/bz\/reliability":1,"\/r.php":1,"\/mr\/":1,"\/reg\/":1,"\/registration\/log\/":1,"\/terms\/":1,"\/f123\/":1,"\/expert\/":1,"\/experts\/":1,"\/terms\/index.php":1,"\/terms.php":1,"\/srr\/":1,"\/msite\/redirect\/":1,"\/fbs\/pixel\/":1,"\/contactpoint\/preconfirmation\/":1,"\/contactpoint\/cliff\/":1,"\/contactpoint\/confirm\/submit\/":1,"\/contactpoint\/confirmed\/":1,"\/contactpoint\/login\/":1,"\/preconfirmation\/contactpoint_change\/":1,"\/help\/contact\/":1,"\/survey\/":1,"\/upsell\/loyaltytopup\/accept\/":1,"\/settings\/":1,"\/lite\/":1,"\/zero_status_update\/":1,"\/operator_store\/":1,"\/upsell\/":1,"\/wifiauth\/login\/":1}},1478],["DTSGInitData",[],{"token":"","async_get_token":""},3515],["WebDriverConfig",[],{"isTestRunning":false,"isJestE2ETestRun":false,"isXRequestConfigEnabled":false,"auxiliaryServiceInfo":{},"testPath":null,"originHost":null},5332],["EventConfig",[],{"sampling":{"bandwidth":0,"play":0,"playing":0,"progress":0,"pause":0,"ended":0,"seeked":0,"seeking":0,"waiting":0,"loadedmetadata":0,"canplay":0,"selectionchange":0,"change":0,"timeupdate":0,"adaptation":0,"focus":0,"blur":0,"load":0,"error":0,"message":0,"abort":0,"storage":0,"scroll":200000,"mousemove":20000,"mouseover":10000,"mouseout":10000,"mousewheel":1,"MSPointerMove":10000,"keydown":0.1,"click":0.02,"mouseup":0.02,"__100ms":0.001,"__default":5000,"__min":100,"__interactionDefault":200,"__eventDefault":100000},"page_sampling_boost":1,"interaction_regexes":{},"interaction_boost":{},"event_types":{},"manual_instrumentation":false,"profile_eager_execution":false,"disable_heuristic":true,"disable_event_profiler":false},1726],["cr:8828",[],{"__rc":[null,null]},-1],["cr:1094907",[],{"__rc":[null,null]},-1],["cr:1183579",["InlineFbtResultImpl"],{"__rc":["InlineFbtResultImpl",null]},-1],["cr:806696",["clearTimeoutBlue"],{"__rc":["clearTimeoutBlue",null]},-1],["cr:807042",["setTimeoutBlue"],{"__rc":["setTimeoutBlue",null]},-1],["FbtResultGK",[],{"shouldReturnFbtResult":true,"inlineMode":"NO_INLINE"},876],["AdsInterfacesSessionConfig",[],{},2393],["DataStoreConfig",[],{"expandoKey":"__FB_STORE","useExpando":true},2915],["AnalyticsCoreData",[],{"device_id":"$^|AcbnoGCMsMu-wHqYJV2bWGCILRLl33p9gGdvczvt4v019PCOQglBGwAG4j11onx-jdZbEdMz9penfQMgA7E4lPJ-fLns|fd.AcbQW1qocv6RJ-siYjhh5O4H63PCgQLy_mTtNWHpQr6qMgAMRdPKldsM-eKrEEBZ3igdUpi3s7S2XJgEGsR2UumH","app_id":"256281040558","enable_bladerunner":false,"enable_ack":true,"push_phase":"C3","enable_observer":false,"enable_cmcd_observer":false,"enable_dataloss_timer":false,"enable_fallback_for_br":true,"queue_activation_experiment":false,"max_delay_br_queue":60000,"max_delay_br_queue_immediate":3,"max_delay_br_init_not_complete":3000,"consents":{},"app_universe":1,"br_stateful_migration_on":true,"enable_non_fb_br_stateless_by_default":false,"use_falco_as_mutex_key":false,"is_intern":false,"enable_session_id_bug_fix":true},5237]],"require":[["markJSEnabled"],["URLFragmentPrelude"],["Primer"],["BigPipe"],["Bootloader"],["TimeSlice"],["AsyncRequest"],["FbtLogging"],["IntlQtEventFalcoEvent"],["RequireDeferredReference","unblock",[],[["AsyncRequest","FbtLogging","IntlQtEventFalcoEvent"],"sd"]],["RequireDeferredReference","unblock",[],[["AsyncRequest","FbtLogging","IntlQtEventFalcoEvent"],"css"]]]});});</script></head><body class="win x1 Locale_en_US" dir="ltr"><script type="text/javascript" nonce="rF3EhZnQ">requireLazy(["bootstrapWebSession"],function(j){j(1732384034)})</script><div class="_li"><div class="_8xs5"><div class="_9rdv _9bie _9bif _9bhn _9kum _9o9f"><!-- begin-react-placeholder --><div class="_aqmz _aqp3" style="color:;"><div class="_aqmc"><a class="_9b0l _9b0e _aqmh" href="#" data-ms-clickable="true" data-ms="{"creative":"link"}" role="button" style=""><img class="_aqmi _aqmj _8h4h img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/252294889_575082167077436_6034106545912333281_n.svg/meta-logo-primary_standardsize.svg?_nc_cat=1&ccb=1-7&_nc_sid=e280be&_nc_ohc=LoYkAYJxY00Q7kNvgHJ_n_D&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYC5YHYJemoL-66vVVY-oaBIB1sVVKHqLVuLFdNO-7UqPA&oe=6747F639" height="18" width="89" alt="Meta" /></a><div class="_aqmn"><li class="_aqmp"><a class="_9b0l _9b0e _aqmb" href="#" data-ms-clickable="true" data-ms="{"creative":"link"}" role="button" style="">Our approach</a></li><li class="_aqmp"><a class="_9b0l _9b0e _aqmb" href="#" data-ms-clickable="true" data-ms="{"creative":"link"}" role="button" style="">Research</a></li><li class="_aqmp"><a class="_9b0l _9b0e _aqmb" href="#" data-ms-clickable="true" data-ms="{"creative":"link"}" role="button" style="">Product experiences</a></li><li class="_aqmp"><a class="_9b0l _9b0e _aqm7 _aqmb" href="https://llama.meta.com/" data-ms-clickable="true" data-ms="{"creative":"click_external"}" target="_blank" rel="noreferrer noopener" data-lnfb-mode="ie" id="u_0_0_/Y" style="">Llama</a></li><li class="_aqmp"><a class="_9b0l _9b0e _aqm7 _aqmb" href="/blog/" data-ms-clickable="true" data-ms="{"creative":"click_internal"}" target="_self" style="">Blog</a></li><li class="_aqmp"><a class="_9b0l _9b0e _aqm7 _aqmb" href="https://www.meta.ai/?utm_source=ai_meta_site&utm_medium=web&utm_content=AI_nav&utm_campaign=April_moment" data-ms-clickable="true" data-ms="{"creative":"click_external"}" target="_blank" rel="noreferrer noopener" data-lnfb-mode="ie" id="u_0_1_Rj" style="">Try Meta AI</a></li><li class="_aqmp"><a class="_9b0l _9b0e _aqms" href="/" data-ms-clickable="true" data-ms="{"creative":"click_internal"}" style=""><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.545 2.546c3.349-3.35 8.746-3.4 12.031-.115 3.048 3.048 3.223 7.914.558 11.275.438.434 3.148 3.144 4.22 4.216l.41.41c.356.355.29.998-.072 1.36-.363.363-1.005.428-1.36.072-2.74-2.739-4.283-4.28-4.633-4.625-3.36 2.66-8.222 2.483-11.268-.563-3.286-3.285-3.234-8.682.114-12.03zm10.717 1.428a6.575 6.575 0 00-9.288 0 6.575 6.575 0 000 9.288 6.575 6.575 0 009.288 0 6.575 6.575 0 000-9.288z" fill="CurrentColor" fill-rule="evenodd"></path></svg></a></li></div></div></div><!-- end-react-placeholder --><noscript id="u_0_2_uw"></noscript></div><div><div class="_7h8s _7u-v"><div class="_9py_" style="height:56px"></div><div class="_amg5 _amg8"><div class="_amuh"><div class="_amui"><div class="_amgc">Insert Research Area here</div><div class="_amgd">Introducing SPDL: Faster AI model training with thread-based data loading</div><div class="_amge"><span class="_amum">November 22, 2024</span></div></div></div></div><div class="_amgj"><div class="_9bhp _9bhq _9bg- _9bh0 _9bh9 _9bhv _9998 _ar3s _as9p _9mp7 _8h4k"><div class="_a5gf _a5gh _a5i2 _a5jg"></div><p class="_a92o _a5e5 _a5w7">Takeaways:</p><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><br /><ul class="_90f8"><li>We present <a href="https://github.com/facebookresearch/spdl" target="_blank" data-lnfb-mode="ie"><u>SPDL</u></a>, a new data loading solution for AI model training.</li><li>SPDL is a framework-agnostic data loading solution that utilizes multi-threading, which achieves high-throughput in a regular Python interpreter (built without free-threading option enabled).</li><li>When compared against conventional process-based solutions, SPDL achieves 2x – 3x throughput while using a smaller amount of compute resources.</li><li>SPDL is compatible with Free-Threaded Python. Our experiment shows that running SPDL in FT Python with the GIL disabled achieves 30% higher throughput compared to the same FT Python with the GIL enabled.</li><li>The library is available at <a href="https://github.com/facebookresearch/spdl" target="_blank" data-lnfb-mode="ie"><u>https://github.com/facebookresearch/spdl</u></a>.</li></ul><br /><p>Training AI models at scale imposes many challenges. As the size of the model grows, the amount of computation for backpropagation increases, as does the amount of data to fit the model. The use of GPUs accelerates the computation—however, the faster the GPUs get, higher throughput data needs to be sent to the GPUs to keep them busy with computation all the time.</p><p>At Reality Labs, our researchers and engineers train various AI models to innovate in the world of spatial computing. To do that, we often need to iterate on ideas many times. It is essential to train our AI models quickly, and to do so, we need to make maximum use of GPUs. However, existing solutions for data loading don’t allow us to fine-tune performance, nor provide insight into performance.</p><p>To achieve better utilization of GPUs and improve the speed of model training, we developed a new data loading solution, Scalable and Performant Data Loading (SPDL). SPDL embraces thread-based parallelism, which has a smaller memory footprint compared to conventional process-based parallelism. SPDL implemented basic media processing operations that work complementary with this thread-based parallelism in existing Python versions.</p></div></div><div class="_9bhp _9bhq _9bg- _9bh0 _9bh9 _9bhv _9998 _ar3s _as9p _9mp7 _8h4k"><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5e5 _a5w7">Issues in AI model training efficiency</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div></div><div class="_9bhp _9bhq _9bg- _9bh0 _9bh9 _9bhv _9998 _ar3s _as9p _9mp7 _8h4k"><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>The GPU Efficiency Team at Reality Labs works with various teams to diagnose training inefficiencies and discuss their solutions. The causes of and solutions for inefficiencies span across many different subdomains, not limited to data loading.</p><p>Here we summarize the main issues in data loading we addressed when designing SPDL.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Concurrently performing operations of a different nature</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">When training models with large amounts of data, the data are retrieved from remote storages, preprocessed by the CPU, then transferred to GPU devices. The performance of these stages are bound by different factors. The data acquisition is mainly bound by network bandwidth, preprocessing is bound by CPU, and transfer is bound by memory bus. An ideal pipeline should perform these operations concurrently, and all the stages should be executed without waiting on the upstream or downstream stages. This requires adjusting the concurrency of each stage separately.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Tooling to diagnose and optimize data loading</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>In our experience, almost all the training pipelines have data-related issues. What makes it difficult to resolve these issues are the lack of insight on how a data loader is behaving and the lack of appropriate parameters for tuning the performance.</p><p><a href="https://pytorch.org/docs/stable/data.html" target="_blank" data-lnfb-mode="ie"><u>PyTorch's DataLoader class</u></a> provides a simple user experience by abstracting away the internal mechanics, but this abstraction also makes it difficult to profile performance. <a href="https://pytorch.org/docs/stable/profiler.html" target="_blank" data-lnfb-mode="ie"><u>The PyTorch Profiler</u></a> can provide insights about the Python call stack only when there’s no worker process, which isn’t applicable in actual training pipelines.</p><p>Because the dataset interface completely abstracts away the internal mechanism, the support DataLoader can provide for performance is limited. Oftentimes increasing the value of <code class="_7g-e">num_workers</code> and enabling <code class="_7g-e">pin_memory</code> are the only options. However, increasing the number of worker processes comes with undesirable side-effects.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Increased resource usage from launching subprocess</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>When spawning* a subprocess, a new Python interpreter is launched and its dependencies are loaded. Then, instances of datasets and data loaders are copied from the main process to the subprocess. We saw cases where this memory consumption adds up to the order of multiple gigabytes per subprocess. This makes it difficult to increase the concurrency of data loading.</p><p>In addition to the stationary memory consumption, the use of subprocesses also increases the dynamic memory consumption. For example, when a batch Tensor is created in a background process and is sent to the main process, it’s first serialized and written to a memory region shared between these processes—then the main process fetches and deserializes the data back into a batch Tensor. So when a batch Tensor is created in a background process, it’s copied at least twice before it’s used by the main process.</p><p>Similar to CPU memory boundaries among processes, GPU memories are also isolated between processes. Subprocesses can’t access the GPU memory space used by the main process, so data can be sent to GPU memory only after it’s sent to the main process.</p><p><i>*An alternative is to fork the main process when creating a subprocess, but due to some subtlety in the way libraries are initialized, this often causes a segmentation fault, so spawning is the only safe option.</i></p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Global Interpreter Lock</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>The reason why conventional data loading solutions use subprocesses, despite many side effects that hinder scaling their throughput, is Python's Global Interpreter Lock (GIL). The GIL protects the code from race condition, which prevents the effective use of threading.</p><p>There are significant efforts underway to make GIL optional, and soon the use of multi-threading in Python will become standard. Switching from subprocesses to threading should resolve the issues we noted above.</p><p>We then asked ourselves the following questions:</p><ul class="_90f8"><li>What would a data loading solution look like without the constraints imposed by GIL?</li><li>Can we bring its benefits to the current Python environment before free-threading becomes widely available?</li><li>There are many Python libraries built for high-performance computing. They achieve high performance by releasing GIL. Can we apply this technique in the biggest bottleneck of the data loading pipeline?</li></ul></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5e5 _a5w7">Enter SPDL</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">We developed SPDL, a new data loading solution to solve training inefficiencies at scale. And since the use of subprocesses comes with many downsides mentioned above, we took this opportunity to explore the design of data loading in free-threading Python.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Design considerations</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>The following are the key design criteria of SPDL, which reflects the aforementioned issues in training pipelines:</p><ol><li><b>High-throughput:</b> The most fundamental problem SPDL solves is data loading being a bottleneck of the training pipeline. To keep GPUs busy with computation, SPDL must achieve high-throughput.</li><li><b>Easy to reason about the performance:</b> The data loading consists of multiple stages with different bounding factors. It is of the utmost importance to be able to measure the performance of each stage separately.</li><li><b>Doesn’t encapsulate the preprocessing operations:</b> Encapsulation is a powerful concept in object-oriented programming. However, when optimizing the data processing pipeline, we need to be able to tune each stage separately. If a Dataset class contains the whole logic of decoding and preprocessing, we have to replace the whole Dataset class. This leads to poor reuse of existing components.</li><li><b>No domain-specific language (DSL):</b> The target audience of SPDL is researchers and ML engineers, whose goal is to develop new AI models. We want to keep the time they spend learning the tool minimal and instead allow them to focus on AI modeling, so we don’t introduce DSL in SPDL. Additionally, maintaining and extending DSL requires a lot of work, and the amount of effort grows exponentially as the DSL grows. We want to keep the maintenance cost of SPDL minimum.</li><li><b>Incorporates asynchronous utilities seamlessly:</b> We assume data is stored in network storage, and many network utilities provide asynchronous API for better performance. We want to leverage the fact that natively async functions can be executed concurrently without being constrained by GIL.</li><li><b>Flexible:</b> The way data is prepared varies from pipeline to pipeline. Sometimes data is in an archive format, so the whole archive has to be downloaded. Some pipelines have to gather data from different sources. To support these different needs, SPDL needs to be flexible.</li><li><b>Simple and intuitive:</b> When we asked teams about their data processing pipeline, they explained the pipeline in high-level abstraction, instead of going over the API calls used in the pipeline. Ideally, they can just express the process in the code and the code reads that way.</li><li><b>Fault tolerant:</b> Data acquisition over the network can fail for various reasons. Media data is often malformed, and decoding malformed data can fail. The pipeline needs to be robust to such failures. It also needs to log failures and signal the errors to pipeline owners.</li></ol></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Architecture of the execution engine</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>SPDL consists of the following components:</p><ul class="_90f8"><li>Task executor (the pipeline abstraction)</li><li>Utilities that facilitate building the pipeline</li><li>Efficient media processing operations that are thread-safe and release GIL</li></ul><p>The core of SPDL’s task execution engine is an async event loop. The async event loop is responsible for scheduling new tasks and reacting to task completions. It has an API to run synchronous operations asynchronously by delegating their executions to a thread. This makes an async event loop a surrogate for running synchronous functions in the thread pool. (As mentioned previously, so as to achieve true concurrency, the synchronous functions must release GIL when they are executed in a thread.)</p><p>Since running an async event loop itself is a blocking operation, it is run in a background thread. The main thread and the background thread use a thread-safe queue to pass the data. By changing the size of the queue, we can adjust the amount of preprocessed data buffered before its consumption in the main thread.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.2365-6/468044616_557963623513695_4178294153676127108_n.png?_nc_cat=101&ccb=1-7&_nc_sid=e280be&_nc_ohc=BWi5ITtzHwAQ7kNvgEe_UXS&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYA71_QJjkkJ3bNwnK1qejbjfsLe0ITxTIi26iDVBCzjBg&oe=675C4979" alt="" id="u_0_3_j2" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>If operations for data acquisition, preprocessing, and data transfer all release GIL (or are natively supported by asyncio), then the SPDL’s task execute engine can perform them in a background thread without relying on a subprocess. (In case some of the operations hold the GIL, that part can be independently executed in a process.)</p><p>In the pipelines we investigated, when data loading is the bottleneck, the real bottleneck is often the media processing—that is, decoding images/videos, resizing, and batching. Such operations don’t rely on any functionalities of the Python interpreter, so they can release GIL without side effects. And media decoding requires binding third-party libraries written in other languages like C, we can release GIL at no runtime overhead. Since media processing is some of the most performance critical code, we implemented media decoding functionalities from scratch, carefully measuring performance at all stages of development, while ensuring that these functionalities are thread-safe and release GIL.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Pipeline and concurrency</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">As mentioned above, loading data from remote storages to GPU go through multiple stages with different bounding factors. These stages require different scaling strategies, so it’s important that we can adjust the concurrency of the stages separately. Therefore, we designed the data loading pipeline in a way that users can explicitly specify the concurrency of each stage separately.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.2365-6/467867537_1065946868340400_2802839178575046307_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=5HsA_NcNFc4Q7kNvgEfFLAz&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDo_5oraUYg7j5058dMCAQ9nWaTHE2NawedXG0O3kWu3A&oe=675C4D3E" alt="" id="u_0_4_lL" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The tasks in each stage are scheduled by async event loop concurrently.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Media processing module</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>Processing multimedia is often a bottleneck in data loading, but also an opportunity for improving the performance. For low-level operations (such as decoding audio, image, video and resizing), we rely on external libraries, which do not depend on Python. This means we can execute them while releasing the GIL, and once the GIL is released, these functions can be executed concurrently in Python's thread pool.</p><p>To achieve high performance, it is important to not introduce unnecessary operations and memory copy. It is common practice to load individual media samples as a Tensor and later batch them together, however this creates multiple intermediate copies that are deallocated immediately. Additionally, if the batch Tensor is created in the subprocess and transferred to the main process, additional copies are made. The following figure illustrates how a batch of images is created and how many times memory are allocated along the way.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.2365-6/467818250_1249748192902657_3972342565488761892_n.png?_nc_cat=105&ccb=1-7&_nc_sid=e280be&_nc_ohc=VWokBbOhbcMQ7kNvgGd8r0r&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAndlRUE7ybq7liphXNMcfOljMF1EXJYoEaZREP_7DSXA&oe=675C52AA" alt="" id="u_0_5_lH" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">In SPDL, we implemented IO functions that can pass around the data used by the underlying decoding libraries without converting them to Tensor. This avoids creating the intermediate Tensors. These decoded data can be copied to a batch Tensor directly without creating an intermediate Tensor for each sample in the batch. Additionally, when the media data is copied to the batch, the data can be written to the page-locked memory directly so that GPUs can access them directly. The following figure illustrates this.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/467830688_578969098414388_4964508202353310652_n.png?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=1DQiltYojXwQ7kNvgE-FD2_&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDp4NtHZmd1NCJbozOjaBbp0-C3gYsV0flAATO3W8THbQ&oe=675C4DA9" alt="" id="u_0_6_Hk" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5e5 _a5w7">Examples</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The following code snippets illustrate the usage of SPDL.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Constructing a pipeline</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg4-2.xx.fbcdn.net/v/t39.2365-6/467858006_8467522473345985_3099663279655725440_n.png?_nc_cat=111&ccb=1-7&_nc_sid=e280be&_nc_ohc=IZTzgl6BWGEQ7kNvgE_2Hvn&_nc_zt=14&_nc_ht=scontent-hkg4-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAnh6ZriaFE90oP8kkwDduUUvz7p56766YCn1hS1-c5RQ&oe=675C6266" alt="" id="u_0_7_8y" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The above snippet constructs a Pipeline object consisting of four stages: <code class="_7g-e">generator</code>, <code class="_7g-e">download</code>, <code class="_7g-e">preprocess</code>, and <code class="_7g-e">batchify</code>, which are expected to be provided by users. The interface of these stages can be something like the following. The functionalities of each stage should be self-explanatory from the name and the signature.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.2365-6/468040003_541070438740698_4610484016512570171_n.png?_nc_cat=105&ccb=1-7&_nc_sid=e280be&_nc_ohc=8mF98FNVUi8Q7kNvgHjFSB3&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCDjgi48eMoph3CaoNaBtXvD-mGkiULP_z2XrVlASxQsw&oe=675C5112" alt="" id="u_0_8_Sr" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>Each stage in the pipeline can be assigned a different concurrency. The optimal values will depend on the nature of the stage and the environment the pipeline is executed. For example, the maximum concurrency of <code class="_7g-e">download</code> will depend on the network bandwidth and API rate limit on the remote server.</p><p>The <code class="_7g-e">generator</code> and <code class="_7g-e">batchify</code> stages are, to some degree, analogous to the concept of sampler and collate function from PyTorch DataLoader, but since Pipeline doesn’t dictate what kind of data should be passed between stages, and the <code class="_7g-e">batchify</code> stage here (in conjunction with <code class="_7g-e">aggregate</code>) is no different from other stages defined with <code class="_7g-e">pipe</code> method, they are not a counterpart in a strict sense.</p><p>The <code class="_7g-e">buffer_size</code> argument in <code class="_7g-e">add_sink</code> corresponds to the idea of <code class="_7g-e">prefetch_factor</code> from PyTorch DataLoader, but there is a slight difference. In PyTorch, it is part process, so the number of items buffered is <code class="_7g-e">prefetch_factor x num_workers</code>. Meanwhile in SPDL, the <code class="_7g-e">buffer_size</code> is simply the maximum number of items buffered.</p><p>The <code class="_7g-e">num_threads</code> argument in the <code class="_7g-e">build</code> method determines the number of threads in the thread pool attached to the async event loop. This is the maximum number of jobs concurrently scheduled when the async event loop converts synchronous functions to asynchronous functions. Natively asynchronous functions are not included in this, as they don’t require a thread to run in the background.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Using the pipeline</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">Once the pipeline is constructed, it can be used as an iterable object as follows.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.2365-6/467854688_560930496537908_7855063935620694489_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=BrhXCPzq4K8Q7kNvgHVdapM&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCtxkA455YchWhwgs7jhqA93_CPb3QtQj5f12OG4ZwSWg&oe=675C44E4" alt="" id="u_0_9_iQ" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Image processing</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The following example shows how an image can be decoded. In SPDL, the decoding operation is broken down into primitive operations like demuxing and decoding, so that users can control the parallelism at the lowest level.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/467899057_458260057292762_7006306749517498603_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=XU6MR5cIOv8Q7kNvgHvVlr5&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDaauRZ77nlOs22Sq_Txz1VwwjYIZ9nwORp1TnHUfvFiQ&oe=675C62FB" alt="" id="u_0_a_zq" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The following code snippet shows how the images decoded by the above code can be copied into a batch and transferred to a GPU.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.2365-6/467829534_965410685408784_3224733377451675742_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=748YqvbHa9kQ7kNvgElSicl&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCNsioE5JfWWuGQSi_ByzLXtf7kewIfmtf3WrBS-8Y9mg&oe=675C72DE" alt="" id="u_0_b_eu" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The page-locked memory can be re-used, so it needs to be allocated only once. The transfer function can take PyTorch's CUDA caching allocator, so we can avoid CUDA memory allocations too.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Tracing the data loading pipeline</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">PyTorch has a powerful profiler, which can show the timeline of Python stacks. The profiler does not support tracing child processes, therefore, it was not possible to trace the data loading pipeline when using PyTorch DataLoader. Since SPDL uses multithreading for pipeline execution, it is possible to visualize the timeline of data loading using the PyTorch profiler. This is highly useful when analyzing the performance of data loading and finding the bottleneck. The figure below shows an example trace where two threads are processing data concurrently.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/467817888_1081604740175655_1343230018837792557_n.png?_nc_cat=104&ccb=1-7&_nc_sid=e280be&_nc_ohc=8LSCshz2_IkQ7kNvgGrsj1u&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYA-gdAWdu2abK-UXHU-BOrBV2d9rPkuZB8SJCCcK8DMcA&oe=675C458E" alt="" id="u_0_c_TX" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5e5 _a5w7">Performance</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Comparison against PyTorch DataLoader</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">We compared the performance of SPDL against PyTorch DataLoader, using the ImageNet validation dataset, which consists of 5000 images. The dataset is located in the local file system, so there is no network transfer in this experiment. We varied the batch size and the number of workers and measured the time for each solution to complete the process. For PyTorch DataLoader, we used TorchVision's default I/O implementation.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cy _a5w7">Time to first batch</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The following table shows the time for initializing the data loader for different numbers of workers. For PyTorch, we used the "forkserver" subprocess context. In the case of PyTorch, the initialization time grows as the number of workers increases, but it stays constant for SPDL. This is the benefit of adopting thread-based parallelism.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/467708283_1214292806332292_5974026267551799561_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=oRDzp90CV74Q7kNvgF3oD_j&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAdOlM5uMG5mAYOnsh4HPU91PQ-5y1mJ7fWXo6k7jXdDA&oe=675C4785" alt="" id="u_0_d_Zf" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cy _a5w7">Post-init throughput</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5c- _a5w7">The following figure compares the throughput of PyTorch and SPDL after the initialization. Once initialized PyTorch DataLoader's subprocess workers are not constrained by the GIL, their performance scales well. SPDL's thread-based parallelism is still constrained by the GIL, therefore, when they do not scale as well as PyTorch at a higher count of workers. However, up to 16 workers, it shows similar performance or sometimes better.</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/467870714_8321053254661739_2454676221431077461_n.png?_nc_cat=107&ccb=1-7&_nc_sid=e280be&_nc_ohc=hei-3_IBLZ4Q7kNvgEAHP2V&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDGLLubtQgzv6ZLT4PMSvHWJcgasb7fu__KiFDgv2tOyA&oe=675C45C5" alt="" id="u_0_e_uh" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cy _a5w7">End-to-End model evaluation</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>We evaluated the <code class="_7g-e">vit_b_16</code> model from TorchVision, using a H100 GPU. We applied <code class="_7g-e">torch.compile</code> and used <code class="_7g-e">bfloat16</code> to optimize the inference time. The following figure shows the end-to-end throughput of PyTorch and SPDL. Due to the initialization time, the end-to-end performance of PyTorch DataLoader does not scale as much as the post-init throughput we saw previously. On the other hand, the initialization time for SPDL is small and constant, so it scales well up to 16 threads.</p><p>With 16 threads, SPDL could feed 50,000 images to the model in 18 seconds.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/467713947_564491442790344_4109051796259411971_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=-KPORKEiZq8Q7kNvgF9yRui&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYB50clBrie-vvBKAY_nJklytnrqPc8X1fAEaBQzwvulxg&oe=675C594F" alt="" id="u_0_f_eJ" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">In Production System</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>When training models in a production environment, things get more complicated. The training pipeline has additional dependencies for interacting with the system, some of which performs additional initialization when a subprocess is launched. The training data is downloaded from the network, so the network latency affects the performance. We integrated SPDL into one of our internal model training pipelines and saw significant improvement.</p><p>The pipeline we experimented with trains a model that handles video and audio. The training data is retrieved from network storage. The original data loading was based onPyTorch DataLoader, and processed video and audio with TorchAudio's StreamingMediaDecoder.</p><p>With SPDL, we can adjust the concurrencies of the network transfer and video processing independently. The SPDL's video processing functions use less memory than TorchAudio. SPDL reports the throughput of download and video processing separately, so it is easy to know where the bottleneck is and adjust the parameter.</p><p>The throughput of data loading (measured from remote storage to GPU) was 3x faster with SPDL. This shifted the bottleneck to be model computation. We applied various optimizations to the model, and in the end we achieved double the model training speed.</p><p>The memory consumption was reduced to less than half. Most of the saved memory originated from the additional platform-related dependencies performing static initialization. By getting rid of subprocesses, the time and memory for initialization was removed completely.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5cx _a5w7">Free-Threaded Python</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>As we rolled out the solution internally, we started to hear more and more about the free-threaded Python. We assume that it still takes some time before the free-threaded Python becomes stable and production-ready. However, the ideal path is that SPDL works with FT Python seamlessly so that users can enjoy its benefit without additional migration work.</p><p>One thing we learned along the way of SPDL development is that simply replacing the pool of subprocess workers with the pool of thread workers does not automatically improve the performance. The software architecture needs to be tailored towards thread-based parallelism. So the question is "Does the performance of SPDL improve in FT Python?" To answer this question, we conducted an experiment to see if SPDL is compatible with FT Python and if the performance improves. The answer is yes to both. The data loading pipeline built with SPDL works with FT Python without any code change, and the performance improves.</p><p>The figure below shows the throughput of loading the ImageNet dataset. We can see that the throughput is increased when the GIL is disabled.</p></div><div class="_a5gf _a5gg _a5i2 _a5jg"></div><img class="_as9p _1-qs _9mk0 img" src="https://scontent-hkg4-2.xx.fbcdn.net/v/t39.2365-6/468083281_594140949954283_2426713969066504197_n.png?_nc_cat=111&ccb=1-7&_nc_sid=e280be&_nc_ohc=1aWtWnTwoKYQ7kNvgFyoykW&_nc_zt=14&_nc_ht=scontent-hkg4-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCdJjvarc_71cH-nk_X95N7h2kUgYufgE_bz5migTnx7g&oe=675C56F6" alt="" id="u_0_g_8u" /><div class="_a5gf _a5gg _a5i2 _a5jg"></div><p class="_a92o _a5e5 _a5w7">Conclusion</p><div class="_a5gf _a5gg _a5i2 _a5jg"></div><div class="_a5ci _a5cs _a92o _a5c- _a5w7"><p>SPDL was developed by Reality Labs to improve the performance of model training. It is designed from ground up to be efficient. It uses thread-based parallelism, which is constrained by the GIL, but it can outperform the process-based parallelism while consuming a smaller amount of memory. It provides insight into the data loading performance and knobs to optimize it. It’s applicable to many multimodal model training, including those that don’t use PyTorch. SPDL is compatible with free-threaded Python and receives further performance improvement when the GIL is disabled.</p><p>SPDL paves a way towards AI development in the era where free-threaded Python becomes the standard.</p></div><div class="_a5gf _a5gj _a5h7 _a5i5 _a5il _a5jk _a5jy"><a class="_a6rw _a6ee _a6ep _a6eo _a6hq _a6ej" href="https://github.com/facebookresearch/spdl" data-ms-clickable="true" data-ms="{"creative":"click_external"}" target="_blank" rel="noreferrer noopener" data-lnfb-mode="ie" id="u_0_h_F5" style=""><div class="_a6eu">Github<svg class="_a6er _a6et _a6er _a6et" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.746 10H26V21.254L24.0301 21.2735L24.0297 13.377L11.4067 26L10 24.5933L22.6039 11.9894L14.746 11.9894V10Z" fill="CurrentColor"></path></svg></div></a></div></div><div class="_9bhp _9bhq _9bg- _9bh0 _9bh9 _9bhv _9998 _ar3s _as9p _9mp7 _8h4k"><div class="_9bho _ar3s _9bir _9bhj _9bj3" style="box-sizing:border-box;"><hr /></div><div class="_a5gf _a5gi _a5i4 _a5ji"><div class="_amom _amot"><div class="_amon">Written by: </div><div class="_amop"><div class="_amoq"><div class="_amos">Moto Hira</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Christian Puhrsch</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Roman Malinovskyy</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Valentin Andrei</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Gael Le Lan</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Miguel Martin</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Gokul Gunasekaran</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Yuta Inoue</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Francisc Bungiu</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Olga Gerasimova</div><div class="_amou">Software Engineer</div></div><div class="_amoq"><div class="_amos">Abhinandan Krishnan</div><div class="_amou">Engineering Manager</div></div><div class="_amoq"><div class="_amos">Raghuraman Krishnamoorthi</div><div class="_amou">Engineering Manager</div></div></div></div></div><div class="_ampf"><span class="_ampk">Share:</span><a class="_amcw _ampl" href="https://www.facebook.com/sharer/sharer.php?u=https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/" data-ms-clickable="true" data-ms="{"creative":"click_share","creative_detail":"blogpost-facebook"}" target="_blank" rel="noreferrer noopener"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" class="_ampm"><path d="M35.4255 17.5409C35.4255 27.2285 27.5722 35.0818 17.8846 35.0818C8.19708 35.0818 0.34375 27.2285 0.34375 17.5409C0.34375 7.85333 8.19708 0 17.8846 0C27.5722 0 35.4255 7.85333 35.4255 17.5409Z" class="_ampn"></path><path d="M21.2012 18.0861L21.5906 15.5485H19.1558V13.9018C19.1558 13.2076 19.4959 12.5309 20.5864 12.5309H21.6933V10.3704C21.6933 10.3704 20.6888 10.199 19.7284 10.199C17.7232 10.199 16.4125 11.4144 16.4125 13.6145V15.5485H14.1836V18.0861H16.4125V24.2205H19.1558V18.0861H21.2012Z" class="_ampo"></path></svg></a><a class="_amcw _ampl" href="https://www.twitter.com/share?url=https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/" data-ms-clickable="true" data-ms="{"creative":"click_share","creative_detail":"blogpost-twitter"}" target="_blank" rel="noreferrer noopener" data-lnfb-mode="ie"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" class="_ampm"><path d="M35.3142 17.5409C35.3142 27.2285 27.4609 35.0818 17.7733 35.0818C8.08575 35.0818 0.232422 27.2285 0.232422 17.5409C0.232422 7.85333 8.08575 0 17.7733 0C27.4609 0 35.3142 7.85333 35.3142 17.5409Z" class="_ampn"></path><path d="M23 15.0582C23.0084 15.1755 23.0084 15.2927 23.0084 15.41C23.0084 18.986 20.2867 23.1063 15.3121 23.1063C13.7795 23.1063 12.3558 22.6625 11.1582 21.892C11.376 21.9171 11.5853 21.9255 11.8114 21.9255C13.076 21.9255 14.2401 21.4984 15.1697 20.7698C13.9805 20.7447 12.9839 19.9658 12.6405 18.8939C12.808 18.919 12.9755 18.9357 13.1514 18.9357C13.3943 18.9357 13.6371 18.9022 13.8632 18.8436C12.6238 18.5924 11.6942 17.5037 11.6942 16.1888V16.1553C12.0543 16.3563 12.473 16.482 12.9169 16.4987C12.1883 16.0129 11.7109 15.1839 11.7109 14.2459C11.7109 13.7434 11.8449 13.2828 12.0794 12.8808C13.411 14.5223 15.4125 15.5942 17.6569 15.7115C17.6151 15.5105 17.5899 15.3011 17.5899 15.0918C17.5899 13.601 18.7959 12.3867 20.295 12.3867C21.0738 12.3867 21.7773 12.7133 22.2714 13.2409C22.8828 13.1237 23.469 12.8976 23.9882 12.5877C23.7872 13.2158 23.3601 13.7434 22.799 14.0784C23.3434 14.0198 23.871 13.869 24.3567 13.6597C23.9883 14.1956 23.5276 14.673 23 15.0582Z" class="_ampo"></path></svg></a><a class="_amcw _ampl" href="https://www.linkedin.com/sharing/share-offsite?url=https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/" data-ms-clickable="true" data-ms="{"creative":"click_share","creative_detail":"blogpost-linkedin"}" target="_blank" rel="noreferrer noopener" data-lnfb-mode="ie"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" class="_ampm"><path d="M35.2029 17.5409C35.2029 27.2285 27.3496 35.0818 17.662 35.0818C7.97442 35.0818 0.121094 27.2285 0.121094 17.5409C0.121094 7.85333 7.97442 0 17.662 0C27.3496 0 35.2029 7.85333 35.2029 17.5409Z" class="_ampn"></path><path d="M23.1586 11.6523H12.6483C12.1667 11.6523 11.7754 12.0491 11.7754 12.5362V23.0274C11.7754 23.5144 12.1667 23.9112 12.6483 23.9112H23.1586C23.6402 23.9112 24.0343 23.5144 24.0343 23.0274V12.5362C24.0343 12.0491 23.6402 11.6523 23.1586 11.6523ZM13.6635 22.16V16.3096H15.4832V22.16H13.6635ZM14.5719 15.5106C13.9891 15.5106 13.5184 15.0372 13.5184 14.4571C13.5184 13.877 13.9891 13.4036 14.5719 13.4036C15.1521 13.4036 15.6254 13.877 15.6254 14.4571C15.6254 15.04 15.1548 15.5106 14.5719 15.5106ZM22.2912 22.16H20.4743V19.3141C20.4743 18.6355 20.4606 17.7626 19.5302 17.7626C18.5834 17.7626 18.4384 18.5014 18.4384 19.2649V22.16H16.6215V16.3096H18.3645V17.1086H18.3892C18.6327 16.6489 19.2265 16.1646 20.1103 16.1646C21.9492 16.1646 22.2912 17.3768 22.2912 18.9529V22.16Z" class="_ampo"></path></svg></a><span class="_ampl"><a tabindex="-1" href="#" role="button" id="u_0_i_dO"></a></span></div><div class="_9bho _ar3s _9bir _9bhj _9bj3" style="box-sizing:border-box;"><hr /></div></div><div class="_9bhp _9bhq _9bhs _9bh0 _9bh9 _9bhv _9998 _ar3s _as9p _9mp7 _8h4k"><div class="_a5gf _a5gn _a5i9 _a5jj"><div class="_amh_" style="background-color:#F1F4F7;border-radius:20px;"><div class="_a5gf _a5gl _a5hy _a5h6 _a5hl _a5i7 _a5ja _a5ik _a5iz _a5jj _a5kj _a5jw _a5k6"><p class="_a92o _a5cx _a5w7" style="color:#1C2B33;">Our latest updates delivered to your inbox</p><div class="_9py_" style="height:16px"></div><p class="_a92o _a5c- _a5w7" style="color:#1C2B33;"><a href="https://ai.facebook.com/subscribe/" target="_blank">Subscribe</a> to our newsletter to keep up with Meta AI news, events, research breakthroughs, and more.</p></div></div></div></div></div><div class="_a5gf _a5gp _a5h9 _a5ib _a5in _a5jn _a5jy"><div class="_a5x4"><div class="_8h4z _8h4- _a4zf" style="box-sizing:border-box;"><div class="_as9p _as8y" style="background-image:linear-gradient(120deg, #393840, #18364E, #1C4041);opacity:1;box-sizing:border-box;"></div></div><div class="_a5gf _a5go _a5i1 _a5h9 _a5hq _a5ia _a5je _a5in _a5j1 _a5jm _a5km _a5jz _a5k9"><div class="_a5gf _a5hy _a5h1 _a5hl _a5j4 _a5if _a5it"><p class="_a92o _a5e5 _a5wf _a5ct" style="color:#FFFFFF;">Join us in the pursuit of what’s possible with AI.</p></div><div class="_9bhp _9bhq _9bhs _9bh0 _9bh9 _9bic _9998 _ar3s _as9p _9mp7 _8h4o"><a class="_a6rw _a6ee _a6em _ae82 _a6ek" href="https://www.metacareers.com/jobs/?is_leadership=0&sub_teams%5B0%5D=Artificial+Intelligence&is_in_page=0&fbclid=IwAR0O8BF7opOj5gASJmwYVGalPPXTLu-6xrl9w00eC7Rarp2HQ9uEH8tERFw" aria-label="Link to Meta Careers in AI(opens in new tab)" data-ms-clickable="true" data-ms="{"creative":"click_external-link","creative_detail":"blog_template_careers_cta"}" target="_blank" rel="noreferrer noopener" data-lnfb-mode="ie" style="color:#FFFFFF;"><svg class="_a6en" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M19 37C9.05887 37 1 28.9411 1 19C1 9.05887 9.05887 1 19 1C28.9411 1 37 9.05887 37 19C37 28.9411 28.9411 37 19 37Z" stroke="#FFFFFF"></path><path class="_a7uh" d="M16.3102 12.2707L26.1574 12.2707L26.1574 22.1179L24.4338 22.135L24.4335 15.2256L13.3883 26.2707L12.1574 25.0398L23.1858 14.0114L16.3102 14.0115L16.3102 12.2707Z" fill="#FFFFFF"></path><path class="_a7ui" d="M16.3102 12.2707L26.1574 12.2707L26.1574 22.1179L24.4338 22.135L24.4335 15.2256L13.3883 26.2707L12.1574 25.0398L23.1858 14.0114L16.3102 14.0115L16.3102 12.2707Z" fill="#FFFFFF"></path></svg>See all open positions</a></div></div></div></div><div class="_ampp"><div class="_ampq">Related Posts</div><div class="_ampr"><div class="_amda _amdk"><div class="_a5n5 _al8o _a5na _acel"><div class="_8h4z _8h4- _a4zf"><img class="_amdb img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.2365-6/338318848_238475658638014_6444534044370711549_n.gif?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=tuSwNioUQecQ7kNvgFCE61Y&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYC1JPFL3OkY9PjVW1iGUeX1Xo8wsa6K21gszREkIdJ4kg&oe=675C6DA9" alt="" /></div></div><div class="_amdc"><div class="_amdj">Computer Vision</div><div class="_amde">Introducing Segment Anything: Working toward the first foundation model for image segmentation</div><div class="_amdj">April 5, 2023</div></div><div class="_amdh"><a class="_a6ef _a6rw _a6ee _a6em _a6ek" href="https://ai.meta.com/blog/segment-anything-foundation-model-image-segmentation/" aria-label="Read Introducing Segment Anything: Working toward the first foundation model for image segmentation" data-ms-clickable="true" data-ms="{"creative":"click_internal-link","creative_detail":"related-posts-card-1"}" data-lnfb-mode="ie" style="color:#1C2B33;"><svg class="_a6en" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M19 37C9.05887 37 1 28.9411 1 19C1 9.05887 9.05887 1 19 1C28.9411 1 37 9.05887 37 19C37 28.9411 28.9411 37 19 37Z" stroke="#1C2B33"></path><path class="_a7uj" d="M21.9657 12L28.9287 18.963L21.9657 25.926L20.7348 24.7193L25.6203 19.8334L10.0001 19.8334V18.0926L25.5966 18.0926L20.7348 13.2309L21.9657 12Z" fill="#1C2B33"></path><path class="_a7uk" d="M21.9657 12L28.9287 18.963L21.9657 25.926L20.7348 24.7193L25.6203 19.8334L10.0001 19.8334V18.0926L25.5966 18.0926L20.7348 13.2309L21.9657 12Z" fill="#1C2B33"></path></svg><span>Read post</span></a></div></div><div class="_amda _amdk"><div class="_amdd">FEATURED</div><div class="_a5n5 _al8o _a5na _acel"><div class="_8h4z _8h4- _a4zf"><img class="_amdb img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/284099254_760295688673506_1047420741523524710_n.jpg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=xc9yFHTkjZIQ7kNvgFncGze&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDZzSR6adK8sV7HltjOUGRkxvq8CGyUWLEccxz-nqgjMQ&oe=675C41F6" alt="" /></div></div><div class="_amdc"><div class="_amdj">Research</div><div class="_amde">MultiRay: Optimizing efficiency for large-scale AI models</div><div class="_amdj">November 18, 2022</div></div><div class="_amdh"><a class="_a6ef _a6rw _a6ee _a6em _a6ek" href="https://ai.meta.com/blog/multiray-large-scale-AI-models/" aria-label="Read MultiRay: Optimizing efficiency for large-scale AI models" data-ms-clickable="true" data-ms="{"creative":"click_internal-link","creative_detail":"related-posts-card-2"}" data-lnfb-mode="ie" style="color:#1C2B33;"><svg class="_a6en" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M19 37C9.05887 37 1 28.9411 1 19C1 9.05887 9.05887 1 19 1C28.9411 1 37 9.05887 37 19C37 28.9411 28.9411 37 19 37Z" stroke="#1C2B33"></path><path class="_a7uj" d="M21.9657 12L28.9287 18.963L21.9657 25.926L20.7348 24.7193L25.6203 19.8334L10.0001 19.8334V18.0926L25.5966 18.0926L20.7348 13.2309L21.9657 12Z" fill="#1C2B33"></path><path class="_a7uk" d="M21.9657 12L28.9287 18.963L21.9657 25.926L20.7348 24.7193L25.6203 19.8334L10.0001 19.8334V18.0926L25.5966 18.0926L20.7348 13.2309L21.9657 12Z" fill="#1C2B33"></path></svg><span>Read post</span></a></div></div><div class="_amda _amdk"><div class="_amdd">FEATURED</div><div class="_a5n5 _al8o _a5na _acel"><div class="_8h4z _8h4- _a4zf"><img class="_amdb img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.2365-6/334793505_583125787173687_542838236294006040_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=XFk2-Xww34kQ7kNvgEFlHx4&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYD_4K6W2zPbYu7QgX9DmqsTvpPPFb5VChyxVi6HrVxO0w&oe=675C5584" alt="" /></div></div><div class="_amdc"><div class="_amdj">ML Applications</div><div class="_amde">MuAViC: The first audio-video speech translation benchmark </div><div class="_amdj">March 8, 2023</div></div><div class="_amdh"><a class="_a6ef _a6rw _a6ee _a6em _a6ek" href="https://ai.meta.com/blog/muavic-audio-visual-speech-translation-benchmark/" aria-label="Read MuAViC: The first audio-video speech translation benchmark " data-ms-clickable="true" data-ms="{"creative":"click_internal-link","creative_detail":"related-posts-card-3"}" data-lnfb-mode="ie" style="color:#1C2B33;"><svg class="_a6en" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M19 37C9.05887 37 1 28.9411 1 19C1 9.05887 9.05887 1 19 1C28.9411 1 37 9.05887 37 19C37 28.9411 28.9411 37 19 37Z" stroke="#1C2B33"></path><path class="_a7uj" d="M21.9657 12L28.9287 18.963L21.9657 25.926L20.7348 24.7193L25.6203 19.8334L10.0001 19.8334V18.0926L25.5966 18.0926L20.7348 13.2309L21.9657 12Z" fill="#1C2B33"></path><path class="_a7uk" d="M21.9657 12L28.9287 18.963L21.9657 25.926L20.7348 24.7193L25.6203 19.8334L10.0001 19.8334V18.0926L25.5966 18.0926L20.7348 13.2309L21.9657 12Z" fill="#1C2B33"></path></svg><span>Read post</span></a></div></div></div></div></div><div></div></div><div class="_7f9y _8xdf"><div class="_7f9z"><div class="_7f9x _8xdd"><div class="_8za3" data-ms="{"creative":"section","creative_detail":"section","create_type":"section","create_type_detail":"section"}"><div class="_7f90"><div class="_7ot8"><div class="_8-bz"><div class="_7f91"><div class="_8xe1"><div class="_7fa0 _am40"><div class="_7fa1 _am3z" id="u_0_j_1W"><a class="_8xc5 _8x97 _8w61 _7ot6 _8-c1" href="/about" data-ms="{"creative":"click_footer","creative_detail":"our-approach","create_type":"our-approach","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Our approach</span></a><i class="_am3y img sp_M0uZEuqbElT sx_70bbda" id="u_0_k_UW"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_70cd51" id="u_0_l_3L"></i></div><div class="_7fa2 _am3- _am3_" id="u_0_m_Tx"><div class="_7fa4"><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/about" data-ms="{"creative":"click_footer","creative_detail":"our-approach_about-ai-at-meta","create_type":"our-approach_about-ai-at-meta","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">About AI at Meta</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/responsible-ai" data-ms="{"creative":"click_footer","creative_detail":"our-approach_responsibilities","create_type":"our-approach_responsibilities","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Responsibility</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/results/?content_types%5B0%5D=person&sort_by=random" data-ms="{"creative":"click_footer","creative_detail":"our-approach_people","create_type":"our-approach_people","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">People</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="https://www.metacareers.com/jobs/?is_leadership=0&sub_teams[0]=Artificial%20Intelligence&is_in_page=0" data-ms="{"creative":"click_footer","creative_detail":"our-approach_careers","create_type":"our-approach_careers","create_type_detail":"click_footer"}" target="_blank" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h">Careers</span></a></div></div></div></div></div><div class="_8xe1"><div class="_7fa0 _am40"><div class="_7fa1 _am3z" id="u_0_n_3s"><a class="_8xc5 _8x97 _8w61 _7ot6 _8-c1" href="/research" data-ms="{"creative":"click_footer","creative_detail":"research","create_type":"research","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Research</span></a><i class="_am3y img sp_M0uZEuqbElT sx_70bbda" id="u_0_o_yJ"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_70cd51" id="u_0_p_y7"></i></div><div class="_7fa2 _am3- _am3_" id="u_0_q_ku"><div class="_7fa4"><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/infrastructure" data-ms="{"creative":"click_footer","creative_detail":"research_infra","create_type":"research_infra","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Infrastructure</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/resources" data-ms="{"creative":"click_footer","creative_detail":"research_resources","create_type":"research_resources","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Resources</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="https://aidemos.meta.com/" data-ms="{"creative":"click_footer","creative_detail":"research_Demos","create_type":"research_Demos","create_type_detail":"click_footer"}" target="_blank" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h">Demos</span></a></div></div></div></div></div><div class="_8xe1"><div class="_7fa0 _am40"><div class="_7fa1 _am3z" id="u_0_r_kR"><p class="_8w6f _8w61 _8w6h _7f93">Product experiences</p><i class="_am3y img sp_M0uZEuqbElT sx_70bbda" id="u_0_s_MQ"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_70cd51" id="u_0_t_fe"></i></div><div class="_7fa2 _am3- _am3_" id="u_0_u_cA"><div class="_7fa4"><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/meta-ai/" data-ms="{"creative":"click_footer","creative_detail":"product-experiences_meta-ai","create_type":"product-experiences_meta-ai","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Meta AI</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/ai-studio/" data-ms="{"creative":"click_footer","creative_detail":"product-experiences_ai_studio","create_type":"product-experiences_ai_studio","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">AI Studio</span></a></div></div></div></div></div><div class="_8xe1"><div class="_7fa0 _am40"><div class="_7fa1 _am3z" id="u_0_v_ED"><a class="_8xc5 _8x97 _8w61 _7ot6 _8-c1" href="/blog" data-ms="{"creative":"click_footer","creative_detail":"latest-news","create_type":"latest-news","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Latest news</span></a><i class="_am3y img sp_M0uZEuqbElT sx_70bbda" id="u_0_w_N8"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_70cd51" id="u_0_x_gZ"></i></div><div class="_7fa2 _am3- _am3_" id="u_0_y_3X"><div class="_7fa4"><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/blog" data-ms="{"creative":"click_footer","creative_detail":"latest-news_blog","create_type":"latest-news_blog","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Blog</span></a></div><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="/subscribe" data-ms="{"creative":"click_footer","creative_detail":"latest-news_newsletter","create_type":"latest-news_newsletter","create_type_detail":"click_footer"}"><span class="_8x6t _8x94 _8w61 _8w6h">Newsletter</span></a></div></div></div></div></div><div class="_8xe1"><div class="_7fa0 _am40"><div class="_7fa1 _am3z" id="u_0_z_4h"><p class="_8w6f _8w61 _8w6h _7f93">Foundational models</p><i class="_am3y img sp_M0uZEuqbElT sx_70bbda" id="u_0_10_JD"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_70cd51" id="u_0_11_e7"></i></div><div class="_7fa2 _am3- _am3_" id="u_0_12_1v"><div class="_7fa4"><div class="_7fa5"><a class="_8xc5 _8y8i _8x97 _8w61 _7f94" href="https://llama.meta.com/" data-ms="{"creative":"click_footer","creative_detail":"foundational-models_meta-llama","create_type":"foundational-models_meta-llama","create_type_detail":"click_footer"}" target="_blank" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h">Llama</span></a></div></div></div></div></div></div><img class="_8zlc _7f2d _8-b- _8-b- img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.2365-6/87524316_2677189655726266_6338721200264445952_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=547BifJnbeMQ7kNvgHi8Ji9&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAHZ05H0Tq0qKPXrndQNCmoG_aDCv3lbaHJKnc47gUQUg&oe=675C5FF8" alt="" id="u_0_13_Cc" /></div><div class="_7ot7"><div class="_8z0n _am3x"><div><noscript id="u_0_14_Ab"></noscript></div></div><div class="_7spo"><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.facebook.com/aiatmeta/" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_facebook","create_type":"footer_facebook","create_type_detail":"click_external-link"}"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esb"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335682312_964107378293184_3093631164486164913_n.svg?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=WfHQ0XDN3wMQ7kNvgH20Mgv&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBW2DI9z4F6a9UibFA95mUmT26_eFZietYlxwJrIIOs_Q&oe=6747E667" alt="" /></div><div class="_7esd"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335682312_964107378293184_3093631164486164913_n.svg?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=WfHQ0XDN3wMQ7kNvgH20Mgv&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBW2DI9z4F6a9UibFA95mUmT26_eFZietYlxwJrIIOs_Q&oe=6747E667" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://twitter.com/aiatmeta/" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_twitter","create_type":"footer_twitter","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esa"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.8562-6/336009607_1870102080040414_6753977241281150924_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=6S1HyOStsr4Q7kNvgHMOsjN&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCzpGtuGlu82qsw-clScNr3yVUnSw9wtZDKDuKG4LOTbw&oe=6747DEA2" alt="" /></div><div class="_7esc"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.8562-6/336009607_1870102080040414_6753977241281150924_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=6S1HyOStsr4Q7kNvgHMOsjN&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCzpGtuGlu82qsw-clScNr3yVUnSw9wtZDKDuKG4LOTbw&oe=6747DEA2" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.linkedin.com/showcase/aiatmeta" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_linkedin","create_type":"footer_linkedin","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esb"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.8562-6/336289415_1541032296405649_2165099305308791297_n.svg?_nc_cat=109&ccb=1-7&_nc_sid=e280be&_nc_ohc=Bh1PfMXm9icQ7kNvgFq5Mon&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAoVwPP4fYjdH1F_e0-mB4PeT4DH0wb7L9nXgvqoDTOag&oe=6747D23B" alt="" /></div><div class="_7esd"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.8562-6/336289415_1541032296405649_2165099305308791297_n.svg?_nc_cat=109&ccb=1-7&_nc_sid=e280be&_nc_ohc=Bh1PfMXm9icQ7kNvgFq5Mon&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAoVwPP4fYjdH1F_e0-mB4PeT4DH0wb7L9nXgvqoDTOag&oe=6747D23B" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.youtube.com/@aiatmeta" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_youtube","create_type":"footer_youtube","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esa"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335648731_142576991793348_7786819189843639239_n.svg?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=SOGc7dYwmgMQ7kNvgGcy0Wq&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCRv57b3_meDydk9Til4KzHeoS4yJAqMatNmw6kNa_90A&oe=6747EBAE" alt="" /></div><div class="_7esc"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335648731_142576991793348_7786819189843639239_n.svg?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=SOGc7dYwmgMQ7kNvgGcy0Wq&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCRv57b3_meDydk9Til4KzHeoS4yJAqMatNmw6kNa_90A&oe=6747EBAE" alt="" /></div></div></span></a></div></div></div></div></div></div></div></div><div class="_7f9-"><div class="_7fa7"><div class="_7fbm" style="" data-ms="{"creative":"section","creative_detail":"section","create_type":"section","create_type_detail":"section"}"><div class="_am41"><div><div class="_7fa0 _amdy"><div class="_7fa1 _amdz" id="u_0_15_H6"><p class="_8w6f _8w6h _7fa9">Our approach</p><i class="_am3y img sp_M0uZEuqbElT sx_f022a6" id="u_0_16_jc"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_e6b815" id="u_0_17_6k"></i></div><div class="_7fa2 _FBAIExpandableItem__contentAreaDefault _am3_" id="u_0_18_vk"><div class="_7fab"><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/about" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Our approach</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/about" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">About AI at Meta</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/responsible-ai" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Responsibility</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/results/?content_types%5B0%5D=person&sort_by=random" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">People</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="https://www.metacareers.com/jobs/?is_leadership=0&sub_teams[0]=Artificial%20Intelligence&is_in_page=0" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}" target="_blank" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h">Careers</span></a></div></div></div><div class="_7fa0 _amdy"><div class="_7fa1 _amdz" id="u_0_19_Y6"><p class="_8w6f _8w6h _7fa9">Research</p><i class="_am3y img sp_M0uZEuqbElT sx_f022a6" id="u_0_1a_HM"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_e6b815" id="u_0_1b_JP"></i></div><div class="_7fa2 _FBAIExpandableItem__contentAreaDefault _am3_" id="u_0_1c_ey"><div class="_7fab"><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/research" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Research</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/infrastructure" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Infrastructure</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/resources" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Resources</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="https://aidemos.meta.com/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}" target="_blank" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h">Demos</span></a></div></div></div><div class="_7fa0 _amdy"><div class="_7fa1 _amdz" id="u_0_1d_T5"><p class="_8w6f _8w6h _7fa9">Product experiences</p><i class="_am3y img sp_M0uZEuqbElT sx_f022a6" id="u_0_1e_st"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_e6b815" id="u_0_1f_i0"></i></div><div class="_7fa2 _FBAIExpandableItem__contentAreaDefault _am3_" id="u_0_1g_j/"><div class="_7fab"><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/meta-ai/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Meta AI</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/ai-studio/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">AI Studio</span></a></div></div></div><div class="_7fa0 _amdy"><div class="_7fa1 _amdz" id="u_0_1h_ih"><p class="_8w6f _8w6h _7fa9">Latest news</p><i class="_am3y img sp_M0uZEuqbElT sx_f022a6" id="u_0_1i_fU"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_e6b815" id="u_0_1j_Sb"></i></div><div class="_7fa2 _FBAIExpandableItem__contentAreaDefault _am3_" id="u_0_1k_PY"><div class="_7fab"><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/blog" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Latest news</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/blog" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Blog</span></a><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="/subscribe" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}"><span class="_8x6t _8x94 _8w61 _8w6h">Newsletter</span></a></div></div></div><div class="_7fa0 _amdy"><div class="_7fa1 _amdz" id="u_0_1l_61"><p class="_8w6f _8w6h _7fa9">Foundational models</p><i class="_am3y img sp_M0uZEuqbElT sx_f022a6" id="u_0_1m_dJ"></i><i class="_am3y hidden_elem img sp_M0uZEuqbElT sx_e6b815" id="u_0_1n_F0"></i></div><div class="_7fa2 _FBAIExpandableItem__contentAreaDefault _am3_" id="u_0_1o_f8"><div class="_7fab"><a class="_8xc5 _8y8i _8x97 _8w61 _7faa" href="https://llama.meta.com/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}" target="_blank" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h">Llama</span></a></div></div></div></div></div><div class="_7ota"><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.facebook.com/aiatmeta/" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_facebook","create_type":"footer_facebook","create_type_detail":"click_external-link"}"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esb"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335682312_964107378293184_3093631164486164913_n.svg?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=WfHQ0XDN3wMQ7kNvgH20Mgv&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBW2DI9z4F6a9UibFA95mUmT26_eFZietYlxwJrIIOs_Q&oe=6747E667" alt="" /></div><div class="_7esd"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335682312_964107378293184_3093631164486164913_n.svg?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=WfHQ0XDN3wMQ7kNvgH20Mgv&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBW2DI9z4F6a9UibFA95mUmT26_eFZietYlxwJrIIOs_Q&oe=6747E667" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://twitter.com/aiatmeta/" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_twitter","create_type":"footer_twitter","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esa"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.8562-6/336009607_1870102080040414_6753977241281150924_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=6S1HyOStsr4Q7kNvgHMOsjN&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCzpGtuGlu82qsw-clScNr3yVUnSw9wtZDKDuKG4LOTbw&oe=6747DEA2" alt="" /></div><div class="_7esc"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.8562-6/336009607_1870102080040414_6753977241281150924_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=6S1HyOStsr4Q7kNvgHMOsjN&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCzpGtuGlu82qsw-clScNr3yVUnSw9wtZDKDuKG4LOTbw&oe=6747DEA2" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.linkedin.com/showcase/aiatmeta" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_linkedin","create_type":"footer_linkedin","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esb"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.8562-6/336289415_1541032296405649_2165099305308791297_n.svg?_nc_cat=109&ccb=1-7&_nc_sid=e280be&_nc_ohc=Bh1PfMXm9icQ7kNvgFq5Mon&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAoVwPP4fYjdH1F_e0-mB4PeT4DH0wb7L9nXgvqoDTOag&oe=6747D23B" alt="" /></div><div class="_7esd"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.8562-6/336289415_1541032296405649_2165099305308791297_n.svg?_nc_cat=109&ccb=1-7&_nc_sid=e280be&_nc_ohc=Bh1PfMXm9icQ7kNvgFq5Mon&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAoVwPP4fYjdH1F_e0-mB4PeT4DH0wb7L9nXgvqoDTOag&oe=6747D23B" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.youtube.com/@aiatmeta" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_youtube","create_type":"footer_youtube","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esa"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335648731_142576991793348_7786819189843639239_n.svg?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=SOGc7dYwmgMQ7kNvgGcy0Wq&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCRv57b3_meDydk9Til4KzHeoS4yJAqMatNmw6kNa_90A&oe=6747EBAE" alt="" /></div><div class="_7esc"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335648731_142576991793348_7786819189843639239_n.svg?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=SOGc7dYwmgMQ7kNvgGcy0Wq&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCRv57b3_meDydk9Til4KzHeoS4yJAqMatNmw6kNa_90A&oe=6747EBAE" alt="" /></div></div></span></a></div></div></div></div></div><div class="_8za3" data-ms="{"creative":"section","creative_detail":"section","create_type":"section","create_type_detail":"section"}"><div class="_7es3 _8xde"><div class="_7es4"><div class="_7es5"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.facebook.com/about/privacy/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}" target="_blank"><span class="_8x6t _8x94 _8w61 _8w6h">Privacy Policy</span></a></div><div class="_7es5"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.facebook.com/policies/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}" target="_blank"><span class="_8x6t _8x94 _8w61 _8w6h">Terms</span></a></div><div class="_7es5"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.facebook.com/policies/cookies/" data-ms="{"creative":"link","creative_detail":"link","create_type":"link","create_type_detail":"link"}" target="_blank"><span class="_8x6t _8x94 _8w61 _8w6h">Cookies</span></a></div></div><div class="_8-b_"><div class="_7es6"><p class="_8w6f _8w6h"> Meta © 2024</p></div><div class="_8-c0"><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.facebook.com/aiatmeta/" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_facebook","create_type":"footer_facebook","create_type_detail":"click_external-link"}"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esb"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335682312_964107378293184_3093631164486164913_n.svg?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=WfHQ0XDN3wMQ7kNvgH20Mgv&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBW2DI9z4F6a9UibFA95mUmT26_eFZietYlxwJrIIOs_Q&oe=6747E667" alt="" /></div><div class="_7esd"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335682312_964107378293184_3093631164486164913_n.svg?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=WfHQ0XDN3wMQ7kNvgH20Mgv&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBW2DI9z4F6a9UibFA95mUmT26_eFZietYlxwJrIIOs_Q&oe=6747E667" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://twitter.com/aiatmeta/" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_twitter","create_type":"footer_twitter","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esa"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.8562-6/336009607_1870102080040414_6753977241281150924_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=6S1HyOStsr4Q7kNvgHMOsjN&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCzpGtuGlu82qsw-clScNr3yVUnSw9wtZDKDuKG4LOTbw&oe=6747DEA2" alt="" /></div><div class="_7esc"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-2.xx.fbcdn.net/v/t39.8562-6/336009607_1870102080040414_6753977241281150924_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=6S1HyOStsr4Q7kNvgHMOsjN&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCzpGtuGlu82qsw-clScNr3yVUnSw9wtZDKDuKG4LOTbw&oe=6747DEA2" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.linkedin.com/showcase/aiatmeta" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_linkedin","create_type":"footer_linkedin","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esb"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.8562-6/336289415_1541032296405649_2165099305308791297_n.svg?_nc_cat=109&ccb=1-7&_nc_sid=e280be&_nc_ohc=Bh1PfMXm9icQ7kNvgFq5Mon&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAoVwPP4fYjdH1F_e0-mB4PeT4DH0wb7L9nXgvqoDTOag&oe=6747D23B" alt="" /></div><div class="_7esd"><img class="_8zlc _7f2d img" src="https://scontent-hkg1-1.xx.fbcdn.net/v/t39.8562-6/336289415_1541032296405649_2165099305308791297_n.svg?_nc_cat=109&ccb=1-7&_nc_sid=e280be&_nc_ohc=Bh1PfMXm9icQ7kNvgFq5Mon&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAoVwPP4fYjdH1F_e0-mB4PeT4DH0wb7L9nXgvqoDTOag&oe=6747D23B" alt="" /></div></div></span></a></div><div class="_7es9 _7sp9"><a class="_8xc5 _8y8i _8x97 _8w61" href="https://www.youtube.com/@aiatmeta" rel="noreferrer" target="_blank" data-ms="{"creative":"click_external-link","creative_detail":"footer_youtube","create_type":"footer_youtube","create_type_detail":"click_external-link"}" data-lnfb-mode="ie"><span class="_8x6t _8x94 _8w61 _8w6h"><div class="_7es8 _7sp8"><div class="_7esa"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335648731_142576991793348_7786819189843639239_n.svg?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=SOGc7dYwmgMQ7kNvgGcy0Wq&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCRv57b3_meDydk9Til4KzHeoS4yJAqMatNmw6kNa_90A&oe=6747EBAE" alt="" /></div><div class="_7esc"><img class="_8zlc _7f2d img" src="https://scontent-hkg4-1.xx.fbcdn.net/v/t39.8562-6/335648731_142576991793348_7786819189843639239_n.svg?_nc_cat=108&ccb=1-7&_nc_sid=e280be&_nc_ohc=SOGc7dYwmgMQ7kNvgGcy0Wq&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCRv57b3_meDydk9Til4KzHeoS4yJAqMatNmw6kNa_90A&oe=6747EBAE" alt="" /></div></div></span></a></div></div></div></div></div></div><noscript></noscript><noscript></noscript></div></div> <script nonce="rF3EhZnQ">requireLazy(["HasteSupportData"],function(m){m.handle({"gkxData":{"1393":{"result":false,"hash":null},"3485":{"result":false,"hash":null},"5918":{"result":false,"hash":null},"5971":{"result":false,"hash":null},"7686":{"result":false,"hash":null},"7687":{"result":false,"hash":null},"21050":{"result":false,"hash":null},"21075":{"result":false,"hash":null},"21076":{"result":true,"hash":null},"23433":{"result":false,"hash":null},"20941":{"result":false,"hash":null},"22362":{"result":true,"hash":null},"21106":{"result":false,"hash":null},"21107":{"result":false,"hash":null},"4341":{"result":false,"hash":null},"6323":{"result":false,"hash":null},"8523":{"result":false,"hash":null},"9861":{"result":false,"hash":null},"21062":{"result":false,"hash":null},"21063":{"result":false,"hash":null},"21069":{"result":false,"hash":null},"21071":{"result":false,"hash":null},"21072":{"result":false,"hash":null},"33056":{"result":false,"hash":null}},"qexData":{"362":{"r":null},"1028":{"r":null},"104":{"r":null},"128":{"r":null},"344":{"r":null},"388":{"r":null},"526":{"r":null},"538":{"r":null},"543":{"r":null}},"justknobxData":{"1806":{"r":true},"2819":{"r":true},"2635":{"r":true},"2233":{"r":true}}})});requireLazy(["Bootloader"],function(m){m.handlePayload({"consistency":{"rev":1018448430},"rsrcMap":{"FL\/OmNJ":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i62L4\/yv\/l\/zh_HK\/qO6253Xo2DC.js"},"7Co8YaN":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/y0\/r\/DlS8iOPbc-U.js"},"gURu9Fo":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iE9K4\/yH\/l\/zh_HK\/0g9ACyquZNC.js"},"wSue\/3d":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i_OG4\/yA\/l\/zh_HK\/SuGauj3szDY.js"},"o0Y39To":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yj\/r\/QMj9sEu41DG.js"},"oa6e8IN":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yb\/r\/FkmGaZFEpGv.js"},"S98j\/yc":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3isao4\/y7\/l\/zh_HK\/budzs_j_1o7.js"},"PKoEp6l":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yo\/r\/pt_W8BOmFiq.js"},"R87mLXf":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yA\/r\/n9Awa-VoX_i.js"},"qgihI6q":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yh\/r\/DgU1fe16oS1.js"},"0TSSozG":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yU\/r\/FlyWwzGAwBl.js"},"r7h7oqq":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/yM\/l\/1,cross\/FKBLK4USaO8.css"},"Unax+Jw":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yb\/r\/SmflXpFDEjF.js"},"Ftl2VZm":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yK\/r\/lNInKxOqejp.js"},"qRgwNGL":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yp\/r\/tLHqNIz7Dm_.js"},"p+1OXu8":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i_kO4\/yr\/l\/zh_HK\/bSFmFG5wOuO.js"},"W4Mlt66":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yg\/r\/z8Izn_KvHPB.js"},"RwDgPA5":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i50m4\/yV\/l\/zh_HK\/6taeK0XUDwX.js"},"24kFBSf":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/yt\/l\/1,cross\/n76K2FJUJb2.css"},"OmqzBB2":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/y-\/l\/1,cross\/HX4HOr0fhaw.css"},"TcHQ629":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i5rW4\/ys\/l\/zh_HK\/i8ZzDmI_EU0.js"},"rxEQdFu":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3ims44\/yz\/l\/zh_HK\/3ueq8XDsw_q.js"},"\/k1fHQ6":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3idjU4\/yB\/l\/zh_HK\/Zo59qY-R5AT.js"},"A1vQjXb":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iTfb4\/yU\/l\/zh_HK\/3Es40H5xgw2.js"},"aOOY7ci":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iRzK4\/yB\/l\/zh_HK\/-H6LHcvgovi.js"},"JouLeRi":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yz\/r\/UDFCsXtDquD.js"},"sJGwlD3":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yz\/r\/CnjvuT6uwlS.js"},"DQCNmlm":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3idsx4\/y3\/l\/zh_HK\/w_O-1BakgJ5.js"},"S0U9sPP":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iYHq4\/yT\/l\/zh_HK\/XxVxucG4rqz.js"},"ZVU\/z8L":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yJ\/r\/ww7PQjeJE84.js"},"SWx3yNv":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/y7\/r\/g__eV5OXSXl.js"},"gGxt0Uh":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i-eX4\/y7\/l\/zh_HK\/CzjIc6x3z5n.js"},"x22Oby4":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yZ\/r\/tVshp1OIV9l.js"},"QGoPeYn":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i5ZD4\/yJ\/l\/zh_HK\/IuFiiH2n9od.js"},"8ELCBwH":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/ye\/r\/VRzSVH5iU-V.js"},"vdNQr9P":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yj\/r\/FiVT6nDibIJ.js"},"dlMdW7h":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yv\/r\/qvzskUrYlYC.js"},"H\/5lfuF":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yF\/r\/iqrvM8jAXX7.js"},"17Grp2h":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/y-\/r\/HhbMrxvaW_H.js"},"QyoftxH":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yL\/r\/j-_AFWnS2kv.js"},"QIamfde":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yA\/r\/Y37sQzk-yb8.js"},"9NiATAn":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yv\/r\/yRuFCzueB7p.js"},"LEIGyMk":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yI\/r\/ZRoPT4DdUuR.js"},"HyV45JT":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yn\/r\/C88zhupguZ2.js"},"lcFrUXH":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/yr\/l\/1,cross\/9bLprG5T-QM.css"},"0n72zgh":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iWqS4\/yf\/l\/zh_HK\/RoUTfnqW-sX.js"},"ZIx+o0g":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iBXH4\/yr\/l\/zh_HK\/xiSG510E1pt.js"},"tWdy\/1R":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3ieAa4\/yV\/l\/zh_HK\/90wBgvTfhkp.js"},"KMWyHS6":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/y-\/r\/mtDmygKKHCV.js"},"E2ZzGNZ":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yk\/r\/1_eK7FilZQM.js"},"jgOoryP":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/yd\/l\/1,cross\/kcDfNKR_fSX.css"},"o8xsi1I":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iWIQ4\/yC\/l\/zh_HK\/RkTd0y2HnCy.js"},"fDl3VGn":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3ifZF4\/yy\/l\/zh_HK\/oDLMa0YIX4p.js"},"pWGlwSG":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3is1F4\/y2\/l\/zh_HK\/rXBNv_JskYC.js"},"coNUe95":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i_OV4\/yi\/l\/zh_HK\/U663ic89wdZ.js"},"gKL9Dl9":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yM\/r\/APxO9K6XEwd.js"},"lMGv54d":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/y_\/l\/1,cross\/ReuiKUGsEZS.css"},"PNpS2wo":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3i-754\/yC\/l\/zh_HK\/tPY8JDlOzdi.js"},"eRM0fgh":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iZaH4\/yR\/l\/zh_HK\/wVqc1nPrKg6.js"},"xo6BgXM":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3ipe04\/y1\/l\/zh_HK\/aveDd_S78v6.js"},"xAunP3+":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/y9\/l\/1,cross\/H658ryXdixa.css"},"h\/KM+kt":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/ya\/l\/1,cross\/zhJy6ReyNmJ.css"},"aJWalLZ":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yh\/r\/fvY2S6FNkRo.js"},"yCjmDvZ":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yr\/r\/e0tma-y_xcd.js"},"zwPbSl+":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/y7\/r\/rUMwOcxI_sr.js"},"IJOQrqz":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/ys\/r\/F5CZwPY2EBc.js"},"cp6SOIj":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3ig5y4\/y8\/l\/zh_HK\/0uXlSL67hnT.js"},"3Yx9sKJ":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/yn\/l\/1,cross\/GHQ_ovLRDHJ.css"},"HnG6EYV":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/y-\/r\/h-WHji4oTfG.js"},"RSUsBEV":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3ij8V4\/y3\/l\/zh_HK\/kxcagtS7egR.js"},"RbjUa+x":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yd\/r\/zSg2wCssiiU.js"},"\/fRfucJ":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yj\/r\/J_2QGZXJPHT.js"},"7yfbiOU":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iHr84\/yb\/l\/zh_HK\/EUG6eZDLN6H.js"},"nxj86ax":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iWbI4\/yp\/l\/zh_HK\/Lz8Q7eZycRW.js"},"B6JZmT6":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/yL\/l\/1,cross\/LrsWoZVPxbv.css"},"kjg3QRf":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/y7\/l\/1,cross\/3-SejaE0H4s.css"},"9N2J3db":{"type":"css","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v4\/ya\/l\/1,cross\/IduFtodFvb_.css"},"+6nsFr0":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yn\/r\/yqqL1RKD2zb.js"},"meVEND1":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yZ\/r\/Kp3xepbxBpK.js"},"CknCotK":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iCla4\/yO\/l\/zh_HK\/Dy2PqR7Xo1S.js"},"xsFg75a":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yt\/r\/mnLc1TS2Wp-.js"},"j5ucS2m":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yi\/r\/WEcOCEjc5jm.js"},"ucfmyas":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yL\/r\/2KW45SaLwT9.js"},"oAnahFT":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yI\/r\/vl8CsckJXBT.js"},"lg4g741":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yp\/r\/63k0Jox0xia.js"},"b\/jSasg":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yV\/r\/jdDXFfu8y2M.js"},"ltXYzBw":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yc\/r\/zp4MQQ2PBJF.js"},"rCasuzG":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yA\/r\/OzWmCcYw0wO.js"},"I9s1YYk":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yu\/r\/UzL3li65k0b.js"},"MbEzaF7":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iqgu4\/yY\/l\/zh_HK\/5P1nQww889q.js"},"1ZgUYq9":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iNgV4\/y2\/l\/zh_HK\/uW8xLxjzrLm.js"},"\/\/za25u":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/yM\/r\/YdtQ-95opMP.js"},"F5cUGyw":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3iPxe4\/yp\/l\/zh_HK\/h9ErGEeD3iz.js"},"AYyBVT9":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3icxM4\/yT\/l\/zh_HK\/wSQWGVWgx9x.js"},"vCxI9D4":{"type":"js","src":"https:\/\/static.xx.fbcdn.net\/rsrc.php\/v3\/ye\/r\/GcgopRl4mBW.js"}},"compMap":{"Dialog":{"r":["FL\/OmNJ","7Co8YaN","gURu9Fo","wSue\/3d","o0Y39To","oa6e8IN","S98j\/yc","PKoEp6l","R87mLXf","qgihI6q","0TSSozG","r7h7oqq","wXaVolg","Unax+Jw","Ftl2VZm","qRgwNGL","p+1OXu8","W4Mlt66"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent","Animation","PageTransitions"]},"be":1},"ExceptionDialog":{"r":["DHo8rIt","RwDgPA5","24kFBSf","OmqzBB2","TcHQ629","rxEQdFu","\/k1fHQ6","7Co8YaN","A1vQjXb","aOOY7ci","Unax+Jw","Ftl2VZm","wSue\/3d","o0Y39To","JouLeRi","PKoEp6l","R87mLXf","qRgwNGL","qgihI6q","sJGwlD3","DQCNmlm","0TSSozG","S0U9sPP","wXaVolg","ZVU\/z8L","W4Mlt66","gURu9Fo","oa6e8IN"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent"]},"be":1},"QuickSandSolver":{"r":["SWx3yNv","gGxt0Uh","gURu9Fo","x22Oby4","o0Y39To","oa6e8IN","PKoEp6l","R87mLXf","QGoPeYn","8ELCBwH","wXaVolg"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent"]},"be":1},"ConfirmationDialog":{"r":["vdNQr9P","7Co8YaN","dlMdW7h","o0Y39To","R87mLXf","wXaVolg"],"be":1},"MWADeveloperReauthBarrier":{"r":["H\/5lfuF","17Grp2h","R87mLXf","QyoftxH","QIamfde"],"be":1},"WebSpeedInteractionsTypedLogger":{"r":["R87mLXf","9NiATAn","7Co8YaN","LEIGyMk"],"be":1},"AsyncRequest":{"r":["gURu9Fo","oa6e8IN","PKoEp6l","R87mLXf","wXaVolg"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent"]},"be":1},"DOM":{"r":["R87mLXf","wXaVolg"],"be":1},"Form":{"r":["o0Y39To","R87mLXf","wXaVolg"],"be":1},"FormSubmit":{"r":["gURu9Fo","o0Y39To","oa6e8IN","PKoEp6l","R87mLXf","HyV45JT","wXaVolg"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent"]},"be":1},"Input":{"r":["o0Y39To"],"be":1},"Toggler":{"r":["7Co8YaN","wSue\/3d","o0Y39To","PKoEp6l","R87mLXf","0TSSozG","wXaVolg"],"be":1},"Tooltip":{"r":["FL\/OmNJ","7Co8YaN","Unax+Jw","gURu9Fo","Ftl2VZm","oa6e8IN","PKoEp6l","R87mLXf","qRgwNGL","qgihI6q","sJGwlD3","0TSSozG","lcFrUXH","wXaVolg","ZVU\/z8L","W4Mlt66","wSue\/3d","o0Y39To"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent","PageTransitions","Animation"],"r":["p+1OXu8"]},"be":1},"URI":{"r":[],"be":1},"trackReferrer":{"r":[],"be":1},"PhotoTagApproval":{"r":["0n72zgh","R87mLXf","ZIx+o0g","wXaVolg"],"be":1},"PhotoSnowlift":{"r":["tWdy\/1R","DHo8rIt","KMWyHS6","RwDgPA5","E2ZzGNZ","OmqzBB2","jgOoryP","TcHQ629","o8xsi1I","rxEQdFu","\/k1fHQ6","FL\/OmNJ","0n72zgh","fDl3VGn","7Co8YaN","pWGlwSG","coNUe95","aOOY7ci","Unax+Jw","gKL9Dl9","gURu9Fo","lMGv54d","PNpS2wo","eRM0fgh","Ftl2VZm","xo6BgXM","xAunP3+","h\/KM+kt","wSue\/3d","aJWalLZ","yCjmDvZ","o0Y39To","zwPbSl+","oa6e8IN","JouLeRi","S98j\/yc","PKoEp6l","IJOQrqz","R87mLXf","cp6SOIj","qRgwNGL","qgihI6q","3Yx9sKJ","QGoPeYn","sJGwlD3","p+1OXu8","0TSSozG","r7h7oqq","HnG6EYV","lcFrUXH","RSUsBEV","W4Mlt66","RbjUa+x","S0U9sPP","wXaVolg","c9XxCfz","\/fRfucJ","ZVU\/z8L","LEIGyMk"],"rds":{"m":["Animation","FbtLogging","IntlQtEventFalcoEvent","PageTransitions"]},"be":1},"PhotoTagger":{"r":["7yfbiOU","TcHQ629","nxj86ax","rxEQdFu","FL\/OmNJ","0n72zgh","7Co8YaN","Unax+Jw","gURu9Fo","Ftl2VZm","wSue\/3d","o0Y39To","oa6e8IN","PKoEp6l","R87mLXf","B6JZmT6","qRgwNGL","qgihI6q","QGoPeYn","kjg3QRf","sJGwlD3","0TSSozG","ZIx+o0g","wXaVolg","c9XxCfz","ZVU\/z8L","W4Mlt66","LEIGyMk"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent","PageTransitions","Animation"],"r":["p+1OXu8"]},"be":1},"PhotoTags":{"r":["0n72zgh","7Co8YaN","R87mLXf","ZIx+o0g","wXaVolg"],"be":1},"TagTokenizer":{"r":["9N2J3db","7Co8YaN","+6nsFr0","o0Y39To","meVEND1","CknCotK","R87mLXf","kjg3QRf","ZIx+o0g","RbjUa+x","wXaVolg"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent"],"r":["gURu9Fo"]},"be":1},"AsyncDialog":{"r":["DHo8rIt","rxEQdFu","7Co8YaN","aOOY7ci","Unax+Jw","gKL9Dl9","gURu9Fo","Ftl2VZm","wSue\/3d","o0Y39To","oa6e8IN","JouLeRi","PKoEp6l","R87mLXf","qRgwNGL","qgihI6q","sJGwlD3","0TSSozG","wXaVolg","ZVU\/z8L","W4Mlt66"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent"]},"be":1},"Hovercard":{"r":["7yfbiOU","TcHQ629","FL\/OmNJ","7Co8YaN","Unax+Jw","gURu9Fo","Ftl2VZm","wSue\/3d","o0Y39To","oa6e8IN","PKoEp6l","R87mLXf","B6JZmT6","qRgwNGL","qgihI6q","kjg3QRf","sJGwlD3","0TSSozG","ZIx+o0g","wXaVolg","c9XxCfz","ZVU\/z8L","W4Mlt66","LEIGyMk"],"rds":{"m":["FbtLogging","IntlQtEventFalcoEvent","PageTransitions","Animation"],"r":["p+1OXu8"]},"be":1},"XOfferController":{"r":["xsFg75a","o0Y39To"],"be":1},"PerfXSharedFields":{"r":["Unax+Jw","R87mLXf"],"be":1},"VultureJSSampleRatesLoader":{"r":["ltXYzBw"],"be":1},"KeyEventTypedLogger":{"r":["rCasuzG","R87mLXf","7Co8YaN","LEIGyMk"],"be":1},"react":{"r":["Unax+Jw","Ftl2VZm","qRgwNGL","W4Mlt66"],"be":1}}})});</script> <script nonce="rF3EhZnQ">requireLazy(["InitialJSLoader"], function(InitialJSLoader) {InitialJSLoader.loadOnDOMContentReady(["j5ucS2m","LEIGyMk","7Co8YaN","Unax+Jw","gURu9Fo","o0Y39To","oa6e8IN","PKoEp6l","R87mLXf","qgihI6q","ucfmyas","oAnahFT","lg4g741","b\/jSasg","aOOY7ci","tWdy\/1R","Ftl2VZm","qRgwNGL","0TSSozG","I9s1YYk","MbEzaF7","rxEQdFu","\/k1fHQ6","FL\/OmNJ","ZVU\/z8L","JouLeRi","QGoPeYn","1ZgUYq9","sJGwlD3","\/\/za25u","F5cUGyw","wSue\/3d","AYyBVT9","RbjUa+x","W4Mlt66","vCxI9D4"]);});</script> <script nonce="rF3EhZnQ">requireLazy(["TimeSliceImpl","ServerJS"],function(TimeSlice,ServerJS){var s=(new ServerJS());s.handle({"define":[["cr:5695",["EventListenerWWW"],{"__rc":["EventListenerWWW",null]},-1],["cr:734",[],{"__rc":[null,null]},-1],["cr:1293",["ReactDOM.classic"],{"__rc":["ReactDOM.classic",null]},-1],["cr:3473",["unmountComponentOnTransition"],{"__rc":["unmountComponentOnTransition",null]},-1],["cr:3603",["unmountConcurrentComponentOnTransition"],{"__rc":["unmountConcurrentComponentOnTransition",null]},-1],["cr:7162",["ReactDOMCompatibilityLayer"],{"__rc":["ReactDOMCompatibilityLayer",null]},-1],["cr:1108857",[],{"__rc":[null,null]},-1],["cr:1294158",["React.classic"],{"__rc":["React.classic",null]},-1],["cr:1294159",["ReactDOM.classic"],{"__rc":["ReactDOM.classic",null]},-1],["cr:755",["warningWWW"],{"__rc":["warningWWW",null]},-1],["cr:757",["ImageWwwCssDependency"],{"__rc":["ImageWwwCssDependency",null]},-1],["cr:4655",["AbstractLinkLynxMode"],{"__rc":["AbstractLinkLynxMode",null]},-1],["cr:5662",["Event"],{"__rc":["Event",null]},-1],["ClickIDURLBlocklistSVConfig",[],{"block_list_url":["https:\/\/www.youtube.com\/watch?v=f1J38FlDKxo","https:\/\/www.youtube.com\/watch?v=6xt7nTuO85A"]},7631],["FBDomainsSVConfig",[],{"domains":{"__map":[["www.facebook.com",1],["tfbnw.net",1],["m.beta.facebook.com",1],["touch.beta.facebook.com",1],["www.dev.facebook.com",1],["fb.me",1],["s.fb.com",1],["m.fbjs.facebook.com",1],["facebook.com.es",1],["www.fbjs.facebook.com",1],["m.facebook.com",1],["facebook.fr",1],["fbsbx.com",1],["embed.fbsbx.com",1],["attachment.fbsbx.com",1],["lookaside.fbsbx.com",1],["web.facebook.com",1],["fb.com",1],["messenger.com",1],["secure.facebook.com",1],["secure.my-od.facebook.com",1],["www.my-od.facebook.com",1]]}},3828],["ClickIDDomainBlacklistSVConfig",[],{"domains":["craigslist","tfbnw.net","canadiantire.ca","o2.co.uk","archive.org","reddit.com","redd.it","gmail.com","cvk.gov.ua","electoralsearch.in","yahoo.com","cve.mitre.org","usenix.org","ky.gov","voteohio.gov","vote.pa.gov","oversightboard.com","wi.gov","pbs.twimg.com","media.discordapp.net","vastadeal.com","theaustralian.com.au","alloygator.com","elsmannimmobilien.de","news.com.au","dennisbonnen.com","stoett.com","investorhour.com","perspectivasur.com","bonnegueule.fr","firstent.org","twitpic.com","kollosche.com.au","nau.edu","arcourts.gov","lomberg.de","network4.hu","balloonrace.com","awstrack.me","ic3.gov","sos.wyo.gov","cnpq.br","0.discoverapp.com","apple.com","apple.co","applecard.apple","services.apple","appletvplus.com","applepay.apple","wallet.apple","beatsbydre.com","dinn.com.mx","soriana.com","facebook.sso.datasite.com","fycextras.com","rik.parlament.gov.rs","elections.delaware.gov","dge.sn"]},3829],["cr:1353359",["EventListenerImplForBlue"],{"__rc":["EventListenerImplForBlue",null]},-1],["cr:5277",["ReactDOM.classic.prod-or-profiling"],{"__rc":["ReactDOM.classic.prod-or-profiling",null]},-1],["cr:1292365",["React-prod.classic"],{"__rc":["React-prod.classic",null]},-1],["cr:2682",["warningBlueish"],{"__rc":["warningBlueish",null]},-1],["cr:11202",[],{"__rc":[null,null]},-1],["cr:1105154",[],{"__rc":[null,null]},-1],["cr:7736",["FBLynxLogging"],{"__rc":["FBLynxLogging",null]},-1],["cr:5278",["ReactDOM-prod.classic"],{"__rc":["ReactDOM-prod.classic",null]},-1],["cr:2683",["warningBlue"],{"__rc":["warningBlue",null]},-1],["cr:8909",["ReactFiberErrorDialogWWW"],{"__rc":["ReactFiberErrorDialogWWW",null]},-1],["cr:3695",[],{"__rc":[null,null]},-1],["cr:983844",[],{"__rc":[null,null]},-1],["CoreWarningGK",[],{"forceWarning":false},725],["LinkshimHandlerConfig",[],{"supports_meta_referrer":false,"default_meta_referrer_policy":"default","switched_meta_referrer_policy":"origin","non_linkshim_lnfb_mode":"ie","link_react_default_hash":"AT02W1Kin6hwlnhDuPgmkrcJ8fcQdhqiaWQZ55HaxV3NJfZxKM5lReZPzevXAPdct8lr845pwXdsXNmfB-komWVSHYWN-MTl7kfSvRKXu3s1t5Iu9v5UzGXESvqb9ymqtbQDI_v2004Yg6_gAqB07cvnWQ","untrusted_link_default_hash":"AT1rasKTm3WeRBFSL0w9VXWTyrUbI6Wm4_13MO4fBGrJ6-itYwKMq0PhI3Jlz6_oXJod_Nc-fGqAt64REB2rFzgr5PiEWI8FBYUdvVFWGOGTKrmr97RFGTFNBmRO4i49UzgE04vmx7nFRcTI0CKMsRmDYg","linkshim_host":"l.facebook.com","linkshim_path":"\/l.php","linkshim_enc_param":"h","linkshim_url_param":"u","use_rel_no_opener":false,"use_rel_no_referrer":false,"always_use_https":false,"onion_always_shim":true,"middle_click_requires_event":false,"www_safe_js_mode":"hover","m_safe_js_mode":null,"ghl_param_link_shim":false,"click_ids":null,"is_linkshim_supported":false,"current_domain":"ai.meta.com","blocklisted_domains":["ad.doubleclick.net","ads-encryption-url-example.com","bs.serving-sys.com","ad.atdmt.com","adform.net","ad13.adfarm1.adition.com","ilovemyfreedoms.com","secure.adnxs.com"],"is_mobile_device":false},27]],"instances":[["__inst_363d94e1_0_0_e5",["AIDropdownNavConfig","__inst_44019d09_0_0_7l","__inst_7f4ae79a_0_0_H8","__inst_7f4ae79a_0_1_UU","__inst_7f4ae79a_0_2_Mm","__inst_24928c59_0_0_qY","__inst_24928c59_0_1_Xn","__inst_24928c59_0_2_UU","__inst_e703d034_0_0_0R"],[{"__m":"__inst_44019d09_0_0_7l"},[{"__m":"__inst_7f4ae79a_0_0_H8"},{"__m":"__inst_7f4ae79a_0_1_UU"},{"__m":"__inst_7f4ae79a_0_2_Mm"},{"__m":"__inst_24928c59_0_0_qY"},{"__m":"__inst_24928c59_0_1_Xn"},{"__m":"__inst_24928c59_0_2_UU"}],{"__m":"__inst_e703d034_0_0_0R"}],1],["__inst_7de61f26_0_0_Qs",["AIDropdownNavXMLTConfig","__inst_44019d09_0_1_o4","__inst_7f4ae79a_0_3_RY","__inst_7f4ae79a_0_4_Ls","__inst_7f4ae79a_0_5_Jw","__inst_24928c59_0_3_hM","__inst_24928c59_0_4_Dp","__inst_24928c59_0_5_ln","__inst_e703d034_0_1_Cy"],[{"logoLink":{"__m":"__inst_44019d09_0_1_o4"},"navItems":[{"__m":"__inst_7f4ae79a_0_3_RY"},{"__m":"__inst_7f4ae79a_0_4_Ls"},{"__m":"__inst_7f4ae79a_0_5_Jw"},{"__m":"__inst_24928c59_0_3_hM"},{"__m":"__inst_24928c59_0_4_Dp"},{"__m":"__inst_24928c59_0_5_ln"}],"position":null,"searchLink":{"__m":"__inst_e703d034_0_1_Cy"},"align":"left"}],1],["__inst_f1d0759c_0_0_a\/",["FBAIExpandableItem","__elem_a588f507_0_0_NW","__elem_a588f507_0_1_ZR","__elem_94c15385_0_0_\/J","__elem_94c15385_0_1_K4"],[{"title":{"__m":"__elem_a588f507_0_0_NW"},"contentArea":{"__m":"__elem_a588f507_0_1_ZR"},"expandButton":{"__m":"__elem_94c15385_0_0_\/J"},"collapseButton":{"__m":"__elem_94c15385_0_1_K4"},"initOpen":false,"variant":"meta-ai-footer"}],1],["__inst_f1d0759c_0_1_eY",["FBAIExpandableItem","__elem_a588f507_0_2_5j","__elem_a588f507_0_3_MO","__elem_94c15385_0_2_KN","__elem_94c15385_0_3_KK"],[{"title":{"__m":"__elem_a588f507_0_2_5j"},"contentArea":{"__m":"__elem_a588f507_0_3_MO"},"expandButton":{"__m":"__elem_94c15385_0_2_KN"},"collapseButton":{"__m":"__elem_94c15385_0_3_KK"},"initOpen":false,"variant":"meta-ai-footer"}],1],["__inst_f1d0759c_0_2_m+",["FBAIExpandableItem","__elem_a588f507_0_4_h9","__elem_a588f507_0_5_CH","__elem_94c15385_0_4_Pu","__elem_94c15385_0_5_1\/"],[{"title":{"__m":"__elem_a588f507_0_4_h9"},"contentArea":{"__m":"__elem_a588f507_0_5_CH"},"expandButton":{"__m":"__elem_94c15385_0_4_Pu"},"collapseButton":{"__m":"__elem_94c15385_0_5_1\/"},"initOpen":false,"variant":"meta-ai-footer"}],1],["__inst_f1d0759c_0_3_vZ",["FBAIExpandableItem","__elem_a588f507_0_6_Hc","__elem_a588f507_0_7_bg","__elem_94c15385_0_6_eo","__elem_94c15385_0_7_iT"],[{"title":{"__m":"__elem_a588f507_0_6_Hc"},"contentArea":{"__m":"__elem_a588f507_0_7_bg"},"expandButton":{"__m":"__elem_94c15385_0_6_eo"},"collapseButton":{"__m":"__elem_94c15385_0_7_iT"},"initOpen":false,"variant":"meta-ai-footer"}],1],["__inst_f1d0759c_0_4_Th",["FBAIExpandableItem","__elem_a588f507_0_8_bc","__elem_a588f507_0_9_ee","__elem_94c15385_0_8_wI","__elem_94c15385_0_9_jq"],[{"title":{"__m":"__elem_a588f507_0_8_bc"},"contentArea":{"__m":"__elem_a588f507_0_9_ee"},"expandButton":{"__m":"__elem_94c15385_0_8_wI"},"collapseButton":{"__m":"__elem_94c15385_0_9_jq"},"initOpen":false,"variant":"meta-ai-footer"}],1],["__inst_f1d0759c_0_5_op",["FBAIExpandableItem","__elem_a588f507_0_a_Ns","__elem_a588f507_0_b_xQ","__elem_94c15385_0_a_M3","__elem_94c15385_0_b_fW"],[{"title":{"__m":"__elem_a588f507_0_a_Ns"},"contentArea":{"__m":"__elem_a588f507_0_b_xQ"},"expandButton":{"__m":"__elem_94c15385_0_a_M3"},"collapseButton":{"__m":"__elem_94c15385_0_b_fW"},"initOpen":false,"variant":"default"}],1],["__inst_f1d0759c_0_6_nY",["FBAIExpandableItem","__elem_a588f507_0_c_uV","__elem_a588f507_0_d_MT","__elem_94c15385_0_c_oP","__elem_94c15385_0_d_FI"],[{"title":{"__m":"__elem_a588f507_0_c_uV"},"contentArea":{"__m":"__elem_a588f507_0_d_MT"},"expandButton":{"__m":"__elem_94c15385_0_c_oP"},"collapseButton":{"__m":"__elem_94c15385_0_d_FI"},"initOpen":false,"variant":"default"}],1],["__inst_f1d0759c_0_7_Bk",["FBAIExpandableItem","__elem_a588f507_0_e_BL","__elem_a588f507_0_f_SV","__elem_94c15385_0_e_C8","__elem_94c15385_0_f_Kd"],[{"title":{"__m":"__elem_a588f507_0_e_BL"},"contentArea":{"__m":"__elem_a588f507_0_f_SV"},"expandButton":{"__m":"__elem_94c15385_0_e_C8"},"collapseButton":{"__m":"__elem_94c15385_0_f_Kd"},"initOpen":false,"variant":"default"}],1],["__inst_f1d0759c_0_8_0l",["FBAIExpandableItem","__elem_a588f507_0_g_EN","__elem_a588f507_0_h_K1","__elem_94c15385_0_g_kc","__elem_94c15385_0_h_YT"],[{"title":{"__m":"__elem_a588f507_0_g_EN"},"contentArea":{"__m":"__elem_a588f507_0_h_K1"},"expandButton":{"__m":"__elem_94c15385_0_g_kc"},"collapseButton":{"__m":"__elem_94c15385_0_h_YT"},"initOpen":false,"variant":"default"}],1],["__inst_f1d0759c_0_9_K2",["FBAIExpandableItem","__elem_a588f507_0_i_q0","__elem_a588f507_0_j_9x","__elem_94c15385_0_i_w8","__elem_94c15385_0_j_8\/"],[{"title":{"__m":"__elem_a588f507_0_i_q0"},"contentArea":{"__m":"__elem_a588f507_0_j_9x"},"expandButton":{"__m":"__elem_94c15385_0_i_w8"},"collapseButton":{"__m":"__elem_94c15385_0_j_8\/"},"initOpen":false,"variant":"default"}],1],["__inst_44019d09_0_0_7l",["AboutFBNavLogoLinkConfig"],["\/","Meta","link","nav-bar_meta-logo","https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.8562-6\/252294889_575082167077436_6034106545912333281_n.svg\/meta-logo-primary_standardsize.svg?_nc_cat=1&ccb=1-7&_nc_sid=e280be&_nc_ohc=LoYkAYJxY00Q7kNvgHJ_n_D&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYC5YHYJemoL-66vVVY-oaBIB1sVVKHqLVuLFdNO-7UqPA&oe=6747F639",89,18],1],["__inst_7f4ae79a_0_0_H8",["AIDropdownNavMenuConfig","__inst_d066f191_0_0_Lm"],["Our approach",{"__m":"__inst_d066f191_0_0_Lm"},["Our approach"],"click_menu","nav_our-approach",null,null,null,null],1],["__inst_7f4ae79a_0_1_UU",["AIDropdownNavMenuConfig","__inst_d066f191_0_1_ui"],["Research",{"__m":"__inst_d066f191_0_1_ui"},["Research"],"click_menu","nav_research",null,null,null,null],1],["__inst_7f4ae79a_0_2_Mm",["AIDropdownNavMenuConfig","__inst_d066f191_0_2_Tj"],["Product experiences",{"__m":"__inst_d066f191_0_2_Tj"},["Product experiences"],"click_menu","nav_product_experiences",null,null,null,null],1],["__inst_24928c59_0_0_qY",["AIDropdownNavLinkConfig"],["Llama","https:\/\/llama.meta.com","inherit","open-in-new-tab",["Llama"],null,"click_menu","nav_llama-homepage","default","underline"],1],["__inst_24928c59_0_1_Xn",["AIDropdownNavLinkConfig"],["Blog","\/blog\/","inherit","open-in-current-tab",["Blog"],null,"click_menu","nav_blog","default","underline"],1],["__inst_24928c59_0_2_UU",["AIDropdownNavLinkConfig"],["Try Meta AI","https:\/\/www.meta.ai\/?utm_source=ai_meta_site&utm_medium=web&utm_content=AI_nav&utm_campaign=April_moment","inherit","open-in-new-tab",["Try Meta AI"],null,"click_menu","nav_try-meta-ai","blue-pill-cta-large","underline"],1],["__inst_e703d034_0_0_0R",["AIDropdownNavSearchLinkConfig","__inst_746f571f_0_0_XZ"],["Search",{"__m":"__inst_746f571f_0_0_XZ"},"click_menu","search"],1],["__inst_44019d09_0_1_o4",["AboutFBNavLogoLinkConfig"],["\/","Meta","link","nav-bar_meta-logo","https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.8562-6\/252294889_575082167077436_6034106545912333281_n.svg\/meta-logo-primary_standardsize.svg?_nc_cat=1&ccb=1-7&_nc_sid=e280be&_nc_ohc=LoYkAYJxY00Q7kNvgHJ_n_D&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYC5YHYJemoL-66vVVY-oaBIB1sVVKHqLVuLFdNO-7UqPA&oe=6747F639",89,18],1],["__inst_7f4ae79a_0_3_RY",["AIDropdownNavMenuConfig","__inst_d066f191_0_3_N9"],["Our approach",{"__m":"__inst_d066f191_0_3_N9"},["Our approach"],"click_menu","nav_our-approach",null,null,null,null],1],["__inst_7f4ae79a_0_4_Ls",["AIDropdownNavMenuConfig","__inst_d066f191_0_4_Qs"],["Research",{"__m":"__inst_d066f191_0_4_Qs"},["Research"],"click_menu","nav_research",null,null,null,null],1],["__inst_7f4ae79a_0_5_Jw",["AIDropdownNavMenuConfig","__inst_d066f191_0_5_\/X"],["Product experiences",{"__m":"__inst_d066f191_0_5_\/X"},["Product experiences"],"click_menu","nav_product_experiences",null,null,null,null],1],["__inst_24928c59_0_3_hM",["AIDropdownNavLinkConfig"],["Llama","https:\/\/llama.meta.com","inherit","open-in-new-tab",["Llama"],null,"click_menu","nav_llama-homepage","default","underline"],1],["__inst_24928c59_0_4_Dp",["AIDropdownNavLinkConfig"],["Blog","\/blog\/","inherit","open-in-current-tab",["Blog"],null,"click_menu","nav_blog","default","underline"],1],["__inst_24928c59_0_5_ln",["AIDropdownNavLinkConfig"],["Try Meta AI","https:\/\/www.meta.ai\/?utm_source=ai_meta_site&utm_medium=web&utm_content=AI_nav&utm_campaign=April_moment","inherit","open-in-new-tab",["Try Meta AI"],null,"click_menu","nav_try-meta-ai","blue-pill-cta-large","underline"],1],["__inst_e703d034_0_1_Cy",["AIDropdownNavSearchLinkConfig","__inst_746f571f_0_1_6A"],["Search",{"__m":"__inst_746f571f_0_1_6A"},"click_menu","search"],1],["__inst_d066f191_0_0_Lm",["AIDropdownNavMenuSectionConfig","__inst_24928c59_0_6_wE","__inst_24928c59_0_7_m5","__inst_24928c59_0_8_et","__inst_24928c59_0_9_Qv"],[null,null,[{"__m":"__inst_24928c59_0_6_wE"},{"__m":"__inst_24928c59_0_7_m5"},{"__m":"__inst_24928c59_0_8_et"},{"__m":"__inst_24928c59_0_9_Qv"}],["Our approach"],null],1],["__inst_d066f191_0_1_ui",["AIDropdownNavMenuSectionConfig","__inst_24928c59_0_a_zJ","__inst_24928c59_0_b_PT","__inst_24928c59_0_c_GV","__inst_24928c59_0_d_lh"],[null,null,[{"__m":"__inst_24928c59_0_a_zJ"},{"__m":"__inst_24928c59_0_b_PT"},{"__m":"__inst_24928c59_0_c_GV"},{"__m":"__inst_24928c59_0_d_lh"}],["Research"],null],1],["__inst_d066f191_0_2_Tj",["AIDropdownNavMenuSectionConfig","__inst_24928c59_0_e_E6","__inst_24928c59_0_f_7\/"],[null,null,[{"__m":"__inst_24928c59_0_e_E6"},{"__m":"__inst_24928c59_0_f_7\/"}],["Product experiences"],null],1],["__inst_746f571f_0_0_XZ",["AIDropdownNavMenuSearchSectionConfig"],["Search AI content","\/global_search\/"],1],["__inst_d066f191_0_3_N9",["AIDropdownNavMenuSectionConfig","__inst_24928c59_0_g_6K","__inst_24928c59_0_h_Nd","__inst_24928c59_0_i_Ly","__inst_24928c59_0_j_3a"],[null,null,[{"__m":"__inst_24928c59_0_g_6K"},{"__m":"__inst_24928c59_0_h_Nd"},{"__m":"__inst_24928c59_0_i_Ly"},{"__m":"__inst_24928c59_0_j_3a"}],["Our approach"],null],1],["__inst_d066f191_0_4_Qs",["AIDropdownNavMenuSectionConfig","__inst_24928c59_0_k_Kz","__inst_24928c59_0_l_Ni","__inst_24928c59_0_m_La","__inst_24928c59_0_n_XR"],[null,null,[{"__m":"__inst_24928c59_0_k_Kz"},{"__m":"__inst_24928c59_0_l_Ni"},{"__m":"__inst_24928c59_0_m_La"},{"__m":"__inst_24928c59_0_n_XR"}],["Research"],null],1],["__inst_d066f191_0_5_\/X",["AIDropdownNavMenuSectionConfig","__inst_24928c59_0_o_j\/","__inst_24928c59_0_p_oK"],[null,null,[{"__m":"__inst_24928c59_0_o_j\/"},{"__m":"__inst_24928c59_0_p_oK"}],["Product experiences"],null],1],["__inst_746f571f_0_1_6A",["AIDropdownNavMenuSearchSectionConfig"],["Search AI content","\/global_search\/"],1],["__inst_24928c59_0_6_wE",["AIDropdownNavLinkConfig"],["About us","\/about\/","inherit","open-in-current-tab",["Our approach","About us"],null,"click_menu","nav_about-us","default","underline"],1],["__inst_24928c59_0_7_m5",["AIDropdownNavLinkConfig"],["Responsibility","\/responsible-ai\/","inherit","open-in-current-tab",["Our approach","Responsibility"],null,"click_menu","nav_responsible-ai","default","underline"],1],["__inst_24928c59_0_8_et",["AIDropdownNavLinkConfig"],["People","\/results\/?content_types\u00255B0\u00255D=person","inherit","open-in-current-tab",["Our approach","People"],null,"click_menu","nav_results-people","default","underline"],1],["__inst_24928c59_0_9_Qv",["AIDropdownNavLinkConfig"],["Careers","https:\/\/www.metacareers.com\/","inherit","open-in-new-tab",["Our approach","Careers"],null,"click_menu","nav_careers","default","underline"],1],["__inst_24928c59_0_a_zJ",["AIDropdownNavLinkConfig"],["Overview","\/research\/","inherit","open-in-current-tab",["Research","Overview"],null,"click_menu","nav_research-overview","default","underline"],1],["__inst_24928c59_0_b_PT",["AIDropdownNavLinkConfig"],["Infrastructure","\/infrastructure\/","inherit","open-in-current-tab",["Research","Infrastructure"],null,"click_menu","nav_infrastructure","default","underline"],1],["__inst_24928c59_0_c_GV",["AIDropdownNavLinkConfig"],["Resources","\/resources\/","inherit","open-in-current-tab",["Research","Resources"],null,"click_menu","nav_resources","default","underline"],1],["__inst_24928c59_0_d_lh",["AIDropdownNavLinkConfig"],["Demos","https:\/\/aidemos.meta.com\/","inherit","open-in-current-tab",["Research","Demos"],null,"click_menu","nav_resources-demos","default","underline"],1],["__inst_24928c59_0_e_E6",["AIDropdownNavLinkConfig"],["Meta AI","\/meta-ai\/","inherit","open-in-current-tab",["Product experiences","Meta AI"],null,"click_menu","nav_meta_ai","default","underline"],1],["__inst_24928c59_0_f_7\/",["AIDropdownNavLinkConfig"],["AI Studio","\/ai-studio\/","inherit","open-in-current-tab",["Product experiences","AI Studio"],null,"click_menu","nav_ai_studio","default","underline"],1],["__inst_24928c59_0_g_6K",["AIDropdownNavLinkConfig"],["About us","\/about\/","inherit","open-in-current-tab",["Our approach","About us"],null,"click_menu","nav_about-us","default","underline"],1],["__inst_24928c59_0_h_Nd",["AIDropdownNavLinkConfig"],["Responsibility","\/responsible-ai\/","inherit","open-in-current-tab",["Our approach","Responsibility"],null,"click_menu","nav_responsible-ai","default","underline"],1],["__inst_24928c59_0_i_Ly",["AIDropdownNavLinkConfig"],["People","\/results\/?content_types\u00255B0\u00255D=person","inherit","open-in-current-tab",["Our approach","People"],null,"click_menu","nav_results-people","default","underline"],1],["__inst_24928c59_0_j_3a",["AIDropdownNavLinkConfig"],["Careers","https:\/\/www.metacareers.com\/","inherit","open-in-new-tab",["Our approach","Careers"],null,"click_menu","nav_careers","default","underline"],1],["__inst_24928c59_0_k_Kz",["AIDropdownNavLinkConfig"],["Overview","\/research\/","inherit","open-in-current-tab",["Research","Overview"],null,"click_menu","nav_research-overview","default","underline"],1],["__inst_24928c59_0_l_Ni",["AIDropdownNavLinkConfig"],["Infrastructure","\/infrastructure\/","inherit","open-in-current-tab",["Research","Infrastructure"],null,"click_menu","nav_infrastructure","default","underline"],1],["__inst_24928c59_0_m_La",["AIDropdownNavLinkConfig"],["Resources","\/resources\/","inherit","open-in-current-tab",["Research","Resources"],null,"click_menu","nav_resources","default","underline"],1],["__inst_24928c59_0_n_XR",["AIDropdownNavLinkConfig"],["Demos","https:\/\/aidemos.meta.com\/","inherit","open-in-current-tab",["Research","Demos"],null,"click_menu","nav_resources-demos","default","underline"],1],["__inst_24928c59_0_o_j\/",["AIDropdownNavLinkConfig"],["Meta AI","\/meta-ai\/","inherit","open-in-current-tab",["Product experiences","Meta AI"],null,"click_menu","nav_meta_ai","default","underline"],1],["__inst_24928c59_0_p_oK",["AIDropdownNavLinkConfig"],["AI Studio","\/ai-studio\/","inherit","open-in-current-tab",["Product experiences","AI Studio"],null,"click_menu","nav_ai_studio","default","underline"],1]],"markup":[["__markup_da4ef9a3_0_0_Di",{"__html":"\u003Cspan>\u003Csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 36 36\" class=\"_ampm\">\u003Cpath d=\"M35.0916 17.5409C35.0916 27.2285 27.2382 35.0818 17.5507 35.0818C7.86309 35.0818 0.00976562 27.2285 0.00976562 17.5409C0.00976562 7.85333 7.86309 0 17.5507 0C27.2382 0 35.0916 7.85333 35.0916 17.5409Z\" class=\"_ampn\">\u003C\/path>\u003Cpath d=\"M19.0985 15.8762C20.4585 17.2376 20.4398 19.4202 19.1067 20.7607C19.1042 20.7635 19.1013 20.7664 19.0985 20.7692L17.5689 22.2988C16.2198 23.6479 14.0248 23.6477 12.6759 22.2988C11.3268 20.9499 11.3268 18.7547 12.6759 17.4058L13.5205 16.5612C13.7445 16.3372 14.1302 16.4861 14.1418 16.8026C14.1565 17.206 14.2289 17.6113 14.3624 18.0027C14.4076 18.1352 14.3753 18.2818 14.2763 18.3808L13.9784 18.6787C13.3404 19.3166 13.3204 20.3553 13.9521 20.9995C14.59 21.65 15.6384 21.6539 16.2812 21.0111L17.8109 19.4817C18.4526 18.84 18.4499 17.8029 17.8109 17.1638C17.7266 17.0798 17.6418 17.0144 17.5755 16.9688C17.5286 16.9366 17.4899 16.8939 17.4624 16.8441C17.435 16.7942 17.4195 16.7387 17.4173 16.6819C17.4083 16.4413 17.4936 16.1935 17.6836 16.0034L18.1629 15.5241C18.2885 15.3985 18.4857 15.383 18.6314 15.4847C18.7983 15.6013 18.9546 15.7323 19.0985 15.8762ZM22.3065 12.668C20.9576 11.3191 18.7627 11.3189 17.4135 12.668L15.8839 14.1976C15.8812 14.2004 15.8782 14.2033 15.8757 14.2061C14.5426 15.5466 14.5239 17.7292 15.8839 19.0906C16.0278 19.2345 16.1841 19.3655 16.351 19.482C16.4967 19.5837 16.6939 19.5683 16.8196 19.4426L17.2988 18.9634C17.4889 18.7733 17.5741 18.5255 17.5651 18.2849C17.5629 18.2281 17.5475 18.1725 17.52 18.1227C17.4926 18.0729 17.4538 18.0302 17.4069 17.998C17.3407 17.9524 17.2558 17.887 17.1716 17.8029C16.5325 17.1639 16.5299 16.1268 17.1716 15.4851L18.7012 13.9557C19.344 13.3129 20.3924 13.3167 21.0303 13.9673C21.662 14.6114 21.642 15.6502 21.004 16.2881L20.7062 16.586C20.6071 16.685 20.5748 16.8316 20.62 16.9641C20.7535 17.3555 20.8259 17.7608 20.8406 18.1642C20.8522 18.4807 21.2379 18.6296 21.4619 18.4056L22.3065 17.561C23.6557 16.2121 23.6557 14.0169 22.3065 12.668Z\" class=\"_ampo\">\u003C\/path>\u003C\/svg>\u003C\/span>"},1,"HTML"]],"elements":[["__elem_c37bd704_0_0_9f","u_0_0_\/Y",1],["__elem_c37bd704_0_1_Un","u_0_1_Rj",1],["__elem_fc9f538f_0_0_wM","u_0_2_uw",1],["__elem_4bf8f142_0_d_3x","u_0_3_j2",1],["__elem_4bf8f142_0_c_jF","u_0_4_lL",1],["__elem_4bf8f142_0_b_WY","u_0_5_lH",1],["__elem_4bf8f142_0_a_mM","u_0_6_Hk",1],["__elem_4bf8f142_0_9_gX","u_0_7_8y",1],["__elem_4bf8f142_0_8_sm","u_0_8_Sr",1],["__elem_4bf8f142_0_7_y3","u_0_9_iQ",1],["__elem_4bf8f142_0_6_6G","u_0_a_zq",1],["__elem_4bf8f142_0_5_zc","u_0_b_eu",1],["__elem_4bf8f142_0_4_uT","u_0_c_TX",1],["__elem_4bf8f142_0_3_Jf","u_0_d_Zf",1],["__elem_4bf8f142_0_2_AY","u_0_e_uh",1],["__elem_4bf8f142_0_1_Ul","u_0_f_eJ",1],["__elem_4bf8f142_0_0_qU","u_0_g_8u",1],["__elem_c37bd704_0_2_zj","u_0_h_F5",1],["__elem_072b8e64_0_0_a0","u_0_i_dO",1],["__elem_a588f507_0_0_NW","u_0_j_1W",1],["__elem_94c15385_0_0_\/J","u_0_k_UW",1],["__elem_94c15385_0_1_K4","u_0_l_3L",1],["__elem_a588f507_0_1_ZR","u_0_m_Tx",1],["__elem_a588f507_0_2_5j","u_0_n_3s",1],["__elem_94c15385_0_2_KN","u_0_o_yJ",1],["__elem_94c15385_0_3_KK","u_0_p_y7",1],["__elem_a588f507_0_3_MO","u_0_q_ku",1],["__elem_a588f507_0_4_h9","u_0_r_kR",1],["__elem_94c15385_0_4_Pu","u_0_s_MQ",1],["__elem_94c15385_0_5_1\/","u_0_t_fe",1],["__elem_a588f507_0_5_CH","u_0_u_cA",1],["__elem_a588f507_0_6_Hc","u_0_v_ED",1],["__elem_94c15385_0_6_eo","u_0_w_N8",1],["__elem_94c15385_0_7_iT","u_0_x_gZ",1],["__elem_a588f507_0_7_bg","u_0_y_3X",1],["__elem_a588f507_0_8_bc","u_0_z_4h",1],["__elem_94c15385_0_8_wI","u_0_10_JD",1],["__elem_94c15385_0_9_jq","u_0_11_e7",1],["__elem_a588f507_0_9_ee","u_0_12_1v",1],["__elem_de0251b4_0_0_bT","u_0_13_Cc",1],["__elem_fc9f538f_0_1_RL","u_0_14_Ab",1],["__elem_a588f507_0_a_Ns","u_0_15_H6",1],["__elem_94c15385_0_a_M3","u_0_16_jc",1],["__elem_94c15385_0_b_fW","u_0_17_6k",1],["__elem_a588f507_0_b_xQ","u_0_18_vk",1],["__elem_a588f507_0_c_uV","u_0_19_Y6",1],["__elem_94c15385_0_c_oP","u_0_1a_HM",1],["__elem_94c15385_0_d_FI","u_0_1b_JP",1],["__elem_a588f507_0_d_MT","u_0_1c_ey",1],["__elem_a588f507_0_e_BL","u_0_1d_T5",1],["__elem_94c15385_0_e_C8","u_0_1e_st",1],["__elem_94c15385_0_f_Kd","u_0_1f_i0",1],["__elem_a588f507_0_f_SV","u_0_1g_j\/",1],["__elem_a588f507_0_g_EN","u_0_1h_ih",1],["__elem_94c15385_0_g_kc","u_0_1i_fU",1],["__elem_94c15385_0_h_YT","u_0_1j_Sb",1],["__elem_a588f507_0_h_K1","u_0_1k_PY",1],["__elem_a588f507_0_i_q0","u_0_1l_61",1],["__elem_94c15385_0_i_w8","u_0_1m_dJ",1],["__elem_94c15385_0_j_8\/","u_0_1n_F0",1],["__elem_a588f507_0_j_9x","u_0_1o_f8",1]],"require":[["UniversalMicroSiteTrackingController","init",["ImmutableServerCallableWrapper"],[true,"HK",{"__imm":{"module":{"__m":"ImmutableServerCallableWrapper"},"method":"Map","value":[]}},"1gevpI25xcYpkbFqN",null,"https:\/\/ai.meta.com\/blog\/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs\/","1114348660281896","en_US","apac",null,"0l2TObv7qy7n0yMlg","meta_ai",null,"",{"__imm":{"module":{"__m":"ImmutableServerCallableWrapper"},"method":"Map","value":[]}},null,"",""]],["FBAIDesktopView","initFBAIAnchorlinkScroll",[],[]],["FBAIPixelAnalytics","trackScrollEvent",[],[{"title":"Introducing SPDL: Faster AI model training with thread-based data loading"}]],["WebPixelRatioDetector","startDetecting",[],[false]],["GoogleAnalyticsCookies","writeGACookies",[],[false,"https:\/\/www.google-analytics.com\/analytics.js","UA-137226323-1",{"sampleRate":100,"cookieDomain":"ai.meta.com"},true,[]]],["fbq","init",[],["765371877188948"]],["fbq","init",[],["720048218061799"]],["fbq","track",[],["PageView"]],["ScriptPath","set",[],["MSXAIBlogPostController","a1f3c513",{"imp_id":"1gevpI25xcYpkbFqN","ef_page":null,"uri":"https:\/\/ai.meta.com\/blog\/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs\/"}]],["react-xhp","constructAndRenderComponentIntoComment_DO_NOT_USE",["AIDropdownNav.react","__inst_363d94e1_0_0_e5","__inst_7de61f26_0_0_Qs","__elem_fc9f538f_0_0_wM"],[{"constructor":{"__m":"AIDropdownNav.react"},"concurrentRootOptions":{"unstable_useShim":true},"props":{"align":"left","config":{"__m":"__inst_363d94e1_0_0_e5"},"fontColor":null,"locale":"en_US","navFBTs":{"closeButtonARIALabel":"Close submenu","externalLinkARIALabel":"opens in new tab","hamburgerARIALabel":"Main menu","prevLinkLabel":"BACK","prevLinkARIALabel":"Go up one level","searchARIALabel":"Toggle site search","searchClearLabel":"Clear","searchResultLabel":"See all results for a search query"},"position":"fixed","xmltConfig":{"__m":"__inst_7de61f26_0_0_Qs"}},"placeholderElement":{"__m":"__elem_fc9f538f_0_0_wM"},"acrossTransitions":false,"clobberSiblings":false,"preloader":null,"bigPipeContext":{"__bigPipeContext":1},"nonBlockingPreloaders":null}]],["PaletteAboutFBLinkAria","initLinkAria",["__elem_c37bd704_0_0_9f"],[{"element":{"__m":"__elem_c37bd704_0_0_9f"},"newTabFragment":"(opens in new tab)"}]],["PaletteAboutFBLinkAria","initLinkAria",["__elem_c37bd704_0_1_Un"],[{"element":{"__m":"__elem_c37bd704_0_1_Un"},"newTabFragment":"(opens in new tab)"}]],["NonFBLinkReferrerProtector","setupDelegation",[],[]],["FBAIV2BackToTop","onClick",["__elem_de0251b4_0_0_bT"],[{"__m":"__elem_de0251b4_0_0_bT"}]],["__inst_f1d0759c_0_0_a\/"],["__inst_f1d0759c_0_1_eY"],["__inst_f1d0759c_0_2_m+"],["__inst_f1d0759c_0_3_vZ"],["__inst_f1d0759c_0_4_Th"],["__inst_f1d0759c_0_5_op"],["__inst_f1d0759c_0_6_nY"],["__inst_f1d0759c_0_7_Bk"],["__inst_f1d0759c_0_8_0l"],["__inst_f1d0759c_0_9_K2"],["react-xhp","constructAndRenderComponentIntoComment_DO_NOT_USE",["FBAIV2SearchBar.react","__elem_fc9f538f_0_1_RL"],[{"constructor":{"__m":"FBAIV2SearchBar.react"},"concurrentRootOptions":{"unstable_useShim":true},"props":{"magnifyingGlassSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/85559716_2814260008668824_1992323131183726592_n.svg?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=b-GfrC2nFHUQ7kNvgF7C-SB&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYBPYfIDWLyJ0VgNj9nmx-6PB39Myz2T5bzxCdZWZertqg&oe=675C64CF","isFooterStyle":true},"placeholderElement":{"__m":"__elem_fc9f538f_0_1_RL"},"acrossTransitions":false,"clobberSiblings":false,"preloader":null,"bigPipeContext":{"__bigPipeContext":1},"nonBlockingPreloaders":null}]],["PaletteAboutFBLinkAria","initLinkAria",["__elem_c37bd704_0_2_zj"],[{"element":{"__m":"__elem_c37bd704_0_2_zj"},"newTabFragment":"(opens in new tab)"}]],["ReactRenderer","constructAndRenderComponent",["FBClipboardLink.react","__markup_da4ef9a3_0_0_Di","HTML","__elem_072b8e64_0_0_a0"],[{"__m":"FBClipboardLink.react"},{"label":"","value":"https:\/\/ai.meta.com\/blog\/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs\/","tooltip":"","tooltipSuccess":"Text Copied to Clipboard","tooltipSuccessDuration":1000,"childrenDONOTUSE":{"__m":"__markup_da4ef9a3_0_0_Di"}},{"__m":"__elem_072b8e64_0_0_a0"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_0_qU"],[{"imageElement":{"__m":"__elem_4bf8f142_0_0_qU"},"defaultSrc":"https:\/\/scontent-hkg4-2.xx.fbcdn.net\/v\/t39.2365-6\/468083281_594140949954283_2426713969066504197_n.png?_nc_cat=111&ccb=1-7&_nc_sid=e280be&_nc_ohc=1aWtWnTwoKYQ7kNvgFyoykW&_nc_zt=14&_nc_ht=scontent-hkg4-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCdJjvarc_71cH-nk_X95N7h2kUgYufgE_bz5migTnx7g&oe=675C56F6","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg4-2.xx.fbcdn.net\/v\/t39.2365-6\/468083281_594140949954283_2426713969066504197_n.png?_nc_cat=111&ccb=1-7&_nc_sid=e280be&_nc_ohc=1aWtWnTwoKYQ7kNvgFyoykW&_nc_zt=14&_nc_ht=scontent-hkg4-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCdJjvarc_71cH-nk_X95N7h2kUgYufgE_bz5migTnx7g&oe=675C56F6","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_1_Ul"],[{"imageElement":{"__m":"__elem_4bf8f142_0_1_Ul"},"defaultSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467713947_564491442790344_4109051796259411971_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=-KPORKEiZq8Q7kNvgF9yRui&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYB50clBrie-vvBKAY_nJklytnrqPc8X1fAEaBQzwvulxg&oe=675C594F","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467713947_564491442790344_4109051796259411971_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=-KPORKEiZq8Q7kNvgF9yRui&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYB50clBrie-vvBKAY_nJklytnrqPc8X1fAEaBQzwvulxg&oe=675C594F","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_2_AY"],[{"imageElement":{"__m":"__elem_4bf8f142_0_2_AY"},"defaultSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467870714_8321053254661739_2454676221431077461_n.png?_nc_cat=107&ccb=1-7&_nc_sid=e280be&_nc_ohc=hei-3_IBLZ4Q7kNvgEAHP2V&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDGLLubtQgzv6ZLT4PMSvHWJcgasb7fu__KiFDgv2tOyA&oe=675C45C5","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467870714_8321053254661739_2454676221431077461_n.png?_nc_cat=107&ccb=1-7&_nc_sid=e280be&_nc_ohc=hei-3_IBLZ4Q7kNvgEAHP2V&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDGLLubtQgzv6ZLT4PMSvHWJcgasb7fu__KiFDgv2tOyA&oe=675C45C5","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_3_Jf"],[{"imageElement":{"__m":"__elem_4bf8f142_0_3_Jf"},"defaultSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467708283_1214292806332292_5974026267551799561_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=oRDzp90CV74Q7kNvgF3oD_j&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAdOlM5uMG5mAYOnsh4HPU91PQ-5y1mJ7fWXo6k7jXdDA&oe=675C4785","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467708283_1214292806332292_5974026267551799561_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=oRDzp90CV74Q7kNvgF3oD_j&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAdOlM5uMG5mAYOnsh4HPU91PQ-5y1mJ7fWXo6k7jXdDA&oe=675C4785","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_4_uT"],[{"imageElement":{"__m":"__elem_4bf8f142_0_4_uT"},"defaultSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467817888_1081604740175655_1343230018837792557_n.png?_nc_cat=104&ccb=1-7&_nc_sid=e280be&_nc_ohc=8LSCshz2_IkQ7kNvgGrsj1u&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYA-gdAWdu2abK-UXHU-BOrBV2d9rPkuZB8SJCCcK8DMcA&oe=675C458E","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467817888_1081604740175655_1343230018837792557_n.png?_nc_cat=104&ccb=1-7&_nc_sid=e280be&_nc_ohc=8LSCshz2_IkQ7kNvgGrsj1u&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYA-gdAWdu2abK-UXHU-BOrBV2d9rPkuZB8SJCCcK8DMcA&oe=675C458E","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_5_zc"],[{"imageElement":{"__m":"__elem_4bf8f142_0_5_zc"},"defaultSrc":"https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.2365-6\/467829534_965410685408784_3224733377451675742_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=748YqvbHa9kQ7kNvgElSicl&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCNsioE5JfWWuGQSi_ByzLXtf7kewIfmtf3WrBS-8Y9mg&oe=675C72DE","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.2365-6\/467829534_965410685408784_3224733377451675742_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=748YqvbHa9kQ7kNvgElSicl&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCNsioE5JfWWuGQSi_ByzLXtf7kewIfmtf3WrBS-8Y9mg&oe=675C72DE","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_6_6G"],[{"imageElement":{"__m":"__elem_4bf8f142_0_6_6G"},"defaultSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467899057_458260057292762_7006306749517498603_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=XU6MR5cIOv8Q7kNvgHvVlr5&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDaauRZ77nlOs22Sq_Txz1VwwjYIZ9nwORp1TnHUfvFiQ&oe=675C62FB","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467899057_458260057292762_7006306749517498603_n.png?_nc_cat=102&ccb=1-7&_nc_sid=e280be&_nc_ohc=XU6MR5cIOv8Q7kNvgHvVlr5&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDaauRZ77nlOs22Sq_Txz1VwwjYIZ9nwORp1TnHUfvFiQ&oe=675C62FB","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_7_y3"],[{"imageElement":{"__m":"__elem_4bf8f142_0_7_y3"},"defaultSrc":"https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.2365-6\/467854688_560930496537908_7855063935620694489_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=BrhXCPzq4K8Q7kNvgHVdapM&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCtxkA455YchWhwgs7jhqA93_CPb3QtQj5f12OG4ZwSWg&oe=675C44E4","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.2365-6\/467854688_560930496537908_7855063935620694489_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=BrhXCPzq4K8Q7kNvgHVdapM&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCtxkA455YchWhwgs7jhqA93_CPb3QtQj5f12OG4ZwSWg&oe=675C44E4","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_8_sm"],[{"imageElement":{"__m":"__elem_4bf8f142_0_8_sm"},"defaultSrc":"https:\/\/scontent-hkg1-1.xx.fbcdn.net\/v\/t39.2365-6\/468040003_541070438740698_4610484016512570171_n.png?_nc_cat=105&ccb=1-7&_nc_sid=e280be&_nc_ohc=8mF98FNVUi8Q7kNvgHjFSB3&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCDjgi48eMoph3CaoNaBtXvD-mGkiULP_z2XrVlASxQsw&oe=675C5112","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-1.xx.fbcdn.net\/v\/t39.2365-6\/468040003_541070438740698_4610484016512570171_n.png?_nc_cat=105&ccb=1-7&_nc_sid=e280be&_nc_ohc=8mF98FNVUi8Q7kNvgHjFSB3&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYCDjgi48eMoph3CaoNaBtXvD-mGkiULP_z2XrVlASxQsw&oe=675C5112","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_9_gX"],[{"imageElement":{"__m":"__elem_4bf8f142_0_9_gX"},"defaultSrc":"https:\/\/scontent-hkg4-2.xx.fbcdn.net\/v\/t39.2365-6\/467858006_8467522473345985_3099663279655725440_n.png?_nc_cat=111&ccb=1-7&_nc_sid=e280be&_nc_ohc=IZTzgl6BWGEQ7kNvgE_2Hvn&_nc_zt=14&_nc_ht=scontent-hkg4-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAnh6ZriaFE90oP8kkwDduUUvz7p56766YCn1hS1-c5RQ&oe=675C6266","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg4-2.xx.fbcdn.net\/v\/t39.2365-6\/467858006_8467522473345985_3099663279655725440_n.png?_nc_cat=111&ccb=1-7&_nc_sid=e280be&_nc_ohc=IZTzgl6BWGEQ7kNvgE_2Hvn&_nc_zt=14&_nc_ht=scontent-hkg4-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAnh6ZriaFE90oP8kkwDduUUvz7p56766YCn1hS1-c5RQ&oe=675C6266","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_a_mM"],[{"imageElement":{"__m":"__elem_4bf8f142_0_a_mM"},"defaultSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467830688_578969098414388_4964508202353310652_n.png?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=1DQiltYojXwQ7kNvgE-FD2_&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDp4NtHZmd1NCJbozOjaBbp0-C3gYsV0flAATO3W8THbQ&oe=675C4DA9","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-2.xx.fbcdn.net\/v\/t39.2365-6\/467830688_578969098414388_4964508202353310652_n.png?_nc_cat=103&ccb=1-7&_nc_sid=e280be&_nc_ohc=1DQiltYojXwQ7kNvgE-FD2_&_nc_zt=14&_nc_ht=scontent-hkg1-2.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDp4NtHZmd1NCJbozOjaBbp0-C3gYsV0flAATO3W8THbQ&oe=675C4DA9","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_b_WY"],[{"imageElement":{"__m":"__elem_4bf8f142_0_b_WY"},"defaultSrc":"https:\/\/scontent-hkg1-1.xx.fbcdn.net\/v\/t39.2365-6\/467818250_1249748192902657_3972342565488761892_n.png?_nc_cat=105&ccb=1-7&_nc_sid=e280be&_nc_ohc=VWokBbOhbcMQ7kNvgGd8r0r&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAndlRUE7ybq7liphXNMcfOljMF1EXJYoEaZREP_7DSXA&oe=675C52AA","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-1.xx.fbcdn.net\/v\/t39.2365-6\/467818250_1249748192902657_3972342565488761892_n.png?_nc_cat=105&ccb=1-7&_nc_sid=e280be&_nc_ohc=VWokBbOhbcMQ7kNvgGd8r0r&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYAndlRUE7ybq7liphXNMcfOljMF1EXJYoEaZREP_7DSXA&oe=675C52AA","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_c_jF"],[{"imageElement":{"__m":"__elem_4bf8f142_0_c_jF"},"defaultSrc":"https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.2365-6\/467867537_1065946868340400_2802839178575046307_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=5HsA_NcNFc4Q7kNvgEfFLAz&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDo_5oraUYg7j5058dMCAQ9nWaTHE2NawedXG0O3kWu3A&oe=675C4D3E","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg4-1.xx.fbcdn.net\/v\/t39.2365-6\/467867537_1065946868340400_2802839178575046307_n.png?_nc_cat=100&ccb=1-7&_nc_sid=e280be&_nc_ohc=5HsA_NcNFc4Q7kNvgEfFLAz&_nc_zt=14&_nc_ht=scontent-hkg4-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYDo_5oraUYg7j5058dMCAQ9nWaTHE2NawedXG0O3kWu3A&oe=675C4D3E","breakpoint":"768px"}]],["PaletteMetaAiResponsiveImage","init",["__elem_4bf8f142_0_d_3x"],[{"imageElement":{"__m":"__elem_4bf8f142_0_d_3x"},"defaultSrc":"https:\/\/scontent-hkg1-1.xx.fbcdn.net\/v\/t39.2365-6\/468044616_557963623513695_4178294153676127108_n.png?_nc_cat=101&ccb=1-7&_nc_sid=e280be&_nc_ohc=BWi5ITtzHwAQ7kNvgEe_UXS&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYA71_QJjkkJ3bNwnK1qejbjfsLe0ITxTIi26iDVBCzjBg&oe=675C4979","desktopSrc":null,"mobileSrc":"https:\/\/scontent-hkg1-1.xx.fbcdn.net\/v\/t39.2365-6\/468044616_557963623513695_4178294153676127108_n.png?_nc_cat=101&ccb=1-7&_nc_sid=e280be&_nc_ohc=BWi5ITtzHwAQ7kNvgEe_UXS&_nc_zt=14&_nc_ht=scontent-hkg1-1.xx&_nc_gid=AWOp8qOTkaBdiqAtWNFbuGw&oh=00_AYA71_QJjkkJ3bNwnK1qejbjfsLe0ITxTIi26iDVBCzjBg&oe=675C4979","breakpoint":"768px"}]],["ODS"],["Animation"],["RequireDeferredReference","unblock",[],[["FbtLogging","IntlQtEventFalcoEvent","ODS","Animation"],"sd"]],["RequireDeferredReference","unblock",[],[["FbtLogging","IntlQtEventFalcoEvent","ODS","Animation"],"css"]],["TimeSliceImpl"],["HasteSupportData"],["ServerJS"],["Run"],["InitialJSLoader"]]});requireLazy(["Run"],function(Run){Run.onAfterLoad(function(){s.cleanup(TimeSlice)})});}); </script> <script nonce="rF3EhZnQ">now_inl=(function(){var p=window.performance;return p&&p.now&&p.timing&&p.timing.navigationStart?function(){return p.now()+p.timing.navigationStart}:function(){return new Date().getTime()};})(); window.__bigPipeFR=now_inl();</script> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yv/l/1,cross/KaxZ1Da-YEc.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/y_/l/1,cross/i1du4dXRvDt.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yn/l/1,cross/rFI_n6V9OQU.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yM/l/1,cross/I1D9Wn1z8YN.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3ieAa4/yV/l/zh_HK/90wBgvTfhkp.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yb/r/SmflXpFDEjF.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yK/r/lNInKxOqejp.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yp/r/tLHqNIz7Dm_.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yU/r/FlyWwzGAwBl.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yu/r/UzL3li65k0b.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/y_/l/1,cross/VHRGIarD3Rh.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3iqgu4/yY/l/zh_HK/5P1nQww889q.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3ims44/yz/l/zh_HK/3ueq8XDsw_q.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3idjU4/yB/l/zh_HK/Zo59qY-R5AT.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3i62L4/yv/l/zh_HK/qO6253Xo2DC.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/y0/r/DlS8iOPbc-U.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yJ/r/ww7PQjeJE84.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3iRzK4/yB/l/zh_HK/-H6LHcvgovi.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3iE9K4/yH/l/zh_HK/0g9ACyquZNC.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yj/r/QMj9sEu41DG.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yb/r/FkmGaZFEpGv.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yz/r/UDFCsXtDquD.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yo/r/pt_W8BOmFiq.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yA/r/n9Awa-VoX_i.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yh/r/DgU1fe16oS1.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3i5ZD4/yJ/l/zh_HK/IuFiiH2n9od.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3iNgV4/y2/l/zh_HK/uW8xLxjzrLm.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yz/r/CnjvuT6uwlS.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/y4/l/1,cross/AibfqOkftS7.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yM/r/YdtQ-95opMP.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yl/l/1,cross/mL1vj6SIO4S.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3iPxe4/yp/l/zh_HK/h9ErGEeD3iz.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yB/l/1,cross/r9Qyhrwg8xh.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yG/l/1,cross/MrJ_dqWFhf1.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yv/l/1,cross/kb4l_VVOdHs.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v4/yo/l/1,cross/uNWOHuxBVTb.css" as="style" crossorigin="anonymous" /> <link rel="preload" href="https://static.xx.fbcdn.net/rsrc.php/v3/yg/r/z8Izn_KvHPB.js" as="script" crossorigin="anonymous" nonce="rF3EhZnQ" /> <script nonce="rF3EhZnQ">window.__bigPipeCtor=now_inl();requireLazy(["BigPipe"],function(BigPipe){define("__bigPipe",[],window.bigPipe=new BigPipe({"forceFinish":true,"config":null}));});</script> <script nonce="rF3EhZnQ">(function(){var n=now_inl();requireLazy(["__bigPipe"],function(bigPipe){bigPipe.beforePageletArrive("first_response",n);})})();</script> <script nonce="rF3EhZnQ">requireLazy(["__bigPipe"],(function(bigPipe){bigPipe.onPageletArrive({displayResources:["sjogf/J","bhe4bEa","wXaVolg","0j1kIxH","tWdy/1R","Unax+Jw","Ftl2VZm","qRgwNGL","0TSSozG","I9s1YYk","nVQScdg","MbEzaF7","rxEQdFu","/k1fHQ6","FL/OmNJ","7Co8YaN","ZVU/z8L","aOOY7ci","gURu9Fo","o0Y39To","oa6e8IN","JouLeRi","PKoEp6l","R87mLXf","qgihI6q","QGoPeYn","1ZgUYq9","sJGwlD3","qZsMJkC","//za25u","c9XxCfz","F5cUGyw","q7yhC7Y","6g2/bVI","/RVh9bo","DHo8rIt","W4Mlt66"],id:"first_response",phase:0,last_in_phase:true,tti_phase:0,hsrp:{hblp:{consistency:{rev:1018448430}}},allResources:["j5ucS2m","LEIGyMk","7Co8YaN","Unax+Jw","gURu9Fo","o0Y39To","oa6e8IN","PKoEp6l","R87mLXf","qgihI6q","ucfmyas","oAnahFT","lg4g741","b/jSasg","aOOY7ci","sjogf/J","bhe4bEa","wXaVolg","0j1kIxH","tWdy/1R","Ftl2VZm","qRgwNGL","0TSSozG","I9s1YYk","nVQScdg","MbEzaF7","rxEQdFu","/k1fHQ6","FL/OmNJ","ZVU/z8L","JouLeRi","QGoPeYn","1ZgUYq9","sJGwlD3","qZsMJkC","//za25u","c9XxCfz","F5cUGyw","q7yhC7Y","6g2/bVI","/RVh9bo","DHo8rIt","wSue/3d","AYyBVT9","RbjUa+x","W4Mlt66","vCxI9D4"]});}));</script> <script nonce="rF3EhZnQ">requireLazy(["__bigPipe"],function(bigPipe){bigPipe.setPageID("7440532770668790760")});</script><script nonce="rF3EhZnQ">(function(){var n=now_inl();requireLazy(["__bigPipe"],function(bigPipe){bigPipe.beforePageletArrive("last_response",n);})})();</script> <script nonce="rF3EhZnQ">requireLazy(["__bigPipe"],(function(bigPipe){bigPipe.onPageletArrive({displayResources:["LEIGyMk"],id:"last_response",phase:1,last_in_phase:true,the_end:true,jsmods:{define:[["cr:6016",["NavigationMetricsWWW"],{__rc:["NavigationMetricsWWW",null]},-1],["cr:3376",[],{__rc:[null,null]},-1],["cr:7383",["BanzaiWWW"],{__rc:["BanzaiWWW",null]},-1],["cr:1083116",["XAsyncRequest"],{__rc:["XAsyncRequest",null]},-1],["cr:1083117",[],{__rc:[null,null]},-1],["cr:7267",["AdsDataAtom"],{__rc:["AdsDataAtom",null]},-1],["TimeSliceInteractionSV",[],{on_demand_reference_counting:true,on_demand_profiling_counters:true,default_rate:1000,lite_default_rate:100,interaction_to_lite_coinflip:{ADS_INTERFACES_INTERACTION:0,ads_perf_scenario:0,ads_wait_time:0,Event:1},interaction_to_coinflip:{ADS_INTERFACES_INTERACTION:1,ads_perf_scenario:1,ads_wait_time:1,Event:100},enable_heartbeat:false,maxBlockMergeDuration:0,maxBlockMergeDistance:0,enable_banzai_stream:true,user_timing_coinflip:50,banzai_stream_coinflip:0,compression_enabled:true,ref_counting_fix:false,ref_counting_cont_fix:false,also_record_new_timeslice_format:false,force_async_request_tracing_on:false},2609],["USIDMetadata",[],{browser_id:"?",tab_id:"",page_id:"Psnf02q6btzwo",transition_id:0,version:6},5888],["cr:6114",["DOM"],{__rc:["DOM",null]},-1],["cr:1642797",["BanzaiBase"],{__rc:["BanzaiBase",null]},-1],["cr:1042",["XAsyncRequestWWW"],{__rc:["XAsyncRequestWWW",null]},-1],["cr:7225",[],{__rc:[null,null]},-1],["cr:1172",["WebSession"],{__rc:["WebSession",null]},-1],["cr:2037",["BanzaiAdapter"],{__rc:["BanzaiAdapter",null]},-1],["cr:3724",["SetIdleTimeoutAcrossTransitions"],{__rc:["SetIdleTimeoutAcrossTransitions",null]},-1],["cr:9985",["performanceAbsoluteNow"],{__rc:["performanceAbsoluteNow",null]},-1],["cr:9986",["CurrentUser"],{__rc:["CurrentUser",null]},-1],["cr:9987",["NavigationMetrics"],{__rc:["NavigationMetrics",null]},-1],["cr:9988",["Visibility"],{__rc:["Visibility",null]},-1],["cr:5866",["BanzaiAdapterWWW"],{__rc:["BanzaiAdapterWWW",null]},-1],["cr:7384",["cancelIdleCallbackWWW"],{__rc:["cancelIdleCallbackWWW",null]},-1],["cr:692209",["cancelIdleCallbackBlue"],{__rc:["cancelIdleCallbackBlue",null]},-1],["BanzaiConfig",[],{MAX_SIZE:10000,MAX_WAIT:150000,MIN_WAIT:null,RESTORE_WAIT:150000,blacklist:["time_spent"],disabled:false,gks:{boosted_pagelikes:true,platform_oauth_client_events:true,sticker_search_ranking:true},known_routes:["artillery_javascript_actions","artillery_javascript_trace","artillery_logger_data","logger","falco","gk2_exposure","js_error_logging","loom_trace","marauder","perfx_custom_logger_endpoint","qex","require_cond_exposure_logging","metaconfig_exposure"],should_drop_unknown_routes:true,should_log_unknown_routes:false},7],["cr:844180",["TimeSpentImmediateActiveSecondsLoggerBlue"],{__rc:["TimeSpentImmediateActiveSecondsLoggerBlue",null]},-1],["cr:1187159",["BlueCompatBroker"],{__rc:["BlueCompatBroker",null]},-1],["cr:1634616",["UserActivityBlue"],{__rc:["UserActivityBlue",null]},-1],["TimeSpentConfig",[],{delay:1000,timeout:64,"0_delay":0,"0_timeout":8},142],["cr:710",[],{__rc:[null,null]},-1],["ImmediateActiveSecondsConfig",[],{sampling_rate:0},423],["CometAltpayJsSdkIframeAllowedDomains",[],{allowed_domains:["https://live.adyen.com","https://integration-facebook.payu.in","https://facebook.payulatam.com","https://secure.payu.com","https://facebook.dlocal.com","https://buy2.boku.com"]},4920]],require:[["NavigationMetrics","setPage",[],[{page:"MSXAIBlogPostController",page_type:"normal",page_uri:"https://ai.meta.com/blog/spdl-faster-ai-model-training-with-thread-based-data-loading-reality-labs/",serverLID:"7440532770668790760"}]],["FalcoLoggerTransports","attach",[],[]],["Chromedome","start",[],[{}]],["DimensionTracking"],["ClickRefLogger"],["NavigationClickPointHandler"],["Artillery","disable",[],[]],["ScriptPathLogger","startLogging",[],[]],["TimeSpentBitArrayLogger","init",[],[]],["CookieCore","setWithoutChecksIfFirstPartyContext",[],["_js_datr","IhVCZ-n55j7Z6ZeDLibCr9uV",34560000000,"/",true,".ai.meta.com"]],["TransportSelectingClientSingletonConditional"],["RequireDeferredReference","unblock",[],[["TransportSelectingClientSingletonConditional"],"sd"]],["RequireDeferredReference","unblock",[],[["TransportSelectingClientSingletonConditional"],"css"]]]},hsrp:{hsdp:{clpData:{"1829319":{r:1},"1829320":{r:1},"1843988":{r:1}}},hblp:{consistency:{rev:1018448430}}},allResources:["LEIGyMk","R87mLXf","qgihI6q","p+1OXu8","gURu9Fo","JouLeRi","PKoEp6l","oa6e8IN"]});}));</script></body></html>