CINXE.COM

Improving Translation Quality with Domain-Specific Fine-Tuning and NVIDIA NIM | NVIDIA Technical Blog

<!doctype html> <html lang="en-US" id="html"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"NRJS-2b0defbeb07862260b2",applicationID:"745178505"};;/*! For license information please see nr-loader-rum-1.282.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},5217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>m,gD:()=>b,xN:()=>v});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources";var a=r(993);const s=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var c=r(2614),u=r(944),l=r(384),d=r(8122);const f="[data-nr-mask]",g=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0,level:a.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:c.wk,inactiveMs:c.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){s(t)?e.mask_selector="".concat(t,",").concat(f):""===t||null===t?e.mask_selector=f:(0,u.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){s(t)?e.block_selector+=",".concat(t):""!==t&&(0,u.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,u.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},p={},h="All configuration objects require an agent identifier!";function m(e){if(!e)throw new Error(h);if(!p[e])throw new Error("Configuration for ".concat(e," was never set"));return p[e]}function v(e,t){if(!e)throw new Error(h);p[e]=(0,d.a)(t,g());const r=(0,l.nY)(e);r&&(r.init=p[e])}function b(e,t){if(!e)throw new Error(h);var r=m(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.282.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=h(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:h,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function m(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,We:()=>i,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function l(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9559:(e,t,r)=>{"use strict";r.d(t,{A5:()=>d,NF:()=>c,tV:()=>u});var n=r(6154),i=r(1863),o=r(5289),a=r(9566),s=r(384);const c="websocket-",u="addEventListener",l={};function d(e){if(l[e.debugId]++)return e;if(!(0,s.dV)().o.WS)return e;class t extends WebSocket{static name="WebSocket";constructor(...t){super(...t);const r=(0,a.LA)(6);this.report=function(t){const r=(0,i.t)();return function(n,...a){const s=a[0]?.timeStamp||(0,i.t)(),u=(0,o.We)();e.emit(c+n,[s,s-r,u,t,...a])}}(r),this.report("new");["message","error","open","close"].forEach((e=>{this.addEventListener(e,(function(t){this.report(u,{eventType:e,event:t})}))}))}send(...e){this.report("send",...e);try{return super.send(...e)}catch(t){throw this.report("send-err",...e),t}}}return n.gm.WebSocket=t,e}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{Pj:()=>u,TZ:()=>i,XG:()=>c,rs:()=>o,xV:()=>s,z_:()=>a});var n=r(9559);const i=r(860).K7.metrics,o="sm",a="cm",s="storeSupportabilityMetrics",c="storeEventMetrics",u=["new","send","close",n.tV]},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>K});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),l=r(6154),d=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);const E=new Map;function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[A.Jt]||t[r];return E.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>E.get(c))),i}function _(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function N(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),T(E,n,!0,o||null===r?"session":void 0)(t,r)}function k(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},m.forEach((e=>{h[e]=T(E,e,!0,"api")})),h.addPageAction=T(E,"addPageAction",!0,n.K7.genericEvents),h.recordCustomEvent=T(E,"recordCustomEvent",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,T(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new k).get("object"==typeof e?e:{})};const S=k.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,v.t)()],r)}}}};function T(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,w),r?void 0:this}}function j(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=T(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?T(_,"routeName",void 0,n.K7.softNav):T(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>j()),!0):j(),h}var k=r(5217),S=r(8122);const T={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var I=r(5284);const O=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function K(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,k.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,S.a)(t,T);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,k.D0)(e.agentIdentifier),m=[c.beacon,c.errorBeacon];P||(h.proxy.assets&&(O(h.proxy.assets),m.push(h.proxy.assets)),h.proxy.beacon&&m.push(h.proxy.beacon),_(),(0,g.US)("activatedFeatures",I.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),d.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?m:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=N(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),P=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.282.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.282.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-l47U0Uoe1hZBr59ploFpMvlKF+8qyXRcrIz3FyX0RjKPtbVX/XVLlM33rGSBPUp0xtj5pGZfY8WGANUrr9Zq4A=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={374:0,840:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.282.0.PROD"]=self["webpackChunk:NRBA-1.282.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(5217);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var l=i(7603);var d=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const m=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,h.dV)().o.MO&&m(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(m(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var E=i(9908),R=i(2843),_=i(3878),x=i(782),N=i(1863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,R.u)((()=>(0,E.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,_.sp)("pagehide",(()=>(0,E.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var S=i(9559),T=i(3969);class j extends y{static featureName=T.TZ;constructor(e,t=!0){super(e,T.TZ,t),(0,S.A5)(this.ee),T.Pj.forEach((e=>{this.ee.on(S.NF+e,((...t)=>{(0,E.p)("buffered-"+S.NF+e,[...t],void 0,this.featureName,this.ee)}))})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,k,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" href="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/favicon_300a1064.ico" type="image/vnd.microsoft.icon"> <link media="all" href="https://developer-blogs.nvidia.com/wp-content/uploads/autoptimize/1/css/aggregated_1cf4c58a298ccc92d72f18db44a919e3.css" rel="stylesheet"><title>Improving Translation Quality with Domain&#x2d;Specific Fine&#x2d;Tuning and NVIDIA NIM | NVIDIA Technical Blog</title> <!-- OneTrust Cookies Consent Notice start for nvidia.com --> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="3e2b62ff-7ae7-4ac5-87c8-d5949ecafff5" ></script> <script type="text/javascript"> function OptanonWrapper() { var event = new Event('bannerLoaded'); window.dispatchEvent(event); } </script> <!-- OneTrust Cookies Consent Notice end for nvidia.com --><link rel="preload" href="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/scripts/main_61b387dd.js" as="script"><script src="//app-sj14.marketo.com/js/forms2/js/forms2.min.js?ver=5.6.2" defer></script><script src="https://unpkg.com/infinite-scroll@4/dist/infinite-scroll.pkgd.min.js" defer></script><meta property="interest" content="Conversational AI"><meta property="estimated-read-time" content="8 MIN"> <!-- The SEO Framework by Sybre Waaijer --> <meta name="robots" content="max-snippet:-1,max-image-preview:standard,max-video-preview:-1" /> <link rel="canonical" href="https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/" /> <link rel="shortlink" href="https://developer.nvidia.com/blog/?p=95756" /> <meta name="description" content="Translation plays an essential role in enabling companies to expand across borders, with requirements varying significantly in terms of tone, accuracy&#8230;" /> <meta property="og:type" content="article" /> <meta property="og:locale" content="en_US" /> <meta property="og:site_name" content="NVIDIA Technical Blog" /> <meta property="og:title" content="Improving Translation Quality with Domain&#x2d;Specific Fine&#x2d;Tuning and NVIDIA NIM | NVIDIA Technical Blog" /> <meta property="og:description" content="Translation plays an essential role in enabling companies to expand across borders, with requirements varying significantly in terms of tone, accuracy, and technical terminology handling." /> <meta property="og:url" content="https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/" /> <meta property="og:image" content="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation.png" /> <meta property="og:image:width" content="1999" /> <meta property="og:image:height" content="1125" /> <meta property="article:published_time" content="2025-02-05T21:30+00:00" /> <meta property="article:modified_time" content="2025-02-06T19:33+00:00" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Improving Translation Quality with Domain&#x2d;Specific Fine&#x2d;Tuning and NVIDIA NIM | NVIDIA Technical Blog" /> <meta name="twitter:description" content="Translation plays an essential role in enabling companies to expand across borders, with requirements varying significantly in terms of tone, accuracy, and technical terminology handling." /> <meta name="twitter:image" content="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation.png" /> <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://developer.nvidia.com/blog/#/schema/WebSite","url":"https://developer.nvidia.com/blog/","name":"NVIDIA Technical Blog","description":"News and tutorials for developers, data scientists, and IT admins","inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://developer.nvidia.com/blog/search/{search_term_string}/"},"query-input":"required name=search_term_string"},"publisher":{"@type":"Organization","@id":"https://developer.nvidia.com/blog/#/schema/Organization","name":"NVIDIA Technical Blog","url":"https://developer.nvidia.com/blog/"}},{"@type":"WebPage","@id":"https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/","url":"https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/","name":"Improving Translation Quality with Domain&#x2d;Specific Fine&#x2d;Tuning and NVIDIA NIM | NVIDIA Technical Blog","description":"Translation plays an essential role in enabling companies to expand across borders, with requirements varying significantly in terms of tone, accuracy&#8230;","inLanguage":"en-US","isPartOf":{"@id":"https://developer.nvidia.com/blog/#/schema/WebSite"},"breadcrumb":{"@type":"BreadcrumbList","@id":"https://developer.nvidia.com/blog/#/schema/BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":"https://developer.nvidia.com/blog/","name":"NVIDIA Technical Blog"},{"@type":"ListItem","position":2,"item":"https://developer.nvidia.com/blog/category/conversational-ai/","name":"Category: Conversational AI"},{"@type":"ListItem","position":3,"name":"Improving Translation Quality with Domain&#x2d;Specific Fine&#x2d;Tuning and NVIDIA NIM"}]},"potentialAction":{"@type":"ReadAction","target":"https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/"},"datePublished":"2025-02-05T21:30+00:00","dateModified":"2025-02-06T19:33+00:00","author":{"@type":"Person","@id":"https://developer.nvidia.com/blog/#/schema/Person/596bf73ff2066bbb1a3cb9a2a2455d1b","name":"Cheng-Han (Hank) Du","description":"Cheng-Han (Hank) Du is a senior solution engineer at NVIDIA. He focuses on large language models and inference service deployment. He received his bachelor&rsquo;s degree in Computer Science from National Taiwan University and master&rsquo;s degree and PhD from..."}}]}</script> <!-- / The SEO Framework by Sybre Waaijer | 15.55ms meta | 0.31ms boot --> <link rel='dns-prefetch' href='//secure.gravatar.com' /> <link rel='dns-prefetch' href='//widgets.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//0.gravatar.com' /> <link rel='dns-prefetch' href='//1.gravatar.com' /> <link rel='dns-prefetch' href='//2.gravatar.com' /> <link rel='dns-prefetch' href='//v0.wordpress.com' /> <link href='https://assets.adobedtm.com' rel='preconnect' /> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/scripts/munchkin.js?ver=1740006973" id="munchkin-js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/scripts/user-dropdown.js?ver=1740006973" id="user_dropdown.js-js"></script> <link rel="https://api.w.org/" href="https://developer-blogs.nvidia.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://developer-blogs.nvidia.com/wp-json/wp/v2/posts/95756" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://developer-blogs.nvidia.com/xmlrpc.php?rsd" /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://developer-blogs.nvidia.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://developer-blogs.nvidia.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F&#038;format=xml" /> <link rel="alternate" hreflang="en" href="https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/" title="en_US" /> <link rel="alternate" hreflang="zh" href="https://developer.nvidia.com/zh-cn/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/" title="zh_CN" /> <!-- Stream WordPress user activity plugin v4.0.1 --> <!--wp code prettify--> <script src="//assets.adobedtm.com/5d4962a43b79/c1061d2c5e7b/launch-191c2462b890.min.js" data-ot-ignore="true"></script> <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.12.1/css/all.css" integrity="sha384-TxKWSXbsweFt0o2WqfkfJRRNVaPdzXJ/YLqgStggBVRREXkwU7OKz+xXtqOU4u8+" crossorigin="anonymous" media="none" onload="if(media!='all')media='all'"> <script src='https://developer-blogs.nvidia.com/wp-content/plugins/nv-faceted-search/js/faceted-search/build/direflowBundle.js?ver=ec7ca49'></script> </head> <body class="post-template-default single single-post postid-95756 single-format-standard improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim app-data index-data singular-data single-data single-post-data single-post-improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim-data"> <svg xmlns="http://www.w3.org/2000/svg" class="hide" style="display: none;"> <symbol id="n24-user-circle" viewBox="0 0 24 24"> <defs> </defs> <rect id="n24-icon-user-circle-bounds" class="n24-bounds" width="24" height="24"></rect> <g id="n24-icon-user-circle"> <circle id="user-circle" class="n24-user-circle-cls-1" cx="12" cy="12" r="9.75"></circle> <polyline id="user-body" class="n24-user-circle-cls-1" points="17.55 20.01 16.34 15.48 7.66 15.48 6.45 20.01"></polyline> <circle id="user-head" class="n24-user-circle-cls-1" cx="12" cy="9.91" r="3.48"></circle> </g> </symbol> </svg> <header class="page-header"> <div class="container"> <button class="navbar-toggle" type="button"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div class="logo"> <a class="primary-logo" href="/" title="Home" data-wpel-link="internal" target="_blank" rel="follow noopener"> <img alt="Home" width="142" height="32" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/nvidia-logo_28b633c7.svg"> </a> <a class="secondary-logo" href="/" title="Home" data-wpel-link="internal" target="_blank" rel="follow noopener">DEVELOPER</a> </div> <nav class="navbar primary navbar-expand-md navbar-inverse"> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="menu-top-menu-container"><ul id="menu-top-menu" class="menu nav navbar-nav primary mr-auto"><li id="menu-item-25291" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25291"><a title="Home" href="/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Home</a></li><li id="menu-item-25292" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25292"><a title="Blog" href="/blog" class="nav-link active" data-wpel-link="internal" target="_blank" rel="follow noopener">Blog</a></li><li id="menu-item-25293" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25293"><a title="Forums" href="https://forums.developer.nvidia.com/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Forums</a></li><li id="menu-item-25294" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25294"><a title="Docs" href="https://docs.nvidia.com/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Docs</a></li><li id="menu-item-25295" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25295"><a title="Downloads" href="https://developer.nvidia.com/downloads" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Downloads</a></li><li id="menu-item-25296" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25296"><a title="Training" href="https://www.nvidia.com/en-us/training/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Training</a></li></ul></div> </div> </nav> <nav class="navbar navbar-right" id="topRightNavbar"> <ul class="nav navbar-nav navbar-margin navbar-right navbar-margin-media login-nav"> <li class="search" id="search-top"> <div class="search-form" id="search-top-form"> <form class="gss form-search content-search" data-base-url="https://developer.nvidia.com/blog/" action="https://developer.nvidia.com/blog/search-posts" method="GET" id="nvidia-site-search-form" accept-charset="UTF-8"> <div> <div class="input-group"> <div id="top-site-search-form"> <input placeholder="Search" class="form-control form-text" type="text" id="edit-term" name="q" value="" size="15" maxlength="128"> </div> <span class="input-group-btn"> <button type="submit" class="btn btn-default"> <i class="fa fa-search" aria-hidden="true"></i> </button> </span> </div> <button class="btn element-invisible btn-primary form-submit" type="submit" id="edit-submit" name="op" value="Search">Search</button> </div> </form> </div> </li> <li class="leaf" id="dzauth_join_link"> <a href="https://developer.nvidia.com/login" class="cta--prim nv-join" data-wpel-link="internal" target="_blank" rel="follow noopener">Join</a> </li> <li class="leaf last" id="dzauth_login_link"> <a href="https://developer.nvidia.com/login" class="nv-login" data-wpel-link="internal" target="_blank" rel="follow noopener"> <svg aria-label="User Account" class="n24-icon nvprofileicon n24-account" style="width: 24px; height: 24px;"> <use xlink:href="#n24-user-circle"></use> </svg> </a> </li> </ul> </nav> </div> </header> <section class="main"> <div class="faceted-search-top-wrapper"> <div class="container"> <div class="row"> <div class="col col-lg-12 faceted-search-component-wrapper"> <faceted-search-bar appUrl="https://developer.nvidia.com/blog" componentTitle="Technical Blog" text="" subscribeUrl="https://developer.nvidia.com/email-signup" subscribeLabel="Subscribe" locale="en-US" redirectUrl="https://developer.nvidia.com/blog/search-posts/" autocompleteEndpointUrl="https://developer.nvidia.com/blog/wp-json/faceted-search/v1/autocomplete/" data-search-page="false"></faceted-search-bar> </div> </div> </div> </div> <div class="search-filters-component-wrapper--inner-page position-fixed w-100"> <div class="container"> <div class="row"> <faceted-search-filters endpoint="https://developer.nvidia.com/blog/wp-json/faceted-search/v1/select/" redirectUrl="https://developer.nvidia.com/blog/search-posts/" data-expanded="false" data-with-redirect="true" data-with-overlay="false" sortBy="post_date" locale="en-US" handleURls=""></faceted-search-filters> </div> </div> </div> <div class="container single-page"> <div id="main-content" class="row"> <script> sessionStorage.removeItem('facets.search.text'); sessionStorage.removeItem('facets.search.text-copy'); sessionStorage.removeItem('facets.search.filters'); </script> <div class="col-sm-12 d-none text-right sidebar-toggle-link-wrapper"> <a class="sidebar-toggle sidebar-toggle-link" href="#main-content-end"> Related Resources <i class="fa fa-angle-right" aria-hidden="true"></i> </a> </div> <div class="main-content col-lg-9 col-md-9 mt-0 mb-0"> <div class="post-card--single"> <div class="row"> <div class="col-lg-12 mb-0"> <div class="card--post-attributes"> <span class="category-name content-s"> <a href="https://developer.nvidia.com/blog/category/conversational-ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">Conversational AI</a> </span> <span class="post-rate-widget content-s"></span> <span class="post-lang-switcher"> <div class="posts-filter-form"><div class="filter-item form-type-select"><select class="msls_languages"><option value="https://developer.nvidia.com/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/" selected>English</option><option value="https://developer.nvidia.com/zh-cn/blog/improving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim/">中文</option></select></div></div> </span> </div> <h1 class="h--large txt-clr--blck mt-2 mb-0">Improving Translation Quality with Domain-Specific Fine-Tuning and NVIDIA NIM</h1> <div class="post-info"> <div class="post-published-date"> Feb 05, 2025 </div> <div class="post-authors"> By <a href="https://developer.nvidia.com/blog/author/chenghand/" title="Posts by Cheng-Han (Hank) Du" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">Cheng-Han (Hank) Du</a> and <a href="https://developer.nvidia.com/blog/author/ambleiweiss/" title="Posts by Amit Bleiweiss" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">Amit Bleiweiss</a> </div> <div class="card--post-attributes-secondary card--post-attributes-header"> <div class="post--rate secondary--attribute"> <div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button" aria-label="Like Button" data-ulike-id="95756" data-ulike-nonce="e0111ab8db" data-ulike-type="post" data-ulike-template="wpulike-heart" data-ulike-display-likers="" data-ulike-likers-style="popover" class="wp_ulike_btn wp_ulike_put_text wp_post_btn_95756"><span><i class="far fa-thumbs-up"></i></span> </button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+11"></span> </div></div> <span class="js-like-click like-click"> Like </span> </div> <div class="post--comments-count secondary--attribute"> <a href="#entry-content-comments"> <i class="fad fa-comment-alt-lines"></i> Discuss (1) </a> </div> </div> </div> <img width="1999" height="1125" src="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation.png 1999w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-195x110.png 195w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/ai-models-representation-1024x576.png 1024w" sizes="(max-width: 1999px) 100vw, 1999px" /> </div> </div> </div> </div> <div class="col-lg-3 col-md-3 mt-0 mb-0"></div> <div class="main-content col-lg-9 col-md-9 mt-0"> <div class="entry-meta-social"> <ul class="entry-meta-social-links-list"> <li><a data-wpel-link="external" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-linkedin" target="_blank" rel="follow external noopener">L</a></li> <li><a data-wpel-link="external" href="https://twitter.com/intent/tweet?text=Improving+Translation+Quality+with+Domain-Specific+Fine-Tuning+and+NVIDIA+NIM+%7C+NVIDIA+Technical+Blog+https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-twitter" target="_blank" rel="follow external noopener">T</a></li> <li><a data-wpel-link="external" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-facebook" target="_blank" rel="follow external noopener">F</a></li> <li><a data-wpel-link="external" href="https://www.reddit.com/submit?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F&amp;title=Improving+Translation+Quality+with+Domain-Specific+Fine-Tuning+and+NVIDIA+NIM+%7C+NVIDIA+Technical+Blog" class="for-reddit" target="_blank" rel="follow external noopener">R</a></li> <li><a href="mailto:?subject=I'd like to share a link with you&body=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-mail">E</a></li> </ul> </div> <div class="entry-content"> <p>Translation plays an essential role in enabling companies to expand across borders, with requirements varying significantly in terms of tone, accuracy, and technical terminology handling. The emergence of <a href="https://blogs.nvidia.com/blog/what-is-sovereign-ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">sovereign AI</a> has highlighted critical challenges in <a href="https://www.nvidia.com/en-us/glossary/large-language-models/" data-wpel-link="internal" target="_blank" rel="follow noopener">large language models (LLMs)</a>, particularly their struggle to capture nuanced cultural and linguistic contexts beyond English-dominant frameworks. As global communication becomes increasingly complex, organizations must carefully evaluate translation solutions that balance technological efficiency with cultural sensitivity and linguistic precision.</p> <p>In this post, we explore how LLMs can address the following two distinct English to Traditional Chinese translation use cases:</p> <ul class="wp-block-list"> <li><strong>Marketing content for websites</strong>: Translating technical text with precision while maintaining a natural promotional tone.</li> <li><strong>Online training courses:</strong> Translating slide text and markdown content used in platforms like Jupyter Notebooks, ensuring accurate technical translation and proper markdown formatting such as headings, sections, and hyperlinks.</li> </ul> <p>These use cases require a specialized approach beyond general translation. While <a href="https://developer.nvidia.com/blog/an-introduction-to-large-language-models-prompt-engineering-and-p-tuning/" data-wpel-link="internal" target="_blank" rel="follow noopener">prompt engineering </a>with instruction-tuned LLMs can handle certain contexts, more refined tasks like these often do not meet expectations. This is where fine-tuning <a href="https://arxiv.org/pdf/2106.09685" data-wpel-link="exclude">Low-Rank Adaptation (LoRA)</a> adapters separately on collected datasets specific to each translation context becomes essential.</p> <h2 id="implementing_lora_adapters_for_domain-specific_translation&nbsp;" class="wp-block-heading">Implementing LoRA adapters for domain-specific translation&nbsp;<a href="#implementing_lora_adapters_for_domain-specific_translation&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>For this project, we are using <a href="https://build.nvidia.com/meta/llama-3_1-8b-instruct" data-wpel-link="internal" target="_blank" rel="follow noopener">Llama 3.1 8B Instruct</a> as the pretrained model and implementing two models fine-tuned with LoRA adapters using <a href="https://docs.nvidia.com/nemo-framework/index.html" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA NeMo Framework</a>. These adapters were trained on domain-specific datasets—one for marketing website content and one for online training courses. For easy deployment of LLMs with <a href="https://developer.nvidia.com/blog/seamlessly-deploying-a-swarm-of-lora-adapters-with-nvidia-nim/" data-wpel-link="internal" target="_blank" rel="follow noopener">simultaneous use of multiple LoRA adapters</a> on the same pretrained model, we are using <a href="https://build.nvidia.com/search?q=LLM" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA NIM</a>.&nbsp;</p><div class='code-block code-block-2' style='margin: 40px auto; text-align: center; display: block; clear: both;'> <div style="background: #efefef 0% 0% no-repeat padding-box;margin-top: -8px;margin-bottom: -8px;border-top:1px solid #ccc;border-bottom:1px solid #ccc;"><div style="max-width:1360px;margin:auto;"><div id="metaslider-id-96052" style="width: 100%; margin: 0 auto;" class="ml-slider-3-60-1 metaslider metaslider-flex metaslider-96052 ml-slider ms-theme-default nav-hidden" role="region" aria-roledescription="Slideshow" aria-label="New Slideshow"> <div id="metaslider_container_96052"> <div id="metaslider_96052" class="flexslider"> <ul aria-live="polite" class="slides"> <li style="display: block; width: 100%;" class="slide-96054 ms-image" aria-roledescription="slide" aria-label="slide-96054"><a href="https://nvda.ws/3WDuyIk" target="_blank" data-wpel-link="external" rel="follow external noopener"><img width="1360" height="180" src="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1.jpg" class="slider-96052 slide-96054" alt="NVIDIA GTC 2025" rel="" title="NVIDIA GTC 2025" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1.jpg 1360w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-300x40.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-625x83.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-179x24.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-768x102.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-645x85.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-500x66.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-160x21.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-362x48.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-831x110.jpg 831w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/gtc25-banner-reg-now-1360x180-inpost-1-1024x136.jpg 1024w" sizes="(max-width: 1360px) 100vw, 1360px" /></a></li> </ul> </div> </div> </div></div></div></div> <p>Refer to the <a href="https://github.com/brevdev/notebooks/blob/main/llama31_law.ipynb" data-wpel-link="external" target="_blank" rel="follow external noopener">Jupyter Notebook</a> to guide you through executing LoRA fine-tuning with NeMo.</p> <h2 id="optimizing_llm_deployment_with_lora_and_nvidia_nim" class="wp-block-heading">Optimizing LLM deployment with LoRA and NVIDIA NIM<a href="#optimizing_llm_deployment_with_lora_and_nvidia_nim" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>NVIDIA NIM introduces a new level of performance, reliability, agility, and control for deploying professional LLM services. With prebuilt containers and optimized model engines tailored for different GPU types, you can easily deploy LLMs while boosting service performance. In addition to popular pretrained models including the Meta <a href="https://build.nvidia.com/search?q=llama-3" data-wpel-link="internal" target="_blank" rel="follow noopener">Llama 3</a> family and Mistral AI <a href="https://build.nvidia.com/nim?q=mistral-nemo+OR+mistral-nemo" data-wpel-link="internal" target="_blank" rel="follow noopener">Mistral</a> and <a href="https://build.nvidia.com/nim?q=Mixtral" data-wpel-link="internal" target="_blank" rel="follow noopener">Mixtral</a> models, you can integrate and fine-tune your own models with NIM, further enhancing its capabilities.</p> <p>LoRA is a powerful customization technique that enables efficient fine-tuning by adjusting only a subset of the model’s parameters. This significantly reduces required computational resources. LoRA has become popular due to its effectiveness and efficiency. Unlike full-parameter fine-tuning, LoRA adapter weights are smaller and can be stored separately from the pretrained model, providing greater flexibility in deployment.&nbsp;</p> <p><a href="https://github.com/NVIDIA/TensorRT-LLM" data-wpel-link="external" target="_blank" rel="follow external noopener">NVIDIA TensorRT-LLM</a> has established a mechanism that can simultaneously serve <a href="https://developer.nvidia.com/blog/tune-and-deploy-lora-llms-with-nvidia-tensorrt-llm/" data-wpel-link="internal" target="_blank" rel="follow noopener">multiple LoRA adapters</a> on the same pretrained model. This <a href="https://docs.nvidia.com/nim/large-language-models/latest/peft.html" data-wpel-link="internal" target="_blank" rel="follow noopener">multi-adapter mechanism is also supported by NIM</a>.&nbsp;</p> <p>The following sections demonstrate the advantages of these features and application in multipurpose translation tasks.</p> <h2 id="step-by-step_lora_fine-tuning_deployment_with_nvidia_llm_nim" class="wp-block-heading">Step-by-step LoRA fine-tuning deployment with NVIDIA LLM NIM<a href="#step-by-step_lora_fine-tuning_deployment_with_nvidia_llm_nim" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>This section describes the three steps involved in LoRA fine-tuning deployment using NVIDIA LLM NIM.</p> <h3 id="step_1_set_up_the_nim_instance_and_lora_models" class="wp-block-heading">Step 1: Set up the NIM instance and LoRA models<a href="#step_1_set_up_the_nim_instance_and_lora_models" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>First, launch a computational instance equipped with two NVIDIA L40S GPUs as recommended in the <a href="https://docs.nvidia.com/nim/large-language-models/latest/support-matrix.html#llama-3-1-8b-instruct" data-wpel-link="internal" target="_blank" rel="follow noopener">NIM support matrix</a>.&nbsp;</p> <p>Next, upload the two fine-tuned NeMo files to this environment. Detailed examples of LoRA fine-tuning using NeMo Framework are available in the <a href="https://docs.nvidia.com/nemo-framework/user-guide/24.07/playbooks/nemoframeworkpeft.html" data-wpel-link="internal" target="_blank" rel="follow noopener">official documentation</a> and a <a href="https://github.com/brevdev/notebooks/blob/main/llama31_law.ipynb" data-wpel-link="external" target="_blank" rel="follow external noopener">Jupyter Notebook</a>.&nbsp;</p> <p>To organize the environment, use the following command to create directories for storing the LoRA adapters:</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate" title=""> $ mkdir -p loras/llama-3.1-8b-translate-course $ mkdir -p loras/llama-3.1-8b-translate-web $ export LOCAL_PEFT_DIRECTORY=$(pwd)/loras $ chmod -R 777 $(pwd)/loras $ tree loras loras ├── llama-3.1-8b-translate-course │ └── course.nemo └── llama-3.1-8b-translate-web └── web.nemo 2 directories, 2 files </pre></div> <h3 id="step_2_deploy_nim_and_lora_models&nbsp;" class="wp-block-heading">Step 2: Deploy NIM and LoRA models&nbsp;<a href="#step_2_deploy_nim_and_lora_models&nbsp;" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>Now, you can proceed to deploy the NIM container. Replace &lt;NGC_API_KEY&gt; with your actual NGC API token. <a href="https://docs.nvidia.com/nim/large-language-models/latest/getting-started.html#generate-an-api-key" data-wpel-link="internal" target="_blank" rel="follow noopener">Generate an API key</a> if needed. Then run the following commands:</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate" title=""> $ export NGC_API_KEY=&lt;NGC_API_KEY&gt; $ export LOCAL_PEFT_DIRECTORY=$(pwd)/loras $ export NIM_PEFT_SOURCE=/home/nvs/loras $ export CONTAINER_NAME=nim-llama-3.1-8b-instruct $ export NIM_CACHE_PATH=$(pwd)/nim-cache $ mkdir -p &quot;$NIM_CACHE_PATH&quot; $ chmod -R 777 $NIM_CACHE_PATH $ echo &quot;$NGC_API_KEY&quot; | docker login nvcr.io --username &#039;$oauthtoken&#039; --password-stdin $ docker run -it --rm --name=$CONTAINER_NAME \ --runtime=nvidia \ --gpus all \ --shm-size=16GB \ -e NGC_API_KEY=$NGC_API_KEY \ -e NIM_PEFT_SOURCE \ -v $NIM_CACHE_PATH:/opt/nim/.cache \ -v $LOCAL_PEFT_DIRECTORY:$NIM_PEFT_SOURCE \ -p 8000:8000 \ nvcr.io/nim/meta/llama-3.1-8b-instruct:1.1.2 </pre></div> <p>After executing these steps, NIM will load the model. Once complete, you can check the health status and retrieve the model names for both the pretrained model and LoRA models using the following commands:</p> <div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate" title=""> # NIM health status $ curl http://&lt;INSTANCE_URL&gt;:8000/v1/health/ready # Get model names of the base model and LoRA models $ curl http://&lt;INSTANCE_URL&gt;:8000/v1/models | jq { &quot;data&quot; : &#x5B; { &quot;created&quot; : 1725516389, &quot;id&quot; : &quot;meta/llama-3.1-8b-instruct&quot;, &quot;max_model_len&quot; : 131072, &quot;object&quot; : &quot;model&quot;, &quot;owned_by&quot; : &quot;system&quot;, &quot;parent&quot; : null, &quot;permission&quot; : &#x5B; { &quot;allow_create_engine&quot; : false, &quot;allow_fine_tuning&quot; : false, &quot;allow_logprobs&quot; : true, &quot;allow_sampling&quot; : true, &quot;allow_search_indices&quot; : false, &quot;allow_view&quot; : true, &quot;created&quot; : 1725516389, &quot;group&quot; : null, &quot;id&quot; : &quot;modelperm-2274791587e4456b9ce921621377becb&quot;, &quot;is_blocking&quot; : false, &quot;object&quot; : &quot;model_permission&quot;, &quot;organization&quot; : &quot;*&quot; } ], &quot;root&quot; : &quot;meta/llama-3.1-8b-instruct&quot; }, { &quot;created&quot; : 1725516389, &quot;id&quot; : &quot;llama-3.1-8b-translate-course&quot;, &quot;max_model_len&quot; : null, &quot;object&quot; : &quot;model&quot;, &quot;owned_by&quot; : &quot;system&quot;, &quot;parent&quot; : null, &quot;permission&quot; : &#x5B; { &quot;allow_create_engine&quot; : false, &quot;allow_fine_tuning&quot; : false, &quot;allow_logprobs&quot; : true, &quot;allow_sampling&quot; : true, &quot;allow_search_indices&quot; : false, &quot;allow_view&quot; : true, &quot;created&quot; : 1725516389, &quot;group&quot; : null, &quot;id&quot; : &quot;modelperm-cb8be2bce8db442d8347f259966e2c02&quot;, &quot;is_blocking&quot; : false, &quot;object&quot; : &quot;model_permission&quot;, &quot;organization&quot; : &quot;*&quot; } ], &quot;root&quot; : &quot;meta/llama-3.1-8b-instruct&quot; }, { &quot;created&quot; : 1725516389, &quot;id&quot; : &quot;llama-3.1-8b-translate-web&quot;, &quot;max_model_len&quot; : null, &quot;object&quot; : &quot;model&quot;, &quot;owned_by&quot; : &quot;system&quot;, &quot;parent&quot; : null, &quot;permission&quot; : &#x5B; { &quot;allow_create_engine&quot; : false, &quot;allow_fine_tuning&quot; : false, &quot;allow_logprobs&quot; : true, &quot;allow_sampling&quot; : true, &quot;allow_search_indices&quot; : false, &quot;allow_view&quot; : true, &quot;created&quot; : 1725516389, &quot;group&quot; : null, &quot;id&quot; : &quot;modelperm-8e404c4d9f504e5fae92bf6caf04e93c&quot;, &quot;is_blocking&quot; : false, &quot;object&quot; : &quot;model_permission&quot;, &quot;organization&quot; : &quot;*&quot; } ], &quot;root&quot; : &quot;meta/llama-3.1-8b-instruct&quot; } ], &quot;object&quot; : &quot;list&quot; } </pre></div> <p>The output will display details of the models available for deployment.</p> <h3 id="step_3_evaluate_translation_quality_of_fine-tuned_lora_models" class="wp-block-heading">Step 3: Evaluate translation quality of fine-tuned LoRA models<a href="#step_3_evaluate_translation_quality_of_fine-tuned_lora_models" class="heading-anchor-link"><i class="fas fa-link"></i></a></h3> <p>With NIM running, you can use it to perform English to Traditional Chinese translation, specifying the appropriate LoRA model name in the request body.&nbsp;</p> <h2 id="fine-tuning_results_and_performance_metrics" class="wp-block-heading">Fine-tuning results and performance metrics<a href="#fine-tuning_results_and_performance_metrics" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>We evaluated the translation quality of two test datasets using the pretrained model and the two fine-tuned LoRA models. The BLEU and COMET scores from these evaluations are shown in Figures 1 and 2.</p> <figure class="wp-block-image aligncenter size-full"><img decoding="async" width="1200" height="742" src="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned.png" alt="A graph showing BLEU scores for the Course and Web dataset, comparing base model with LoRA. " class="wp-image-95776" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned.png 1200w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-300x186.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-625x386.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-179x111.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-768x475.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-645x399.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-485x300.png 485w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-146x90.png 146w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-362x224.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-178x110.png 178w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/bleu-scores-test-datasets-base-model-lora-fine-tuned-1024x633.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption"><em><em>Figure 1. BLEU scores (higher is better) of different test datasets using the base model and two LoRA fine-tuned models</em></em></figcaption></figure> <figure class="wp-block-image aligncenter size-full"><img decoding="async" width="1200" height="742" src="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora.png" alt="A graph showing COMET scores for the Course and Web dataset, comparing base model with LoRA. " class="wp-image-95777" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora.png 1200w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-300x186.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-625x386.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-179x111.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-768x475.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-645x399.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-485x300.png 485w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-146x90.png 146w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-362x224.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-178x110.png 178w, https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/comet-scores-test-datasets-base-model-lora-1024x633.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption"><em><em>Figure 2. COMET scores (higher is better) of different test datasets using the base model and two LoRA models</em></em></figcaption></figure> <p>These results demonstrate that fine-tuning specific datasets using the LoRA mechanism significantly enhances translation quality within their respective domains. To achieve the best performance, domain-specific datasets should leverage their corresponding fine-tuned LoRA models.</p> <p>The LoRA model fine-tuned on the web dataset demonstrated a more noticeable improvement in evaluation scores for web-related translations. Table 1 provides a comparison of translation examples.</p> <figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td><strong>Source Text</strong></td><td><strong>Pretrained Model Output</strong></td><td><strong>LoRA Fine-Tuned Model (on Web Dataset) Output&nbsp;</strong></td></tr><tr><td>NVIDIA extends lead on MLPerf inference benchmark for computer vision, conversational AI, and recommender workloads.</td><td>NVIDIA 在計算視覺、對話式人工智慧和建議系統工作負載方面,領先於 MLPerf 推理基準。</td><td>NVIDIA 在電腦視覺、對話式人工智慧和推薦系統工作負載的 MLPerf 推論基準中擴大領先地位。</td></tr><tr><td>Built on NVIDIA Omniverse, NVIDIA RTX Remix enables modders to easily capture game assets, automatically enhance materials with generative AI tools, and quickly create stunning RTX remasters with full ray tracing and DLSS 3.</td><td>在 NVIDIA Omniverse 上建立,RTX Remix 允許模組開發者輕鬆捕捉遊戲資源、自動使用生成 AI 工具增強材質,並快速創建具有全實時光線追蹤和 DLSS 3 的 RTX 重製版。</td><td>RTX Remix 是以 NVIDIA Omniverse 為基礎,讓模組玩家能輕鬆擷取遊戲素材、使用生成式人工智慧工具自動增強材質,並快速創造出充分採用全光線追蹤技術和 DLSS 3 的令人驚豔的 RTX 重製版。</td></tr><tr><td colspan="3">Note that the prompt template is as follows:<br><em>&lt;|begin_of_text|&gt;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;\n\nYou are an AI assistant who translates an English context to traditional Chinese. The context will be given after a prompt &#8220;Translate the following input text to traditional Chinese&#8221;. Never respond text other than translation results.&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;\n\nTranslate the following input text to traditional Chinese.\n\n</em><strong><em>{English Text}</em></strong><em>.\n&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;\n\n</em></td></tr></tbody></table><figcaption class="wp-element-caption"><em><em>Table 1. Sentence translation comparison for the web dataset</em></em></figcaption></figure> <h2 id="explore_further_with_nvidia_nim_and_lora_fine-tuning" class="wp-block-heading">Explore further with NVIDIA NIM and LoRA fine-tuning<a href="#explore_further_with_nvidia_nim_and_lora_fine-tuning" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>Fine-tuning <a href="https://github.com/brevdev/notebooks/blob/main/llama31_law.ipynb" data-wpel-link="external" target="_blank" rel="follow external noopener">LoRA adapters</a> separately on marketing content from websites and online training course datasets significantly improved translation quality. This demonstrates that domain-specific datasets achieve better results when paired with their own LoRA models, which efficiently adjust the weights of pretrained models to enhance performance. Deploying these fine-tuned models within a single NVIDIA NIM instance provides a GPU-efficient solution for serving multiple specialized tasks simultaneously.&nbsp;</p> <p>Ready to take it further? Explore how <a href="https://www.nvidia.com/en-us/ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA NIM</a> microservices can help you deploy and fine-tune LLMs for your specific tasks. With <a href="https://www.nvidia.com/en-us/ai-data-science/products/nemo/" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA NeMo</a>, you can fine-tune popular models such as <a href="https://build.nvidia.com/nim?q=Llama-3" data-wpel-link="internal" target="_blank" rel="follow noopener">Llama 3</a>, <a href="https://build.nvidia.com/nim?q=mistral-nemo+OR+mistral-nemo" data-wpel-link="internal" target="_blank" rel="follow noopener">Mistral</a>, and <a href="https://build.nvidia.com/search?q=phi" data-wpel-link="internal" target="_blank" rel="follow noopener">Phi</a> using <a href="https://docs.nvidia.com/nim/large-language-models/latest/peft.html" data-wpel-link="internal" target="_blank" rel="follow noopener">LoRA adapters</a>, unlocking greater development efficiency and enhancing the performance of your applications.</p> <!-- CONTENT END 1 --> </div> <div class="block--prospero-assets"> <h2 class="h--smaller txt-clr--blck"> Related resources </h2> <ul><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=DLIW73640&ncid=em-even-124008-vt33-23spring#/'>Efficient Large Language Model Customization</a></li><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=S71886&ncid=em-even-124008-vt33-23spring#/'>Multi-Domain Large Language Model Adaptation Using Synthetic Data Generation</a></li><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=S72330&ncid=em-even-124008-vt33-23spring#/'>Accelerate Inference on NVIDIA GPUs</a></li><li>NGC Containers: <a class='wpel-ignore' target='_blank' href='https://catalog.ngc.nvidia.com/orgs/nim/teams/microsoft/containers/phi-3-mini-4k-instruct?ncid=em-nurt-245273-vt33'>Phi-3-Mini-4K-Instruct</a></li><li>NGC Containers: <a class='wpel-ignore' target='_blank' href='https://catalog.ngc.nvidia.com/orgs/nim/teams/phind/containers/phind-codellama-34b-v2-instruct?ncid=em-nurt-245273-vt33'>Phind-CodeLlama-34B-v2-Instruct</a></li><li>NGC Containers: <a class='wpel-ignore' target='_blank' href='https://catalog.ngc.nvidia.com/orgs/nim/teams/nvidia/containers/llama-3.1-nemotron-70b-instruct?ncid=em-nurt-245273-vt33'>Llama-3.1-Nemotron-70B-Instruct</a></li></ul> </div> <div class="card--post-attributes-secondary"> <div class="post--comments-count secondary--attribute"> <a href="#entry-content-comments"> <i class="fad fa-comment-alt-lines"></i> Discuss (1) </a> </div> <div class="post--rate secondary--attribute"> <div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button" aria-label="Like Button" data-ulike-id="95756" data-ulike-nonce="e0111ab8db" data-ulike-type="post" data-ulike-template="wpulike-heart" data-ulike-display-likers="" data-ulike-likers-style="popover" class="wp_ulike_btn wp_ulike_put_text wp_post_btn_95756"><span><i class="far fa-thumbs-up"></i></span> </button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+11"></span> </div></div> <span class="js-like-click like-click"> Like </span> </div> </div> <div class="card--post-attributes-secondary tags"> <div class="caption"> <h2 class="h--smaller txt-clr--blck">Tags</h2> </div> <div class="content-s post-tags--list mt-0"> <a href="https://developer.nvidia.com/blog/category/conversational-ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">Conversational AI</a> | <a href="https://developer.nvidia.com/blog/category/generative-ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">Generative AI</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?industry=General" data-wpel-link="internal" target="_blank" rel="follow noopener">General</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?products=NeMo" data-wpel-link="internal" target="_blank" rel="follow noopener">NeMo</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?products=NIM" data-wpel-link="internal" target="_blank" rel="follow noopener">NIM</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?products=TensorRT-LLM" data-wpel-link="internal" target="_blank" rel="follow noopener">TensorRT-LLM</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?learning_levels=Intermediate+Technical" data-wpel-link="internal" target="_blank" rel="follow noopener">Intermediate Technical</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?content_types=Deep+dive" data-wpel-link="internal" target="_blank" rel="follow noopener">Deep dive</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?content_types=Tutorial" data-wpel-link="internal" target="_blank" rel="follow noopener">Tutorial</a> | <a href="https://developer.nvidia.com/blog/tag/featured/" data-wpel-link="internal" target="_blank" rel="follow noopener">featured</a> | <a href="https://developer.nvidia.com/blog/tag/fine-tuning/" data-wpel-link="internal" target="_blank" rel="follow noopener">Fine-Tuning</a> | <a href="https://developer.nvidia.com/blog/tag/large-language-models/" data-wpel-link="internal" target="_blank" rel="follow noopener">LLMs</a> | <a href="https://developer.nvidia.com/blog/tag/translation/" data-wpel-link="internal" target="_blank" rel="follow noopener">Translation</a> </div> </div> <div class="post-authors-list"> <div class="entry-content-author"> <div class="caption"> <h2 class="h--smaller txt-clr--blck"> About the Authors </h2> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Avatar photo' src='https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/cropped-cheng-han-du-131x131.jpg' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2025/02/cropped-cheng-han-du-262x262.jpg 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About Cheng-Han (Hank) Du </b> <br/> Cheng-Han (Hank) Du is a senior solution engineer at NVIDIA. He focuses on large language models and inference service deployment. He received his bachelor’s degree in Computer Science from National Taiwan University and master’s degree and PhD from the Institute of Photonics and Optoelectronics, National Taiwan University, during which he studied the improvement of numerical simulation methods for wave optics. His work experience includes evaluating the performance of multi-GPU accelerated numerical simulation, consulting software computing technology, and integrating platform software. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/chenghand/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by Cheng-Han (Hank) Du<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Amit Bleiweiss' src='https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/cropped-amit-bleiweiss-131x131.png' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2024/01/cropped-amit-bleiweiss.png 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About Amit Bleiweiss </b> <br/> Amit Bleiweiss is a senior data scientist at NVIDIA, where he focuses on large language models and generative AI. He has 25 years of experience in applied machine learning and deep learning, with over 50 patents and publications in the domain. Amit received his MSc from Hebrew University of Jerusalem, where he specialized in machine learning. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/ambleiweiss/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by Amit Bleiweiss<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> </div> </div> <div class="entry-content-comments" id="entry-content-comments"> <div class="container" id="pf-disqus-thread"> <div class="row" id="respond"> <div class="col-md-12 related-posts-comments mb-0"><h2 class="h--smaller txt-clr--blck mb-0">Comments</h2></div> </div> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div class="wpdc-comments-loading" id="wpdc-comments" data-post-id="95756"></div> </div> </div> </div> </div> <div id="main-content-end"></div> </div> <div id="sidebar" class="sidebar col-lg-3 col-md-3 mt-0"> <div class="sticky-top-pre"></div> <div class="sidebar-item not-sticky-top"> <div id="sidebar-content" class="sidebar__inner"> <script> window.is_post_page = true; window.nv_homepage_url = 'https://developer.nvidia.com/blog'; </script> <div class="block--related-posts prspr-related" data-source="nv"> <h2 class="h--smaller txt-clr--blck">Related posts</h2> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="84933" data-post-title="Deploy Multilingual LLMs with NVIDIA NIM"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1531" height="861" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="An illustration of a NIM use case." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage.png 1531w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-625x351.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/07/NIM-multilanguage-1024x576.png 1024w" sizes="auto, (max-width: 1531px) 100vw, 1531px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Deploy Multilingual LLMs with NVIDIA NIM </h3> </div> </div> <a href="https://developer.nvidia.com/blog/deploy-multilingual-llms-with-nvidia-nim/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Deploy Multilingual LLMs with NVIDIA NIM</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="82195" data-post-title="Customizing Neural Machine Translation Models with NVIDIA NeMo, Part 1"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="983" height="553" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Decorative image of a globe surrounded by people speaking and texting in different languages, with the text Part 1." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1.png 983w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/05/neural-machine-translation-featured-part-1-1-196x110.png 196w" sizes="auto, (max-width: 983px) 100vw, 983px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Customizing Neural Machine Translation Models with NVIDIA NeMo, Part 1 </h3> </div> </div> <a href="https://developer.nvidia.com/blog/customizing-neural-machine-translation-models-with-nvidia-nemo-part-1/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Customizing Neural Machine Translation Models with NVIDIA NeMo, Part 1</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="80481" data-post-title="Tune and Deploy LoRA LLMs with NVIDIA TensorRT-LLM"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic.png 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/woman-laptop-speech-bubbles-graphic-1024x576.png 1024w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Tune and Deploy LoRA LLMs with NVIDIA TensorRT-LLM </h3> </div> </div> <a href="https://developer.nvidia.com/blog/tune-and-deploy-lora-llms-with-nvidia-tensorrt-llm/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Tune and Deploy LoRA LLMs with NVIDIA TensorRT-LLM</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="80290" data-post-title="Fine-Tune and Align LLMs Easily with NVIDIA NeMo Customizer"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic.jpg 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/nvidia-nemo-customizer-microservice-graphic-1024x576.jpg 1024w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Fine-Tune and Align LLMs Easily with NVIDIA NeMo Customizer </h3> </div> </div> <a href="https://developer.nvidia.com/blog/fine-tune-and-align-llms-easily-with-nvidia-nemo-customizer/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Fine-Tune and Align LLMs Easily with NVIDIA NeMo Customizer</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="68897" data-post-title="Mastering LLM Techniques: Customization"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1999" height="1125" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Decorative image." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured.png 1999w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-195x110.png 195w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/08/llm-customization-technique-featured-1024x576.png 1024w" sizes="auto, (max-width: 1999px) 100vw, 1999px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Mastering LLM Techniques: Customization </h3> </div> </div> <a href="https://developer.nvidia.com/blog/selecting-large-language-model-customization-techniques/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Mastering LLM Techniques: Customization</span> </a> </div> </div> </div> <div class="block--related-posts hide" data-source="wp"> <h2 class="h--smaller txt-clr--blck">Related posts</h2> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="87308" data-post-title="New NIM Available: Mistral Large 2 Instruct LLM"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1024" height="576" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407.jpeg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407.jpeg 1024w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-300x169.jpeg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-625x352.jpeg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-179x101.jpeg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-768x432.jpeg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-645x363.jpeg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-960x540.jpeg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-500x281.jpeg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-160x90.jpeg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-362x204.jpeg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/Mistral-Large-2407-196x110.jpeg 196w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> New NIM Available: Mistral Large 2 Instruct LLM </h3> </div> </div> <a href="https://nvda.ws/4cE63Tr#new_tab" class="carousel-row-slide__link" data-wpel-link="external" target="_blank" rel="follow external noopener"> <span class="visually-hidden">New NIM Available: Mistral Large 2 Instruct LLM</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="84040" data-post-title="AI Brain Implant Restores Bilingual Communication for Stroke Survivor"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="600" height="338" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/06/bilingual-ezgif.com-optimize.gif" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> AI Brain Implant Restores Bilingual Communication for Stroke Survivor </h3> </div> </div> <a href="https://developer.nvidia.com/blog/ai-brain-implant-restores-bilingual-communication-for-stroke-survivor/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">AI Brain Implant Restores Bilingual Communication for Stroke Survivor</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="79365" data-post-title="NVIDIA Speech and Translation AI Models Set Records for Speed and Accuracy"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic.png 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/03/speech-ai-composite-graphic-1024x576.png 1024w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> NVIDIA Speech and Translation AI Models Set Records for Speed and Accuracy </h3> </div> </div> <a href="https://developer.nvidia.com/blog/nvidia-speech-and-translation-ai-models-set-records-for-speed-and-accuracy/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">NVIDIA Speech and Translation AI Models Set Records for Speed and Accuracy</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="73464" data-post-title="Mastering LLM Techniques: Training "> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="2188" height="1231" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training.jpg 2188w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-2048x1152.jpg 2048w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/llm-mastering-large-language-model-training-1024x576.jpg 1024w" sizes="auto, (max-width: 2188px) 100vw, 2188px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Mastering LLM Techniques: Training  </h3> </div> </div> <a href="https://developer.nvidia.com/blog/mastering-llm-techniques-training/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Mastering LLM Techniques: Training </span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="73312" data-post-title="Elevate Enterprise Generative AI App Development with NVIDIA AI on Azure Machine Learning"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1920" height="1080" src="https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Elevate Enterprise Generative AI App Development with NVIDIA AI on Azure Machine Learning" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350.jpg 1920w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-625x352.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2023/11/blog-mlog-1920x1080-2778350-1024x576.jpg 1024w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Elevate Enterprise Generative AI App Development with NVIDIA AI on Azure Machine Learning </h3> </div> </div> <a href="https://developer.nvidia.com/blog/elevate-enterprise-generative-ai-app-development-with-nvidia-ai-on-azure-machine-learning/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Elevate Enterprise Generative AI App Development with NVIDIA AI on Azure Machine Learning</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> </section> <!--wp code prettify--> <script type="text/javascript"> function $(id) {return !id ? null : document.getElementById(id);} loadPrettifyCss = function () { if(!$('prettify_css')) { css = document.createElement('link'); css.id = 'prettify_css'; css.type = 'text/css'; css.rel = 'stylesheet'; css.href = 'https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/css/prettify.css'; var headNode = document.getElementsByTagName("head")[0]; headNode.appendChild(css); } else { $('prettify_css').href = 'https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/css/prettify.css'; } if(!$('prettify_custom')) { css = document.createElement('style'); css.id = 'prettify_custom'; css.type = 'text/css'; css.rel = 'stylesheet'; css.innerHTML = 'pre.prettyprint { max-height: 500px; white-space: pre; word-wrap: normal; overflow: auto; background-color: #f8f8f8;border-radius: 3px; } pre.prettyprint[title]:before { float: right; border: 1px solid #ccc; border-radius: 3px; background: #ddd; padding: 10px; content: attr(title); font: 13px "Trebuchet MS", "Helvetica Neue", Helvetica, Arial, sans-serif; }'; var headNode = document.getElementsByTagName("head")[0]; headNode.appendChild(css); } else { $('prettify_css').innerHTML = 'pre.prettyprint { max-height: 500px; white-space: pre; word-wrap: normal; overflow: auto; background-color: #f8f8f8;border-radius: 3px; } pre.prettyprint[title]:before { float: right; border: 1px solid #ccc; border-radius: 3px; background: #ddd; padding: 10px; content: attr(title); font: 13px "Trebuchet MS", "Helvetica Neue", Helvetica, Arial, sans-serif; }'; } } </script> <script type="text/javascript"> loadPrettifyCss(); </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/js/prettify.js"></script> <script type="text/javascript"> function wpCodePrettifyOnLoad(func){ var wpCodePrettifyOldOnLoad = window.onload; if (typeof window.onload != 'function') { window.onload = func } else { window.onload = function () { wpCodePrettifyOldOnLoad(); func() } } } wpCodePrettifyOnLoad(function(){prettyPrint();}); </script> <!--//wp code prettify--> <footer id="nv-footer"></footer> <script type="text/javascript"> (function() { const defaultLinks = JSON.parse("{\n \"columns\": [],\n \"links\": [\n {\n \"text\": \"Legal Information\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/legal-info\/\"\n },\n {\n \"text\": \"Terms of Use\",\n \"href\": \"https:\/\/developer.nvidia.com\/legal\/terms\"\n },\n {\n \"text\": \"Privacy Policy\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/privacy-policy\/\"\n },\n {\n \"text\": \"Cookie Policy\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/cookie-policy\/\"\n },\n {\n \"text\": \"Contact\",\n \"href\": \"https:\/\/developer.nvidia.com\/contact\"\n }\n ],\n \"news\": {\n \"title\": \"Sign up for NVIDIA News\",\n \"href\": \"https:\/\/developer.nvidia.com\/email-signup\"\n },\n \"social\": {\n \"title\": \"Follow NVIDIA Developer\",\n \"links\": [\n {\n \"text\": \"Facebook\",\n \"href\": \"https:\/\/facebook.com\/nvidiaai\",\n \"provider\": \"facebook\"\n },\n {\n \"text\": \"Instagram\",\n \"href\": \"https:\/\/instagram.com\/nvidiadeveloper\",\n \"provider\": \"instagram\"\n },\n {\n \"text\": \"LinkedIn\",\n \"href\": \"https:\/\/www.linkedin.com\/showcase\/nvidia-ai\",\n \"provider\": \"linkedin\"\n },\n {\n \"text\": \"Twitter\",\n \"href\": \"https:\/\/twitter.com\/nvidiadeveloper\",\n \"provider\": \"twitter\"\n },\n {\n \"text\": \"YouTube\",\n \"href\": \"https:\/\/www.youtube.com\/user\/NVIDIADeveloper\",\n \"provider\": \"youtube\"\n }\n ]\n }\n }\n ") const mountFooterComponent = (locale, response) => { new NVDeveloperFooter({ target: document.getElementById('nv-footer'), props: { locale: locale, menu: response } }) } const handleError = (error, locale, menu) => { console.debug(error) mountFooterComponent(locale, menu) } const initFooter = () => { let menuUrl = 'https://d29g4g2dyqv443.cloudfront.net/menu/en-US/footer.json' let locale = 'en-US'; if (!menuUrl) { handleError('Footer menu URL not defined.', locale, defaultLinks) return } fetch(menuUrl) .then((response) => response.json()) .then((response) => mountFooterComponent(locale, response)) .catch((error) => handleError(error, locale, defaultLinks)) } document.addEventListener('DOMContentLoaded', initFooter); })(); </script> <script type="text/javascript">_satellite.pageBottom();</script> <!-- OneTrust gpc signal detection script start --> <!-- OneTrust Cookies Consent Notice end for nvidia.com --> <script type="text/javascript" src="https://images.nvidia.com/aem-dam/Solutions/ot-js/ot-custom.js"></script> <!-- OneTrust gpc signal detection script end --> <div style="display:none"> <div class="grofile-hash-map-95805ee76ede1219452fa1ad92fd0448"> </div> <div class="grofile-hash-map-afe05c2dc99deefa7cac6d5da1c8e2d4"> </div> </div> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b" id="syntaxhighlighter-core-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushAS3.js?ver=3.0.9b" id="syntaxhighlighter-brush-as3-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushArduino.js?ver=3.0.9b" id="syntaxhighlighter-brush-arduino-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js?ver=3.0.9b" id="syntaxhighlighter-brush-bash-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushColdFusion.js?ver=3.0.9b" id="syntaxhighlighter-brush-coldfusion-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushClojure.js?ver=20090602" id="syntaxhighlighter-brush-clojure-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9b" id="syntaxhighlighter-brush-cpp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b" id="syntaxhighlighter-brush-csharp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.9b" id="syntaxhighlighter-brush-css-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDelphi.js?ver=3.0.9b" id="syntaxhighlighter-brush-delphi-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDiff.js?ver=3.0.9b" id="syntaxhighlighter-brush-diff-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushErlang.js?ver=3.0.9b" id="syntaxhighlighter-brush-erlang-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushFSharp.js?ver=20091003" id="syntaxhighlighter-brush-fsharp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGo.js?ver=3.0.9b" id="syntaxhighlighter-brush-go-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js?ver=3.0.9b" id="syntaxhighlighter-brush-groovy-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushHaskell.js?ver=3.0.9b" id="syntaxhighlighter-brush-haskell-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.9b" id="syntaxhighlighter-brush-java-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJavaFX.js?ver=3.0.9b" id="syntaxhighlighter-brush-javafx-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b" id="syntaxhighlighter-brush-jscript-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushLatex.js?ver=20090613" id="syntaxhighlighter-brush-latex-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushMatlabKey.js?ver=20091209" id="syntaxhighlighter-brush-matlabkey-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushObjC.js?ver=20091207" id="syntaxhighlighter-brush-objc-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPerl.js?ver=3.0.9b" id="syntaxhighlighter-brush-perl-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.9b" id="syntaxhighlighter-brush-php-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js?ver=3.0.9b" id="syntaxhighlighter-brush-plain-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPowerShell.js?ver=3.0.9b" id="syntaxhighlighter-brush-powershell-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPython.js?ver=3.0.9b" id="syntaxhighlighter-brush-python-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushR.js?ver=20100919" id="syntaxhighlighter-brush-r-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushRuby.js?ver=3.0.9b" id="syntaxhighlighter-brush-ruby-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js?ver=3.0.9b" id="syntaxhighlighter-brush-scala-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSql.js?ver=3.0.9b" id="syntaxhighlighter-brush-sql-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSwift.js?ver=3.0.9b" id="syntaxhighlighter-brush-swift-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushVb.js?ver=3.0.9b" id="syntaxhighlighter-brush-vb-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.9b" id="syntaxhighlighter-brush-xml-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushYaml.js?ver=3.0.9b" id="syntaxhighlighter-brush-yaml-js"></script> <script type='text/javascript'> (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.head.appendChild( corecss ); var themecssurl = "https://developer-blogs.nvidia.com/wp-content/plugins/nv-tweaks/css/shThemeNvidia.css?ver=3.0.9b"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } document.head.appendChild( themecss ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['gutter'] = false; SyntaxHighlighter.defaults['pad-line-numbers'] = false; SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); // Infinite scroll support if ( typeof( jQuery ) !== 'undefined' ) { jQuery( function( $ ) { $( document.body ).on( 'post-load', function() { SyntaxHighlighter.highlight(); } ); } ); } </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" id="load_comments_js-js-extra"> /* <![CDATA[ */ var wpdc = {"commentsURL":"https:\/\/developer.nvidia.com\/blog\/wp-json\/wp-discourse\/v1\/discourse-comments"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-discourse/lib/../js/load-comments.js?ver=1740006973" id="load_comments_js-js"></script> <script type="text/javascript" id="wp_ulike-js-extra"> /* <![CDATA[ */ var wp_ulike_params = {"ajax_url":"https:\/\/developer-blogs.nvidia.com\/wp-admin\/admin-ajax.php","notifications":"0"}; var wp_ulike_params = {"ajax_url":"https:\/\/developer.nvidia.com\/blog\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-ulike/assets/js/wp-ulike.min.js?ver=4.7.7" id="wp_ulike-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/nv-language-switcher/js/nv-language-switcher.js" id="nv-language-switcher-js"></script> <script type="text/javascript" src="https://secure.gravatar.com/js/gprofiles.js?ver=202508" id="grofiles-cards-js"></script> <script type="text/javascript" id="wpgroho-js-extra"> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/jetpack/modules/wpgroho.js?ver=14.0" id="wpgroho-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/page-links-to/dist/new-tab.js?ver=3.3.5" id="page-links-to-js"></script> <script type="text/javascript" id="sage/main.js-js-extra"> /* <![CDATA[ */ var morePostsAjax = {"network_id":"1","site_url":"https:\/\/developer.nvidia.com\/blog\/wp-admin\/"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/scripts/main_61b387dd.js" id="sage/main.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/nv-recommender/js/dist/index.js" id="sage/recommender.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.21" id="lodash-js"></script> <script type="text/javascript" id="lodash-js-after"> /* <![CDATA[ */ window.lodash = _.noConflict(); /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/sliders/responsiveslides/responsiveslides.min.js" id="sage/flexslider.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/libs/nv-developer-menu/nv-developer-menu.js?ver=1.0.0" id="nv-developer-menu.js-js"></script> <script type="text/javascript" id="stbClient-js-extra"> /* <![CDATA[ */ var stbUserOptions = {"restData":{"root":"https:\/\/developer-blogs.nvidia.com\/wp-json\/","nonce":"d4757faf5d"}}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-special-textboxes/js/client.js?ver=6.2.1" id="stbClient-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/sliders/flexslider/jquery.flexslider.min.js?ver=3.60.1" id="metaslider-flex-slider-js"></script> <script type="text/javascript" id="metaslider-flex-slider-js-after"> /* <![CDATA[ */ var metaslider_96052 = function($) { $('#metaslider_96052').flexslider({ slideshowSpeed:3000, animation:"fade", controlNav:false, directionNav:false, pauseOnHover:true, direction:"horizontal", reverse:false, keyboard:false, animationSpeed:600, prevText:"&lt;", nextText:"&gt;", smoothHeight:false, fadeFirstSlide:false, slideshow:true }); $(document).trigger('metaslider/initialized', '#metaslider_96052'); }; var timer_metaslider_96052 = function() { var slider = !window.jQuery ? window.setTimeout(timer_metaslider_96052, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_96052, 1) : metaslider_96052(window.jQuery); }; timer_metaslider_96052(); var metaslider_56284 = function($) { $('#metaslider_56284').flexslider({ slideshowSpeed:3000, animation:"fade", controlNav:false, directionNav:false, pauseOnHover:true, direction:"horizontal", reverse:false, keyboard:false, animationSpeed:600, prevText:"&lt;", nextText:"&gt;", smoothHeight:false, fadeFirstSlide:false, slideshow:true }); $(document).trigger('metaslider/initialized', '#metaslider_56284'); }; var timer_metaslider_56284 = function() { var slider = !window.jQuery ? window.setTimeout(timer_metaslider_56284, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_56284, 1) : metaslider_56284(window.jQuery); }; timer_metaslider_56284(); /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/metaslider/script.min.js?ver=3.60.1" id="metaslider-script-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/themes/highway/v1.0.0/script.js?ver=1.0.0" id="metaslider_highway_theme_script-js"></script> <script> function b2a(a){var b,c=0,l=0,f="",g=[];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g[l++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c< a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)]=b;for(c=0;d>c;c++)for(b=f[a.charAt(c)],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))}; b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}; /* <![CDATA[ */ ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"}; /* ]]> */ var ai_cookie_js=!0,ai_block_class_def="code-block"; /* JavaScript Cookie v2.2.0 https://github.com/js-cookie/js-cookie Copyright 2006, 2015 Klaus Hartl & Fagner Brack Released under the MIT license */ "undefined"!==typeof ai_cookie_js&&(function(a){if("function"===typeof define&&define.amd){define(a);var c=!0}"object"===typeof exports&&(module.exports=a(),c=!0);if(!c){var d=window.Cookies,b=window.Cookies=a();b.noConflict=function(){window.Cookies=d;return b}}}(function(){function a(){for(var d=0,b={};d<arguments.length;d++){var f=arguments[d],e;for(e in f)b[e]=f[e]}return b}function c(d){function b(){}function f(h,k,g){if("undefined"!==typeof document){g=a({path:"/",sameSite:"Lax"},b.defaults, g);"number"===typeof g.expires&&(g.expires=new Date(1*new Date+864E5*g.expires));g.expires=g.expires?g.expires.toUTCString():"";try{var l=JSON.stringify(k);/^[\{\[]/.test(l)&&(k=l)}catch(p){}k=d.write?d.write(k,h):encodeURIComponent(String(k)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent);h=encodeURIComponent(String(h)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);l="";for(var n in g)g[n]&&(l+="; "+n,!0!==g[n]&&(l+="="+ g[n].split(";")[0]));return document.cookie=h+"="+k+l}}function e(h,k){if("undefined"!==typeof document){for(var g={},l=document.cookie?document.cookie.split("; "):[],n=0;n<l.length;n++){var p=l[n].split("="),m=p.slice(1).join("=");k||'"'!==m.charAt(0)||(m=m.slice(1,-1));try{var q=p[0].replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);m=(d.read||d)(m,q)||m.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);if(k)try{m=JSON.parse(m)}catch(r){}g[q]=m;if(h===q)break}catch(r){}}return h?g[h]:g}}b.set=f;b.get= function(h){return e(h,!1)};b.getJSON=function(h){return e(h,!0)};b.remove=function(h,k){f(h,"",a(k,{expires:-1}))};b.defaults={};b.withConverter=c;return b}return c(function(){})}),AiCookies=Cookies.noConflict(),ai_check_block=function(a){if(null==a)return!0;var c=AiCookies.getJSON("aiBLOCKS");ai_debug_cookie_status="";null==c&&(c={});"undefined"!==typeof ai_delay_showing_pageviews&&(c.hasOwnProperty(a)||(c[a]={}),c[a].hasOwnProperty("d")||(c[a].d=ai_delay_showing_pageviews));if(c.hasOwnProperty(a)){for(var d in c[a]){if("x"== d){var b="",f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);var e=new Date;e=c[a][d]-Math.round(e.getTime()/1E3);if(0<e&&f==b)return ai_debug_cookie_status=a="closed for "+e+" s = "+Math.round(1E4*e/3600/24)/1E4+" days",!1;ai_set_cookie(a,"x","");c[a].hasOwnProperty("i")||c[a].hasOwnProperty("c")||ai_set_cookie(a,"h","")}else if("d"==d){if(0!=c[a][d])return ai_debug_cookie_status=a="delayed for "+c[a][d]+ " pageviews",!1}else if("i"==d){b="";f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);if(0==c[a][d]&&f==b)return ai_debug_cookie_status=a="max impressions reached",!1;if(0>c[a][d]&&f==b){e=new Date;e=-c[a][d]-Math.round(e.getTime()/1E3);if(0<e)return ai_debug_cookie_status=a="max imp. reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;ai_set_cookie(a,"i","");c[a].hasOwnProperty("c")||c[a].hasOwnProperty("x")|| ai_set_cookie(a,"h","")}}if("ipt"==d&&0==c[a][d]&&(e=new Date,b=Math.round(e.getTime()/1E3),e=c[a].it-b,0<e))return ai_debug_cookie_status=a="max imp. per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;if("c"==d){b="";f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);if(0==c[a][d]&&f==b)return ai_debug_cookie_status=a="max clicks reached",!1;if(0>c[a][d]&&f==b){e=new Date;e=-c[a][d]- Math.round(e.getTime()/1E3);if(0<e)return ai_debug_cookie_status=a="max clicks reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;ai_set_cookie(a,"c","");c[a].hasOwnProperty("i")||c[a].hasOwnProperty("x")||ai_set_cookie(a,"h","")}}if("cpt"==d&&0==c[a][d]&&(e=new Date,b=Math.round(e.getTime()/1E3),e=c[a].ct-b,0<e))return ai_debug_cookie_status=a="max clicks per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1}if(c.hasOwnProperty("G")&&c.G.hasOwnProperty("cpt")&&0==c.G.cpt&& (e=new Date,b=Math.round(e.getTime()/1E3),e=c.G.ct-b,0<e))return ai_debug_cookie_status=a="max global clicks per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1}ai_debug_cookie_status="OK";return!0},ai_check_and_insert_block=function(a,c){if(null==a)return!0;var d=document.getElementsByClassName(c);if(d.length){d=d[0];var b=d.closest("."+ai_block_class_def),f=ai_check_block(a);!f&&0!=parseInt(d.getAttribute("limits-fallback"))&&d.hasAttribute("data-fallback-code")&&(d.setAttribute("data-code", d.getAttribute("data-fallback-code")),null!=b&&b.hasAttribute("data-ai")&&d.hasAttribute("fallback-tracking")&&d.hasAttribute("fallback_level")&&b.setAttribute("data-ai-"+d.getAttribute("fallback_level"),d.getAttribute("fallback-tracking")),f=!0);d.removeAttribute("data-selector");if(f)ai_insert_code(d),b&&(f=b.querySelectorAll(".ai-debug-block"),f.length&&(b.classList.remove("ai-list-block"),b.classList.remove("ai-list-block-ip"),b.classList.remove("ai-list-block-filter"),b.style.visibility="",b.classList.contains("ai-remove-position")&& (b.style.position="")));else{f=d.closest("div[data-ai]");if(null!=f&&"undefined"!=typeof f.getAttribute("data-ai")){var e=JSON.parse(b64d(f.getAttribute("data-ai")));"undefined"!==typeof e&&e.constructor===Array&&(e[1]="",f.setAttribute("data-ai",b64e(JSON.stringify(e))))}b&&(f=b.querySelectorAll(".ai-debug-block"),f.length&&(b.classList.remove("ai-list-block"),b.classList.remove("ai-list-block-ip"),b.classList.remove("ai-list-block-filter"),b.style.visibility="",b.classList.contains("ai-remove-position")&& (b.style.position="")))}d.classList.remove(c)}d=document.querySelectorAll("."+c+"-dbg");b=0;for(f=d.length;b<f;b++)e=d[b],e.querySelector(".ai-status").textContent=ai_debug_cookie_status,e.querySelector(".ai-cookie-data").textContent=ai_get_cookie_text(a),e.classList.remove(c+"-dbg")},ai_load_cookie=function(){var a=AiCookies.getJSON("aiBLOCKS");null==a&&(a={});return a},ai_set_cookie=function(a,c,d){var b=ai_load_cookie();if(""===d){if(b.hasOwnProperty(a)){delete b[a][c];a:{c=b[a];for(f in c)if(c.hasOwnProperty(f)){var f= !1;break a}f=!0}f&&delete b[a]}}else b.hasOwnProperty(a)||(b[a]={}),b[a][c]=d;0===Object.keys(b).length&&b.constructor===Object?AiCookies.remove("aiBLOCKS"):AiCookies.set("aiBLOCKS",b,{expires:365,path:"/"});return b},ai_get_cookie_text=function(a){var c=AiCookies.getJSON("aiBLOCKS");null==c&&(c={});var d="";c.hasOwnProperty("G")&&(d="G["+JSON.stringify(c.G).replace(/"/g,"").replace("{","").replace("}","")+"] ");var b="";c.hasOwnProperty(a)&&(b=JSON.stringify(c[a]).replace(/"/g,"").replace("{","").replace("}", ""));return d+b}); var ai_insertion_js=!0,ai_block_class_def="code-block"; if("undefined"!=typeof ai_insertion_js){ai_insert=function(a,h,l){if(-1!=h.indexOf(":eq("))if(window.jQuery&&window.jQuery.fn)var n=jQuery(h);else{console.error("AI INSERT USING jQuery QUERIES:",h,"- jQuery not found");return}else n=document.querySelectorAll(h);for(var u=0,y=n.length;u<y;u++){var d=n[u];selector_string=d.hasAttribute("id")?"#"+d.getAttribute("id"):d.hasAttribute("class")?"."+d.getAttribute("class").replace(RegExp(" ","g"),"."):"";var w=document.createElement("div");w.innerHTML=l; var m=w.getElementsByClassName("ai-selector-counter")[0];null!=m&&(m.innerText=u+1);m=w.getElementsByClassName("ai-debug-name ai-main")[0];if(null!=m){var r=a.toUpperCase();"undefined"!=typeof ai_front&&("before"==a?r=ai_front.insertion_before:"after"==a?r=ai_front.insertion_after:"prepend"==a?r=ai_front.insertion_prepend:"append"==a?r=ai_front.insertion_append:"replace-content"==a?r=ai_front.insertion_replace_content:"replace-element"==a&&(r=ai_front.insertion_replace_element));-1==selector_string.indexOf(".ai-viewports")&& (m.innerText=r+" "+h+" ("+d.tagName.toLowerCase()+selector_string+")")}m=document.createRange();try{var v=m.createContextualFragment(w.innerHTML)}catch(t){}"before"==a?d.parentNode.insertBefore(v,d):"after"==a?d.parentNode.insertBefore(v,d.nextSibling):"prepend"==a?d.insertBefore(v,d.firstChild):"append"==a?d.insertBefore(v,null):"replace-content"==a?(d.innerHTML="",d.insertBefore(v,null)):"replace-element"==a&&(d.parentNode.insertBefore(v,d),d.parentNode.removeChild(d));z()}};ai_insert_code=function(a){function h(m, r){return null==m?!1:m.classList?m.classList.contains(r):-1<(" "+m.className+" ").indexOf(" "+r+" ")}function l(m,r){null!=m&&(m.classList?m.classList.add(r):m.className+=" "+r)}function n(m,r){null!=m&&(m.classList?m.classList.remove(r):m.className=m.className.replace(new RegExp("(^|\\b)"+r.split(" ").join("|")+"(\\b|$)","gi")," "))}if("undefined"!=typeof a){var u=!1;if(h(a,"no-visibility-check")||a.offsetWidth||a.offsetHeight||a.getClientRects().length){u=a.getAttribute("data-code");var y=a.getAttribute("data-insertion-position"), d=a.getAttribute("data-selector");if(null!=u)if(null!=y&&null!=d){if(-1!=d.indexOf(":eq(")?window.jQuery&&window.jQuery.fn&&jQuery(d).length:document.querySelectorAll(d).length)ai_insert(y,d,b64d(u)),n(a,"ai-viewports")}else{y=document.createRange();try{var w=y.createContextualFragment(b64d(u))}catch(m){}a.parentNode.insertBefore(w,a.nextSibling);n(a,"ai-viewports")}u=!0}else w=a.previousElementSibling,h(w,"ai-debug-bar")&&h(w,"ai-debug-script")&&(n(w,"ai-debug-script"),l(w,"ai-debug-viewport-invisible")), n(a,"ai-viewports");return u}};ai_insert_list_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h),n=h.closest("div."+ai_block_class_def);if(n){l||n.removeAttribute("data-ai");var u=n.querySelectorAll(".ai-debug-block");n&&u.length&&(n.classList.remove("ai-list-block"),n.classList.remove("ai-list-block-ip"),n.classList.remove("ai-list-block-filter"),n.style.visibility="",n.classList.contains("ai-remove-position")&&(n.style.position=""))}h.classList.remove(a); l&&z()}};ai_insert_viewport_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h);h.classList.remove(a);l&&(a=h.closest("div."+ai_block_class_def),null!=a&&(l=h.getAttribute("style"),null!=l&&a.setAttribute("style",a.getAttribute("style")+" "+l)));setTimeout(function(){h.removeAttribute("style")},2);z()}};ai_insert_adsense_fallback_codes=function(a){a.style.display="none";var h=a.closest(".ai-fallback-adsense"),l=h.nextElementSibling;l.getAttribute("data-code")? ai_insert_code(l)&&z():l.style.display="block";h.classList.contains("ai-empty-code")&&null!=a.closest("."+ai_block_class_def)&&(a=a.closest("."+ai_block_class_def).getElementsByClassName("code-block-label"),0!=a.length&&(a[0].style.display="none"))};ai_insert_code_by_class=function(a){var h=document.getElementsByClassName(a)[0];"undefined"!=typeof h&&(ai_insert_code(h),h.classList.remove(a))};ai_insert_client_code=function(a,h){var l=document.getElementsByClassName(a)[0];if("undefined"!=typeof l){var n= l.getAttribute("data-code");null!=n&&ai_check_block()&&(l.setAttribute("data-code",n.substring(Math.floor(h/19))),ai_insert_code_by_class(a),l.remove())}};ai_process_elements_active=!1;function z(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&& ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document);"function"==typeof ai_process_wait_for_interaction&&ai_process_wait_for_interaction();"function"==typeof ai_process_delayed_blocks&&ai_process_delayed_blocks()}, 5);ai_process_elements_active=!0}const B=document.querySelector("body");(new MutationObserver(function(a,h){for(const l of a)"attributes"===l.type&&"data-ad-status"==l.attributeName&&"unfilled"==l.target.dataset.adStatus&&l.target.closest(".ai-fallback-adsense")&&ai_insert_adsense_fallback_codes(l.target)})).observe(B,{attributes:!0,childList:!1,subtree:!0});var Arrive=function(a,h,l){function n(t,c,e){d.addMethod(c,e,t.unbindEvent);d.addMethod(c,e,t.unbindEventWithSelectorOrCallback);d.addMethod(c, e,t.unbindEventWithSelectorAndCallback)}function u(t){t.arrive=r.bindEvent;n(r,t,"unbindArrive");t.leave=v.bindEvent;n(v,t,"unbindLeave")}if(a.MutationObserver&&"undefined"!==typeof HTMLElement){var y=0,d=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(c,e){return c instanceof HTMLElement&&t.call(c,e)},addMethod:function(c,e,f){var b=c[e];c[e]= function(){if(f.length==arguments.length)return f.apply(this,arguments);if("function"==typeof b)return b.apply(this,arguments)}},callCallbacks:function(c,e){e&&e.options.onceOnly&&1==e.firedElems.length&&(c=[c[0]]);for(var f=0,b;b=c[f];f++)b&&b.callback&&b.callback.call(b.elem,b.elem);e&&e.options.onceOnly&&1==e.firedElems.length&&e.me.unbindEventWithSelectorAndCallback.call(e.target,e.selector,e.callback)},checkChildNodesRecursively:function(c,e,f,b){for(var g=0,k;k=c[g];g++)f(k,e,b)&&b.push({callback:e.callback, elem:k}),0<k.childNodes.length&&d.checkChildNodesRecursively(k.childNodes,e,f,b)},mergeArrays:function(c,e){var f={},b;for(b in c)c.hasOwnProperty(b)&&(f[b]=c[b]);for(b in e)e.hasOwnProperty(b)&&(f[b]=e[b]);return f},toElementsArray:function(c){"undefined"===typeof c||"number"===typeof c.length&&c!==a||(c=[c]);return c}}}(),w=function(){var t=function(){this._eventsBucket=[];this._beforeRemoving=this._beforeAdding=null};t.prototype.addEvent=function(c,e,f,b){c={target:c,selector:e,options:f,callback:b, firedElems:[]};this._beforeAdding&&this._beforeAdding(c);this._eventsBucket.push(c);return c};t.prototype.removeEvent=function(c){for(var e=this._eventsBucket.length-1,f;f=this._eventsBucket[e];e--)c(f)&&(this._beforeRemoving&&this._beforeRemoving(f),(f=this._eventsBucket.splice(e,1))&&f.length&&(f[0].callback=null))};t.prototype.beforeAdding=function(c){this._beforeAdding=c};t.prototype.beforeRemoving=function(c){this._beforeRemoving=c};return t}(),m=function(t,c){var e=new w,f=this,b={fireOnAttributesModification:!1}; e.beforeAdding(function(g){var k=g.target;if(k===a.document||k===a)k=document.getElementsByTagName("html")[0];var p=new MutationObserver(function(x){c.call(this,x,g)});var q=t(g.options);p.observe(k,q);g.observer=p;g.me=f});e.beforeRemoving(function(g){g.observer.disconnect()});this.bindEvent=function(g,k,p){k=d.mergeArrays(b,k);for(var q=d.toElementsArray(this),x=0;x<q.length;x++)e.addEvent(q[x],g,k,p)};this.unbindEvent=function(){var g=d.toElementsArray(this);e.removeEvent(function(k){for(var p= 0;p<g.length;p++)if(this===l||k.target===g[p])return!0;return!1})};this.unbindEventWithSelectorOrCallback=function(g){var k=d.toElementsArray(this);e.removeEvent("function"===typeof g?function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.callback===g)return!0;return!1}:function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.selector===g)return!0;return!1})};this.unbindEventWithSelectorAndCallback=function(g,k){var p=d.toElementsArray(this);e.removeEvent(function(q){for(var x= 0;x<p.length;x++)if((this===l||q.target===p[x])&&q.selector===g&&q.callback===k)return!0;return!1})};return this},r=new function(){function t(f,b,g){return d.matchesSelector(f,b.selector)&&(f._id===l&&(f._id=y++),-1==b.firedElems.indexOf(f._id))?(b.firedElems.push(f._id),!0):!1}var c={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};r=new m(function(f){var b={attributes:!1,childList:!0,subtree:!0};f.fireOnAttributesModification&&(b.attributes=!0);return b},function(f,b){f.forEach(function(g){var k= g.addedNodes,p=g.target,q=[];null!==k&&0<k.length?d.checkChildNodesRecursively(k,b,t,q):"attributes"===g.type&&t(p,b,q)&&q.push({callback:b.callback,elem:p});d.callCallbacks(q,b)})});var e=r.bindEvent;r.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);var k=d.toElementsArray(this);if(b.existing){for(var p=[],q=0;q<k.length;q++)for(var x=k[q].querySelectorAll(f),A=0;A<x.length;A++)p.push({callback:g,elem:x[A]});if(b.onceOnly&&p.length)return g.call(p[0].elem,p[0].elem); setTimeout(d.callCallbacks,1,p)}e.call(this,f,b,g)};return r},v=new function(){function t(f,b){return d.matchesSelector(f,b.selector)}var c={};v=new m(function(){return{childList:!0,subtree:!0}},function(f,b){f.forEach(function(g){g=g.removedNodes;var k=[];null!==g&&0<g.length&&d.checkChildNodesRecursively(g,b,t,k);d.callCallbacks(k,b)})});var e=v.bindEvent;v.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);e.call(this,f,b,g)};return v};h&&u(h.fn);u(HTMLElement.prototype); u(NodeList.prototype);u(HTMLCollection.prototype);u(HTMLDocument.prototype);u(Window.prototype);h={};n(r,h,"unbindAllArrive");n(v,h,"unbindAllLeave");return h}}(window,"undefined"===typeof jQuery?null:jQuery,void 0)}; var ai_rotation_triggers=[],ai_block_class_def="code-block"; if("undefined"!=typeof ai_rotation_triggers){ai_process_rotation=function(b){var d="number"==typeof b.length;window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=d?Array.prototype.slice.call(b):b[0]);if(d){var e=!1;b.forEach((c,h)=>{if(c.classList.contains("ai-unprocessed")||c.classList.contains("ai-timer"))e=!0});if(!e)return;b.forEach((c,h)=>{c.classList.remove("ai-unprocessed");c.classList.remove("ai-timer")})}else{if(!b.classList.contains("ai-unprocessed")&&!b.classList.contains("ai-timer"))return; b.classList.remove("ai-unprocessed");b.classList.remove("ai-timer")}var a=!1;if(d?b[0].hasAttribute("data-info"):b.hasAttribute("data-info")){var f="div.ai-rotate.ai-"+(d?JSON.parse(atob(b[0].dataset.info)):JSON.parse(atob(b.dataset.info)))[0];ai_rotation_triggers.includes(f)&&(ai_rotation_triggers.splice(ai_rotation_triggers.indexOf(f),1),a=!0)}if(d)for(d=0;d<b.length;d++)0==d?ai_process_single_rotation(b[d],!0):ai_process_single_rotation(b[d],!1);else ai_process_single_rotation(b,!a)};ai_process_single_rotation= function(b,d){var e=[];Array.from(b.children).forEach((g,p)=>{g.matches(".ai-rotate-option")&&e.push(g)});if(0!=e.length){e.forEach((g,p)=>{g.style.display="none"});if(b.hasAttribute("data-next")){k=parseInt(b.getAttribute("data-next"));var a=e[k];if(a.hasAttribute("data-code")){var f=document.createRange(),c=!0;try{var h=f.createContextualFragment(b64d(a.dataset.code))}catch(g){c=!1}c&&(a=h)}0!=a.querySelectorAll("span[data-ai-groups]").length&&0!=document.querySelectorAll(".ai-rotation-groups").length&& setTimeout(function(){B()},5)}else if(e[0].hasAttribute("data-group")){var k=-1,u=[];document.querySelectorAll("span[data-ai-groups]").forEach((g,p)=>{(g.offsetWidth||g.offsetHeight||g.getClientRects().length)&&u.push(g)});1<=u.length&&(timed_groups=[],groups=[],u.forEach(function(g,p){active_groups=JSON.parse(b64d(g.dataset.aiGroups));var r=!1;g=g.closest(".ai-rotate");null!=g&&g.classList.contains("ai-timed-rotation")&&(r=!0);active_groups.forEach(function(t,v){groups.push(t);r&&timed_groups.push(t)})}), groups.forEach(function(g,p){-1==k&&e.forEach((r,t)=>{var v=b64d(r.dataset.group);option_group_items=v.split(",");option_group_items.forEach(function(C,E){-1==k&&C.trim()==g&&(k=t,timed_groups.includes(v)&&b.classList.add("ai-timed-rotation"))})})}))}else if(b.hasAttribute("data-shares"))for(f=JSON.parse(atob(b.dataset.shares)),a=Math.round(100*Math.random()),c=0;c<f.length&&(k=c,0>f[c]||!(a<=f[c]));c++);else f=b.classList.contains("ai-unique"),a=new Date,f?("number"!=typeof ai_rotation_seed&&(ai_rotation_seed= (Math.floor(1E3*Math.random())+a.getMilliseconds())%e.length),f=ai_rotation_seed,f>e.length&&(f%=e.length),a=parseInt(b.dataset.counter),a<=e.length?(k=parseInt(f+a-1),k>=e.length&&(k-=e.length)):k=e.length):(k=Math.floor(Math.random()*e.length),a.getMilliseconds()%2&&(k=e.length-k-1));if(b.classList.contains("ai-rotation-scheduling"))for(k=-1,f=0;f<e.length;f++)if(a=e[f],a.hasAttribute("data-scheduling")){c=b64d(a.dataset.scheduling);a=!0;0==c.indexOf("^")&&(a=!1,c=c.substring(1));var q=c.split("="), m=-1!=c.indexOf("%")?q[0].split("%"):[q[0]];c=m[0].trim().toLowerCase();m="undefined"!=typeof m[1]?m[1].trim():0;q=q[1].replace(" ","");var n=(new Date).getTime();n=new Date(n);var l=0;switch(c){case "s":l=n.getSeconds();break;case "i":l=n.getMinutes();break;case "h":l=n.getHours();break;case "d":l=n.getDate();break;case "m":l=n.getMonth();break;case "y":l=n.getFullYear();break;case "w":l=n.getDay(),l=0==l?6:l-1}c=0!=m?l%m:l;m=q.split(",");q=!a;for(n=0;n<m.length;n++)if(l=m[n],-1!=l.indexOf("-")){if(l= l.split("-"),c>=l[0]&&c<=l[1]){q=a;break}}else if(c==l){q=a;break}if(q){k=f;break}}if(!(0>k||k>=e.length)){a=e[k];var z="",w=b.classList.contains("ai-timed-rotation");e.forEach((g,p)=>{g.hasAttribute("data-time")&&(w=!0)});if(a.hasAttribute("data-time")){f=atob(a.dataset.time);if(0==f&&1<e.length){c=k;do{c++;c>=e.length&&(c=0);m=e[c];if(!m.hasAttribute("data-time")){k=c;a=e[k];f=0;break}m=atob(m.dataset.time)}while(0==m&&c!=k);0!=f&&(k=c,a=e[k],f=atob(a.dataset.time))}if(0<f&&(c=k+1,c>=e.length&& (c=0),b.hasAttribute("data-info"))){m=JSON.parse(atob(b.dataset.info))[0];b.setAttribute("data-next",c);var x="div.ai-rotate.ai-"+m;ai_rotation_triggers.includes(x)&&(d=!1);d&&(ai_rotation_triggers.push(x),setTimeout(function(){var g=document.querySelectorAll(x);g.forEach((p,r)=>{p.classList.add("ai-timer")});ai_process_rotation(g)},1E3*f));z=" ("+f+" s)"}}else a.hasAttribute("data-group")||e.forEach((g,p)=>{p!=k&&g.remove()});a.style.display="";a.style.visibility="";a.style.position="";a.style.width= "";a.style.height="";a.style.top="";a.style.left="";a.classList.remove("ai-rotate-hidden");a.classList.remove("ai-rotate-hidden-2");b.style.position="";if(a.hasAttribute("data-code")){e.forEach((g,p)=>{g.innerText=""});d=b64d(a.dataset.code);f=document.createRange();c=!0;try{h=f.createContextualFragment(d)}catch(g){c=!1}a.append(h);D()}f=parseInt(a.dataset.index);var y=b64d(a.dataset.name);d=b.closest(".ai-debug-block");if(null!=d){h=d.querySelectorAll("kbd.ai-option-name");d=d.querySelectorAll(".ai-debug-block"); if(0!=d.length){var A=[];d.forEach((g,p)=>{g.querySelectorAll("kbd.ai-option-name").forEach((r,t)=>{A.push(r)})});h=Array.from(h);h=h.slice(0,h.length-A.length)}0!=h.length&&(separator=h[0].hasAttribute("data-separator")?h[0].dataset.separator:"",h.forEach((g,p)=>{g.innerText=separator+y+z}))}d=!1;a=b.closest(".ai-adb-show");null!=a&&a.hasAttribute("data-ai-tracking")&&(h=JSON.parse(b64d(a.getAttribute("data-ai-tracking"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,a.setAttribute("data-ai-tracking", b64e(JSON.stringify(h))),a.classList.add("ai-track"),w&&ai_tracking_finished&&a.classList.add("ai-no-pageview"),d=!0));d||(d=b.closest("div[data-ai]"),null!=d&&d.hasAttribute("data-ai")&&(h=JSON.parse(b64d(d.getAttribute("data-ai"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,d.setAttribute("data-ai",b64e(JSON.stringify(h))),d.classList.add("ai-track"),w&&ai_tracking_finished&&d.classList.add("ai-no-pageview"))))}}};ai_process_rotations=function(){document.querySelectorAll("div.ai-rotate").forEach((b, d)=>{ai_process_rotation(b)})};function B(){document.querySelectorAll("div.ai-rotate.ai-rotation-groups").forEach((b,d)=>{b.classList.add("ai-timer");ai_process_rotation(b)})}ai_process_rotations_in_element=function(b){null!=b&&b.querySelectorAll("div.ai-rotate").forEach((d,e)=>{ai_process_rotation(d)})};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_rotations()}, 10)});ai_process_elements_active=!1;function D(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1== ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5);ai_process_elements_active=!0}}; ;!function(a,b){a(function(){"use strict";function a(a,b){return null!=a&&null!=b&&a.toLowerCase()===b.toLowerCase()}function c(a,b){var c,d,e=a.length;if(!e||!b)return!1;for(c=b.toLowerCase(),d=0;d<e;++d)if(c===a[d].toLowerCase())return!0;return!1}function d(a){for(var b in a)i.call(a,b)&&(a[b]=new RegExp(a[b],"i"))}function e(a){return(a||"").substr(0,500)}function f(a,b){this.ua=e(a),this._cache={},this.maxPhoneWidth=b||600}var g={};g.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},g.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var h,i=Object.prototype.hasOwnProperty;return g.FALLBACK_PHONE="UnknownPhone",g.FALLBACK_TABLET="UnknownTablet",g.FALLBACK_MOBILE="UnknownMobile",h="isArray"in Array?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},function(){var a,b,c,e,f,j,k=g.mobileDetectRules;for(a in k.props)if(i.call(k.props,a)){for(b=k.props[a],h(b)||(b=[b]),f=b.length,e=0;e<f;++e)c=b[e],j=c.indexOf("[VER]"),j>=0&&(c=c.substring(0,j)+"([\\w._\\+]+)"+c.substring(j+5)),b[e]=new RegExp(c,"i");k.props[a]=b}d(k.oss),d(k.phones),d(k.tablets),d(k.uas),d(k.utils),k.oss0={WindowsPhoneOS:k.oss.WindowsPhoneOS,WindowsMobileOS:k.oss.WindowsMobileOS}}(),g.findMatch=function(a,b){for(var c in a)if(i.call(a,c)&&a[c].test(b))return c;return null},g.findMatches=function(a,b){var c=[];for(var d in a)i.call(a,d)&&a[d].test(b)&&c.push(d);return c},g.getVersionStr=function(a,b){var c,d,e,f,h=g.mobileDetectRules.props;if(i.call(h,a))for(c=h[a],e=c.length,d=0;d<e;++d)if(f=c[d].exec(b),null!==f)return f[1];return null},g.getVersion=function(a,b){var c=g.getVersionStr(a,b);return c?g.prepareVersionNo(c):NaN},g.prepareVersionNo=function(a){var b;return b=a.split(/[a-z._ \/\-]/i),1===b.length&&(a=b[0]),b.length>1&&(a=b[0]+".",b.shift(),a+=b.join("")),Number(a)},g.isMobileFallback=function(a){return g.detectMobileBrowsers.fullPattern.test(a)||g.detectMobileBrowsers.shortPattern.test(a.substr(0,4))},g.isTabletFallback=function(a){return g.detectMobileBrowsers.tabletPattern.test(a)},g.prepareDetectionCache=function(a,c,d){if(a.mobile===b){var e,h,i;return(h=g.findMatch(g.mobileDetectRules.tablets,c))?(a.mobile=a.tablet=h,void(a.phone=null)):(e=g.findMatch(g.mobileDetectRules.phones,c))?(a.mobile=a.phone=e,void(a.tablet=null)):void(g.isMobileFallback(c)?(i=f.isPhoneSized(d),i===b?(a.mobile=g.FALLBACK_MOBILE,a.tablet=a.phone=null):i?(a.mobile=a.phone=g.FALLBACK_PHONE,a.tablet=null):(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null)):g.isTabletFallback(c)?(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null):a.mobile=a.tablet=a.phone=null)}},g.mobileGrade=function(a){var b=null!==a.mobile();return a.os("iOS")&&a.version("iPad")>=4.3||a.os("iOS")&&a.version("iPhone")>=3.1||a.os("iOS")&&a.version("iPod")>=3.1||a.version("Android")>2.1&&a.is("Webkit")||a.version("Windows Phone OS")>=7||a.is("BlackBerry")&&a.version("BlackBerry")>=6||a.match("Playbook.*Tablet")||a.version("webOS")>=1.4&&a.match("Palm|Pre|Pixi")||a.match("hp.*TouchPad")||a.is("Firefox")&&a.version("Firefox")>=12||a.is("Chrome")&&a.is("AndroidOS")&&a.version("Android")>=4||a.is("Skyfire")&&a.version("Skyfire")>=4.1&&a.is("AndroidOS")&&a.version("Android")>=2.3||a.is("Opera")&&a.version("Opera Mobi")>11&&a.is("AndroidOS")||a.is("MeeGoOS")||a.is("Tizen")||a.is("Dolfin")&&a.version("Bada")>=2||(a.is("UC Browser")||a.is("Dolfin"))&&a.version("Android")>=2.3||a.match("Kindle Fire")||a.is("Kindle")&&a.version("Kindle")>=3||a.is("AndroidOS")&&a.is("NookTablet")||a.version("Chrome")>=11&&!b||a.version("Safari")>=5&&!b||a.version("Firefox")>=4&&!b||a.version("MSIE")>=7&&!b||a.version("Opera")>=10&&!b?"A":a.os("iOS")&&a.version("iPad")<4.3||a.os("iOS")&&a.version("iPhone")<3.1||a.os("iOS")&&a.version("iPod")<3.1||a.is("Blackberry")&&a.version("BlackBerry")>=5&&a.version("BlackBerry")<6||a.version("Opera Mini")>=5&&a.version("Opera Mini")<=6.5&&(a.version("Android")>=2.3||a.is("iOS"))||a.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||a.version("Opera Mobi")>=11&&a.is("SymbianOS")?"B":(a.version("BlackBerry")<5||a.match("MSIEMobile|Windows CE.*Mobile")||a.version("Windows Mobile")<=5.2,"C")},g.detectOS=function(a){return g.findMatch(g.mobileDetectRules.oss0,a)||g.findMatch(g.mobileDetectRules.oss,a)},g.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height},f.prototype={constructor:f,mobile:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===b&&(this._cache.userAgent=g.findMatch(g.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===b&&(this._cache.userAgents=g.findMatches(g.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===b&&(this._cache.os=g.detectOS(this.ua)),this._cache.os},version:function(a){return g.getVersion(a,this.ua)},versionStr:function(a){return g.getVersionStr(a,this.ua)},is:function(b){return c(this.userAgents(),b)||a(b,this.os())||a(b,this.phone())||a(b,this.tablet())||c(g.findMatches(g.mobileDetectRules.utils,this.ua),b)},match:function(a){return a instanceof RegExp||(a=new RegExp(a,"i")),a.test(this.ua)},isPhoneSized:function(a){return f.isPhoneSized(a||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===b&&(this._cache.grade=g.mobileGrade(this)),this._cache.grade}},"undefined"!=typeof window&&window.screen?f.isPhoneSized=function(a){return a<0?b:g.getDeviceSmallerSide()<=a}:f.isPhoneSized=function(){},f._impl=g,f.version="1.4.5 2021-03-13",f})}(function(a){if("undefined"!=typeof module&&module.exports)return function(a){module.exports=a()};if("function"==typeof define&&define.amd)return define;if("undefined"!=typeof window)return function(a){window.MobileDetect=a()};throw new Error("unknown environment")}());var ai_lists=!0,ai_block_class_def="code-block"; if("undefined"!=typeof ai_lists){function X(b,e){for(var p=[];b=b.previousElementSibling;)("undefined"==typeof e||b.matches(e))&&p.push(b);return p}function fa(b,e){for(var p=[];b=b.nextElementSibling;)("undefined"==typeof e||b.matches(e))&&p.push(b);return p}var host_regexp=RegExp(":\\/\\/(.[^/:]+)","i");function ha(b){b=b.match(host_regexp);return null!=b&&1<b.length&&"string"===typeof b[1]&&0<b[1].length?b[1].toLowerCase():null}function Q(b){return b.includes(":")?(b=b.split(":"),1E3*(3600*parseInt(b[0])+ 60*parseInt(b[1])+parseInt(b[2]))):null}function Y(b){try{var e=Date.parse(b);isNaN(e)&&(e=null)}catch(p){e=null}if(null==e&&b.includes(" ")){b=b.split(" ");try{e=Date.parse(b[0]),e+=Q(b[1]),isNaN(e)&&(e=null)}catch(p){e=null}}return e}function Z(){null==document.querySelector("#ai-iab-tcf-bar")&&null==document.querySelector(".ai-list-manual")||"function"!=typeof __tcfapi||"function"!=typeof ai_load_blocks||"undefined"!=typeof ai_iab_tcf_callback_installed||(__tcfapi("addEventListener",2,function(b, e){e&&"useractioncomplete"===b.eventStatus&&(ai_tcData=b,ai_load_blocks(),b=document.querySelector("#ai-iab-tcf-status"),null!=b&&(b.textContent="IAB TCF 2.0 DATA LOADED"),b=document.querySelector("#ai-iab-tcf-bar"),null!=b&&(b.classList.remove("status-error"),b.classList.add("status-ok")))}),ai_iab_tcf_callback_installed=!0)}ai_process_lists=function(b){function e(a,d,k){if(0==a.length){if("!@!"==k)return!0;d!=k&&("true"==k.toLowerCase()?k=!0:"false"==k.toLowerCase()&&(k=!1));return d==k}if("object"!= typeof d&&"array"!=typeof d)return!1;var l=a[0];a=a.slice(1);if("*"==l)for(let [,n]of Object.entries(d)){if(e(a,n,k))return!0}else if(l in d)return e(a,d[l],k);return!1}function p(a,d,k){if("object"!=typeof a||-1==d.indexOf("["))return!1;d=d.replace(/]| /gi,"").split("[");return e(d,a,k)}function z(){if("function"==typeof __tcfapi){var a=document.querySelector("#ai-iab-tcf-status"),d=document.querySelector("#ai-iab-tcf-bar");null!=a&&(a.textContent="IAB TCF 2.0 DETECTED");__tcfapi("getTCData",2,function(k, l){l?(null!=d&&d.classList.add("status-ok"),"tcloaded"==k.eventStatus||"useractioncomplete"==k.eventStatus)?(ai_tcData=k,k.gdprApplies?null!=a&&(a.textContent="IAB TCF 2.0 DATA LOADED"):null!=a&&(a.textContent="IAB TCF 2.0 GDPR DOES NOT APPLY"),null!=d&&(d.classList.remove("status-error"),d.classList.add("status-ok")),setTimeout(function(){ai_process_lists()},10)):"cmpuishown"==k.eventStatus&&(ai_cmpuishown=!0,null!=a&&(a.textContent="IAB TCF 2.0 CMP UI SHOWN"),null!=d&&(d.classList.remove("status-error"), d.classList.add("status-ok"))):(null!=a&&(a.textContent="IAB TCF 2.0 __tcfapi getTCData failed"),null!=d&&(d.classList.remove("status-ok"),d.classList.add("status-error")))})}}function C(a){"function"==typeof __tcfapi?(ai_tcfapi_found=!0,"undefined"==typeof ai_iab_tcf_callback_installed&&Z(),"undefined"==typeof ai_tcData_requested&&(ai_tcData_requested=!0,z(),cookies_need_tcData=!0)):a&&("undefined"==typeof ai_tcfapi_found&&(ai_tcfapi_found=!1,setTimeout(function(){ai_process_lists()},10)),a=document.querySelector("#ai-iab-tcf-status"), null!=a&&(a.textContent="IAB TCF 2.0 MISSING: __tcfapi function not found"),a=document.querySelector("#ai-iab-tcf-bar"),null!=a&&(a.classList.remove("status-ok"),a.classList.add("status-error")))}if(null==b)b=document.querySelectorAll("div.ai-list-data, meta.ai-list-data");else{window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=Array.prototype.slice.call(b));var x=[];b.forEach((a,d)=>{a.matches(".ai-list-data")?x.push(a):(a=a.querySelectorAll(".ai-list-data"),a.length&&a.forEach((k,l)=>{x.push(k)}))}); b=x}if(b.length){b.forEach((a,d)=>{a.classList.remove("ai-list-data")});var L=ia(window.location.search);if(null!=L.referrer)var A=L.referrer;else A=document.referrer,""!=A&&(A=ha(A));var R=window.navigator.userAgent,S=R.toLowerCase(),aa=navigator.language,M=aa.toLowerCase();if("undefined"!==typeof MobileDetect)var ba=new MobileDetect(R);b.forEach((a,d)=>{var k=document.cookie.split(";");k.forEach(function(f,h){k[h]=f.trim()});d=a.closest("div."+ai_block_class_def);var l=!0;if(a.hasAttribute("referer-list")){var n= a.getAttribute("referer-list");n=b64d(n).split(",");var v=a.getAttribute("referer-list-type"),E=!1;n.every((f,h)=>{f=f.trim();if(""==f)return!0;if("*"==f.charAt(0))if("*"==f.charAt(f.length-1)){if(f=f.substr(1,f.length-2),-1!=A.indexOf(f))return E=!0,!1}else{if(f=f.substr(1),A.substr(-f.length)==f)return E=!0,!1}else if("*"==f.charAt(f.length-1)){if(f=f.substr(0,f.length-1),0==A.indexOf(f))return E=!0,!1}else if("#"==f){if(""==A)return E=!0,!1}else if(f==A)return E=!0,!1;return!0});var r=E;switch(v){case "B":r&& (l=!1);break;case "W":r||(l=!1)}}if(l&&a.hasAttribute("client-list")&&"undefined"!==typeof ba)switch(n=a.getAttribute("client-list"),n=b64d(n).split(","),v=a.getAttribute("client-list-type"),r=!1,n.every((f,h)=>{if(""==f.trim())return!0;f.split("&&").every((c,t)=>{t=!0;var w=!1;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);"language:"==c.substring(0,9)&&(w=!0,c=c.substring(9).toLowerCase());var q=!1;w?"*"==c.charAt(0)?"*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(), -1!=M.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),M.substr(-c.length)==c&&(q=!0)):"*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==M.indexOf(c)&&(q=!0)):c==M&&(q=!0):"*"==c.charAt(0)?"*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(),-1!=S.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),S.substr(-c.length)==c&&(q=!0)):"*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==S.indexOf(c)&&(q=!0)):ba.is(c)&&(q=!0);return(r=q?t:!t)?!0:!1});return r? !1:!0}),v){case "B":r&&(l=!1);break;case "W":r||(l=!1)}var N=n=!1;for(v=1;2>=v;v++)if(l){switch(v){case 1:var g=a.getAttribute("cookie-list");break;case 2:g=a.getAttribute("parameter-list")}if(null!=g){g=b64d(g);switch(v){case 1:var y=a.getAttribute("cookie-list-type");break;case 2:y=a.getAttribute("parameter-list-type")}g=g.replace("tcf-gdpr","tcf-v2[gdprApplies]=true");g=g.replace("tcf-no-gdpr","tcf-v2[gdprApplies]=false");g=g.replace("tcf-google","tcf-v2[vendor][consents][755]=true && tcf-v2[purpose][consents][1]=true"); g=g.replace("tcf-no-google","!!tcf-v2[vendor][consents][755]");g=g.replace("tcf-media.net","tcf-v2[vendor][consents][142]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-media.net","!!tcf-v2[vendor][consents][142]");g=g.replace("tcf-amazon","tcf-v2[vendor][consents][793]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-amazon","!!tcf-v2[vendor][consents][793]");g=g.replace("tcf-ezoic","tcf-v2[vendor][consents][347]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-ezoic", "!!tcf-v2[vendor][consents][347]");var F=g.split(","),ca=[];k.forEach(function(f){f=f.split("=");try{var h=JSON.parse(decodeURIComponent(f[1]))}catch(c){h=decodeURIComponent(f[1])}ca[f[0]]=h});r=!1;var I=a;F.every((f,h)=>{f.split("&&").every((c,t)=>{t=!0;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);var w=c,q="!@!",T="tcf-v2"==w&&"!@!"==q,B=-1!=c.indexOf("["),J=0==c.indexOf("tcf-v2")||0==c.indexOf("euconsent-v2");J=J&&(B||T);-1!=c.indexOf("=")&&(q=c.split("="),w=q[0],q=q[1],B=-1!=w.indexOf("["), J=(J=0==w.indexOf("tcf-v2")||0==w.indexOf("euconsent-v2"))&&(B||T));if(J)document.querySelector("#ai-iab-tcf-status"),B=document.querySelector("#ai-iab-tcf-bar"),null!=B&&(B.style.display="block"),T&&"boolean"==typeof ai_tcfapi_found?r=ai_tcfapi_found?t:!t:"object"==typeof ai_tcData?(null!=B&&B.classList.add("status-ok"),w=w.replace(/]| /gi,"").split("["),w.shift(),r=(w=e(w,ai_tcData,q))?t:!t):"undefined"==typeof ai_tcfapi_found&&(I.classList.add("ai-list-data"),N=!0,"function"==typeof __tcfapi?C(!1): "undefined"==typeof ai_tcData_retrying&&(ai_tcData_retrying=!0,setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){C(!0)},3E3)},1E3)},600)));else if(B)r=(w=p(ca,w,q))?t:!t;else{var U=!1;"!@!"==q?k.every(function(ja){return ja.split("=")[0]==c?(U=!0,!1):!0}):U=-1!=k.indexOf(c);r=U?t:!t}return r?!0:!1});return r?!1:!0});r&&(N=!1,I.classList.remove("ai-list-data"));switch(y){case "B":r&&(l=!1);break;case "W":r||(l=!1)}}}a.classList.contains("ai-list-manual")&& (l?(I.classList.remove("ai-list-data"),I.classList.remove("ai-list-manual")):(n=!0,I.classList.add("ai-list-data")));(l||!n&&!N)&&a.hasAttribute("data-debug-info")&&(g=document.querySelector("."+a.dataset.debugInfo),null!=g&&(g=g.parentElement,null!=g&&g.classList.contains("ai-debug-info")&&g.remove()));y=X(a,".ai-debug-bar.ai-debug-lists");var ka=""==A?"#":A;0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-list-info");null!=h&&(h.textContent=ka,h.title=R+"\n"+aa);h=f.querySelector(".ai-debug-name.ai-list-status"); null!=h&&(h.textContent=l?ai_front.visible:ai_front.hidden)});g=!1;if(l&&a.hasAttribute("scheduling-start")&&a.hasAttribute("scheduling-end")&&a.hasAttribute("scheduling-days")){var u=a.getAttribute("scheduling-start");v=a.getAttribute("scheduling-end");y=a.getAttribute("scheduling-days");g=!0;u=b64d(u);F=b64d(v);var V=parseInt(a.getAttribute("scheduling-fallback")),O=parseInt(a.getAttribute("gmt"));if(u.includes("-")||F.includes("-"))P=Y(u)+O,K=Y(F)+O;else var P=Q(u),K=Q(F);P??=0;K??=0;var W=b64d(y).split(","); y=a.getAttribute("scheduling-type");var D=(new Date).getTime()+O;v=new Date(D);var G=v.getDay();0==G?G=6:G--;u.includes("-")||F.includes("-")||(u=(new Date(v.getFullYear(),v.getMonth(),v.getDate())).getTime()+O,D-=u,0>D&&(D+=864E5));scheduling_start_date_ok=D>=P;scheduling_end_date_ok=0==K||D<K;u=scheduling_start_date_ok&&scheduling_end_date_ok&&W.includes(G.toString());switch(y){case "B":u=!u}u||(l=!1);var la=v.toISOString().split(".")[0].replace("T"," ");y=X(a,".ai-debug-bar.ai-debug-scheduling"); 0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-scheduling-info");null!=h&&(h.textContent=la+" "+G+" current_time: "+Math.floor(D.toString()/1E3)+" start_date:"+Math.floor(P/1E3).toString()+"=>"+scheduling_start_date_ok.toString()+" end_date:"+Math.floor(K/1E3).toString()+"=>"+scheduling_end_date_ok.toString()+" days:"+W.toString()+"=>"+W.includes(G.toString()).toString());h=f.querySelector(".ai-debug-name.ai-scheduling-status");null!=h&&(h.textContent=l?ai_front.visible:ai_front.hidden); l||0==V||(f.classList.remove("ai-debug-scheduling"),f.classList.add("ai-debug-fallback"),h=f.querySelector(".ai-debug-name.ai-scheduling-status"),null!=h&&(h.textContent=ai_front.fallback+" = "+V))})}if(n||!l&&N)return!0;a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";if(l){if(null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&(d.style.position="")),a.hasAttribute("data-code")){n=b64d(a.dataset.code);u=document.createRange(); g=!0;try{H=u.createContextualFragment(n)}catch(f){g=!1}g&&(null!=a.closest("head")?(a.parentNode.insertBefore(H,a.nextSibling),a.remove()):a.append(H));da(a)}}else if(g&&!u&&0!=V){null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&d.css({position:""}));n=fa(a,".ai-fallback");0!=n.length&&n.forEach((f,h)=>{f.classList.remove("ai-fallback")});if(a.hasAttribute("data-fallback-code")){n=b64d(a.dataset.fallbackCode);u=document.createRange();g=!0;try{var H=u.createContextualFragment(n)}catch(f){g= !1}g&&a.append(H);da(a)}else a.style.display="none",null!=d&&null==d.querySelector(".ai-debug-block")&&d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none");null!=d&&d.hasAttribute("data-ai")&&(d.getAttribute("data-ai"),a.hasAttribute("fallback-tracking")&&(H=a.getAttribute("fallback-tracking"),d.setAttribute("data-ai-"+a.getAttribute("fallback_level"),H)))}else a.style.display="none",null!=d&&(d.removeAttribute("data-ai"),d.classList.remove("ai-track"), null!=d.querySelector(".ai-debug-block")?(d.style.visibility="",d.classList.remove("ai-close"),d.classList.contains("ai-remove-position")&&(d.style.position="")):d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none"));a.setAttribute("data-code","");a.setAttribute("data-fallback-code","");null!=d&&d.classList.remove("ai-list-block")})}};function ea(b){b=`; ${document.cookie}`.split(`; ${b}=`);if(2===b.length)return b.pop().split(";").shift()}function ma(b, e,p){ea(b)&&(document.cookie=b+"="+(e?";path="+e:"")+(p?";domain="+p:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}function m(b){ea(b)&&(ma(b,"/",window.location.hostname),document.cookie=b+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;")}(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_lists();setTimeout(function(){Z();if("function"== typeof ai_load_blocks){document.addEventListener("cmplzEnableScripts",e);document.addEventListener("cmplz_event_marketing",e);function e(p){"cmplzEnableScripts"!=p.type&&"all"!==p.consentLevel||ai_load_blocks()}}},50);var b=document.querySelector(".ai-debug-page-type");null!=b&&b.addEventListener("dblclick",e=>{e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES");e=document.querySelector("#ai-iab-tcf-bar");null!=e&&(e.style.display="block")});b=document.querySelector("#ai-iab-tcf-bar"); null!=b&&b.addEventListener("click",e=>{m("euconsent-v2");m("__lxG__consent__v2");m("__lxG__consent__v2_daisybit");m("__lxG__consent__v2_gdaisybit");m("CookieLawInfoConsent");m("cookielawinfo-checkbox-advertisement");m("cookielawinfo-checkbox-analytics");m("cookielawinfo-checkbox-necessary");m("complianz_policy_id");m("complianz_consent_status");m("cmplz_marketing");m("cmplz_consent_status");m("cmplz_preferences");m("cmplz_statistics-anonymous");m("cmplz_choice");m("cmplz_banner-status");m("cmplz_functional"); m("cmplz_policy_id");m("cmplz_statistics");m("moove_gdpr_popup");m("real_cookie_banner-blog:1-tcf");m("real_cookie_banner-blog:1");e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES DELETED")})},5)});function da(b){setTimeout(function(){"function"==typeof ai_process_rotations_in_element&&ai_process_rotations_in_element(b);"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&& ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks(b);"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5)}function ia(b){var e=b?b.split("?")[1]:window.location.search.slice(1);b={};if(e){e=e.split("#")[0];e=e.split("&");for(var p=0;p<e.length;p++){var z= e[p].split("="),C=void 0,x=z[0].replace(/\[\d*\]/,function(L){C=L.slice(1,-1);return""});z="undefined"===typeof z[1]?"":z[1];x=x.toLowerCase();z=z.toLowerCase();b[x]?("string"===typeof b[x]&&(b[x]=[b[x]]),"undefined"===typeof C?b[x].push(z):b[x][C]=z):b[x]=z}}return b}}; ai_run_470856123900 = function(){ ai_document_write=document.write;document.write=function(a){"interactive"==document.readyState?(console.error("document.write called after page load: ",a),"undefined"!=typeof ai_js_errors&&ai_js_errors.push(["document.write called after page load",a,0])):ai_document_write.call(document,a)}; ai_insert ('before', '#nv-footer', b64d ('PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTEnIHN0eWxlPSdtYXJnaW46IDhweCAwOyBjbGVhcjogYm90aDsnPgo8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiAjZWZlZmVmIDAlIDAlIG5vLXJlcGVhdCBwYWRkaW5nLWJveDttYXJnaW4tdG9wOiAtOHB4O21hcmdpbi1ib3R0b206IC04cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyI+PGRpdiBzdHlsZT0ibWF4LXdpZHRoOjEzNjBweDttYXJnaW46YXV0bzsiPjxkaXYgaWQ9Im1ldGFzbGlkZXItaWQtNTYyODQiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAwIGF1dG87IiBjbGFzcz0ibWwtc2xpZGVyLTMtNjAtMSBtZXRhc2xpZGVyIG1ldGFzbGlkZXItZmxleCBtZXRhc2xpZGVyLTU2Mjg0IG1sLXNsaWRlciBtcy10aGVtZS1oaWdod2F5IG5hdi1oaWRkZW4gbmF2LWhpZGRlbiIgcm9sZT0icmVnaW9uIiBhcmlhLXJvbGVkZXNjcmlwdGlvbj0iU2xpZGVzaG93IiBhcmlhLWxhYmVsPSJib3R0b20gYmFubmVyIj4KICAgIDxkaXYgaWQ9Im1ldGFzbGlkZXJfY29udGFpbmVyXzU2Mjg0Ij4KICAgICAgICA8ZGl2IGlkPSJtZXRhc2xpZGVyXzU2Mjg0IiBjbGFzcz0iZmxleHNsaWRlciI+CiAgICAgICAgICAgIDx1bCBhcmlhLWxpdmU9InBvbGl0ZSIgY2xhc3M9InNsaWRlcyI+CiAgICAgICAgICAgICAgICA8bGkgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsiIGNsYXNzPSJzbGlkZS05NTc0NyBtcy1pbWFnZSIgYXJpYS1yb2xlZGVzY3JpcHRpb249InNsaWRlIiBhcmlhLWxhYmVsPSJzbGlkZS05NTc0NyI+PGEgaHJlZj0iaHR0cHM6Ly93d3cubnZpZGlhLmNvbS9ndGMvP252aWQ9bnYtaW50LWJuci00NjM1ODMiIHRhcmdldD0iX2JsYW5rIj48aW1nIHdpZHRoPSIxMzYwIiBoZWlnaHQ9IjE4MCIgc3JjPSJodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAyL2d0YzI1LXdlYi1kcm1rLXRlY2gtYmxvZy1yZWctbm93LTEzNjB4MTgwLTEuanBnIiBjbGFzcz0ic2xpZGVyLTU2Mjg0IHNsaWRlLTk1NzQ3IiBhbHQ9IiIgcmVsPSIiIHRpdGxlPSJHVEMgMjAyNSByZWdpc3RlciBub3cgYmFubmVyIiBkZWNvZGluZz0iYXN5bmMiIGxvYWRpbmc9ImxhenkiIHNyY3NldD0iaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMi9ndGMyNS13ZWItZHJtay10ZWNoLWJsb2ctcmVnLW5vdy0xMzYweDE4MC0xLmpwZyAxMzYwdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMi9ndGMyNS13ZWItZHJtay10ZWNoLWJsb2ctcmVnLW5vdy0xMzYweDE4MC0xLTMwMHg0MC5qcGcgMzAwdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMi9ndGMyNS13ZWItZHJtay10ZWNoLWJsb2ctcmVnLW5vdy0xMzYweDE4MC0xLTYyNXg4My5qcGcgNjI1dywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMi9ndGMyNS13ZWItZHJtay10ZWNoLWJsb2ctcmVnLW5vdy0xMzYweDE4MC0xLTE3OXgyNC5qcGcgMTc5dywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMi9ndGMyNS13ZWItZHJtay10ZWNoLWJsb2ctcmVnLW5vdy0xMzYweDE4MC0xLTc2OHgxMDIuanBnIDc2OHcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDIvZ3RjMjUtd2ViLWRybWstdGVjaC1ibG9nLXJlZy1ub3ctMTM2MHgxODAtMS02NDV4ODUuanBnIDY0NXcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDIvZ3RjMjUtd2ViLWRybWstdGVjaC1ibG9nLXJlZy1ub3ctMTM2MHgxODAtMS01MDB4NjYuanBnIDUwMHcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDIvZ3RjMjUtd2ViLWRybWstdGVjaC1ibG9nLXJlZy1ub3ctMTM2MHgxODAtMS0xNjB4MjEuanBnIDE2MHcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDIvZ3RjMjUtd2ViLWRybWstdGVjaC1ibG9nLXJlZy1ub3ctMTM2MHgxODAtMS0zNjJ4NDguanBnIDM2MncsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDIvZ3RjMjUtd2ViLWRybWstdGVjaC1ibG9nLXJlZy1ub3ctMTM2MHgxODAtMS04MzF4MTEwLmpwZyA4MzF3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAyL2d0YzI1LXdlYi1kcm1rLXRlY2gtYmxvZy1yZWctbm93LTEzNjB4MTgwLTEtMTAyNHgxMzYuanBnIDEwMjR3IiBzaXplcz0iYXV0bywgKG1heC13aWR0aDogMTM2MHB4KSAxMDB2dywgMTM2MHB4IiAvPjwvYT48L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pgo=')); }; if (document.readyState === 'complete' || (document.readyState !== 'loading' && !document.documentElement.doScroll)) ai_run_470856123900 (); else document.addEventListener ('DOMContentLoaded', ai_run_470856123900); ai_js_code = true; </script> <div class="sticky-share-buttons"> <ul class="entry-meta-social-links-list"> <li><a data-wpel-link="external" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-linkedin" target="_blank" rel="follow external noopener">L</a></li> <li><a data-wpel-link="external" href="https://twitter.com/intent/tweet?text=Improving+Translation+Quality+with+Domain-Specific+Fine-Tuning+and+NVIDIA+NIM+%7C+NVIDIA+Technical+Blog+https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-twitter" target="_blank" rel="follow external noopener">T</a></li> <li><a data-wpel-link="external" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-facebook" target="_blank" rel="follow external noopener">F</a></li> <li><a data-wpel-link="external" href="https://www.reddit.com/submit?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F&amp;title=Improving+Translation+Quality+with+Domain-Specific+Fine-Tuning+and+NVIDIA+NIM+%7C+NVIDIA+Technical+Blog" class="for-reddit" target="_blank" rel="follow external noopener">R</a></li> <li><a href="mailto:?subject=I'd like to share a link with you&body=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fimproving-translation-quality-with-domain-specific-fine-tuning-and-nvidia-nim%2F" class="for-mail">E</a></li> </ul> </div> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-2b0defbeb07862260b2","applicationID":"745178505","transactionName":"Z10BbBRRW0QCAExfWF4XIlsSWVpZTApWUlJI","queueTime":0,"applicationTime":1499,"atts":"SxoCGlxLSEo=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10