Buckets:
| import{s as Ie,o as Ne,n as Je}from"../chunks/scheduler.8c3d61f6.js";import{S as Le,i as Ze,g as c,s as r,r as h,A as We,h as l,f as n,c as a,j as U,u as _,x as M,k as E,y as t,a as g,v as b,d as x,t as v,w as y}from"../chunks/index.da70eac4.js";import{T as Re}from"../chunks/Tip.1d9b8c37.js";import{D as K}from"../chunks/Docstring.d7448bb3.js";import{C as Ge}from"../chunks/CodeBlock.a9c4becf.js";import{E as He}from"../chunks/ExampleCodeBlock.bdbc5937.js";import{H as Ee,E as Ve}from"../chunks/getInferenceSnippets.1d18021a.js";function Fe(V){let o,w='To use private or <a href="https://huggingface.co/docs/hub/models-gated#gated-models" rel="nofollow">gated</a> models, log-in with <code>huggingface-cli login</code>.';return{c(){o=c("p"),o.innerHTML=w},l(u){o=l(u,"P",{"data-svelte-h":!0}),M(o)!=="svelte-i4hp16"&&(o.innerHTML=w)},m(u,m){g(u,o,m)},p:Je,d(u){u&&n(o)}}}function Ae(V){let o,w="Examples:",u,m,p;return m=new Ge({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEREUE1TY2hlZHVsZXIlMkMlMjBERElNU2NoZWR1bGVyJTJDJTIwUE5ETVNjaGVkdWxlciUwQSUwQSUyMyUyMERvd25sb2FkJTIwc2NoZWR1bGVyJTIwZnJvbSUyMGh1Z2dpbmdmYWNlLmNvJTIwYW5kJTIwY2FjaGUuJTBBc2NoZWR1bGVyJTIwJTNEJTIwRERQTVNjaGVkdWxlci5mcm9tX3ByZXRyYWluZWQoJTIyZ29vZ2xlJTJGZGRwbS1jaWZhcjEwLTMyJTIyKSUwQSUwQSUyMyUyMEluc3RhbnRpYXRlJTIwRERJTSUyMHNjaGVkdWxlciUyMGNsYXNzJTIwd2l0aCUyMHNhbWUlMjBjb25maWclMjBhcyUyMEREUE0lMEFzY2hlZHVsZXIlMjAlM0QlMjBERElNU2NoZWR1bGVyLmZyb21fY29uZmlnKHNjaGVkdWxlci5jb25maWcpJTBBJTBBJTIzJTIwSW5zdGFudGlhdGUlMjBQTkRNJTIwc2NoZWR1bGVyJTIwY2xhc3MlMjB3aXRoJTIwc2FtZSUyMGNvbmZpZyUyMGFzJTIwRERQTSUwQXNjaGVkdWxlciUyMCUzRCUyMFBORE1TY2hlZHVsZXIuZnJvbV9jb25maWcoc2NoZWR1bGVyLmNvbmZpZyk=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DDPMScheduler, DDIMScheduler, PNDMScheduler | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># Download scheduler from huggingface.co and cache.</span> | |
| <span class="hljs-meta">>>> </span>scheduler = DDPMScheduler.from_pretrained(<span class="hljs-string">"google/ddpm-cifar10-32"</span>) | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># Instantiate DDIM scheduler class with same config as DDPM</span> | |
| <span class="hljs-meta">>>> </span>scheduler = DDIMScheduler.from_config(scheduler.config) | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># Instantiate PNDM scheduler class with same config as DDPM</span> | |
| <span class="hljs-meta">>>> </span>scheduler = PNDMScheduler.from_config(scheduler.config)`,wrap:!1}}),{c(){o=c("p"),o.textContent=w,u=r(),h(m.$$.fragment)},l(f){o=l(f,"P",{"data-svelte-h":!0}),M(o)!=="svelte-kvfsh7"&&(o.textContent=w),u=a(f),_(m.$$.fragment,f)},m(f,$){g(f,o,$),g(f,u,$),b(m,f,$),p=!0},p:Je,i(f){p||(x(m.$$.fragment,f),p=!0)},o(f){v(m.$$.fragment,f),p=!1},d(f){f&&(n(o),n(u)),y(m,f)}}}function Be(V){let o,w,u,m,p,f,$,we='Schedulers from <a href="/docs/diffusers/pr_11739/en/api/schedulers/overview#diffusers.SchedulerMixin">SchedulerMixin</a> and models from <a href="/docs/diffusers/pr_11739/en/api/models/overview#diffusers.ModelMixin">ModelMixin</a> inherit from <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin">ConfigMixin</a> which stores all the parameters that are passed to their respective <code>__init__</code> methods in a JSON-configuration file.',te,k,oe,J,ne,i,I,le,F,Ce=`Base class for all configuration classes. All configuration parameters are stored under <code>self.config</code>. Also | |
| provides the <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin.from_config">from_config()</a> and <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin.save_config">save_config()</a> methods for loading, downloading, and | |
| saving classes that inherit from <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin">ConfigMixin</a>.`,fe,A,ke="Class attributes:",ue,B,Te=`<li><strong>config_name</strong> (<code>str</code>) — A filename under which the config should stored when calling | |
| <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin.save_config">save_config()</a> (should be overridden by parent class).</li> <li><strong>ignore_for_config</strong> (<code>List[str]</code>) — A list of attributes that should not be saved in the config (should be | |
| overridden by subclass).</li> <li><strong>has_compatibles</strong> (<code>bool</code>) — Whether the class has compatible classes (should be overridden by subclass).</li> <li><strong>_deprecated_kwargs</strong> (<code>List[str]</code>) — Keyword arguments that are deprecated. Note that the <code>init</code> function | |
| should only have a <code>kwargs</code> argument if at least one argument is deprecated (should be overridden by | |
| subclass).</li>`,ge,T,N,me,z,je="Load a model or scheduler configuration.",pe,C,L,he,Y,De="Instantiate a Python class from a config dictionary.",_e,j,be,D,Z,xe,Q,Pe=`Save a configuration object to the directory specified in <code>save_directory</code> so that it can be reloaded using the | |
| <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin.from_config">from_config()</a> class method.`,ve,P,W,ye,q,Se="Save the configuration instance’s parameters to a JSON file.",$e,S,R,Me,O,Ue="Serializes the configuration instance to a JSON string.",se,G,ie,ee,re;return p=new Ee({props:{title:"Configuration",local:"configuration",headingTag:"h1"}}),k=new Re({props:{$$slots:{default:[Fe]},$$scope:{ctx:V}}}),J=new Ee({props:{title:"ConfigMixin",local:"diffusers.ConfigMixin",headingTag:"h2"}}),I=new K({props:{name:"class diffusers.ConfigMixin",anchor:"diffusers.ConfigMixin",parameters:[],source:"https://github.com/huggingface/diffusers/blob/vr_11739/src/diffusers/configuration_utils.py#L88"}}),N=new K({props:{name:"load_config",anchor:"diffusers.ConfigMixin.load_config",parameters:[{name:"pretrained_model_name_or_path",val:": typing.Union[str, os.PathLike]"},{name:"return_unused_kwargs",val:" = False"},{name:"return_commit_hash",val:" = False"},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"diffusers.ConfigMixin.load_config.pretrained_model_name_or_path",description:`<strong>pretrained_model_name_or_path</strong> (<code>str</code> or <code>os.PathLike</code>, <em>optional</em>) — | |
| Can be either:</p> | |
| <ul> | |
| <li>A string, the <em>model id</em> (for example <code>google/ddpm-celebahq-256</code>) of a pretrained model hosted on | |
| the Hub.</li> | |
| <li>A path to a <em>directory</em> (for example <code>./my_model_directory</code>) containing model weights saved with | |
| <a href="/docs/diffusers/pr_11739/en/api/configuration#diffusers.ConfigMixin.save_config">save_config()</a>.</li> | |
| </ul>`,name:"pretrained_model_name_or_path"},{anchor:"diffusers.ConfigMixin.load_config.cache_dir",description:`<strong>cache_dir</strong> (<code>Union[str, os.PathLike]</code>, <em>optional</em>) — | |
| Path to a directory where a downloaded pretrained model configuration is cached if the standard cache | |
| is not used.`,name:"cache_dir"},{anchor:"diffusers.ConfigMixin.load_config.force_download",description:`<strong>force_download</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) — | |
| Whether or not to force the (re-)download of the model weights and configuration files, overriding the | |
| cached versions if they exist.`,name:"force_download"},{anchor:"diffusers.ConfigMixin.load_config.proxies",description:`<strong>proxies</strong> (<code>Dict[str, str]</code>, <em>optional</em>) — | |
| A dictionary of proxy servers to use by protocol or endpoint, for example, <code>{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}</code>. The proxies are used on each request.`,name:"proxies"},{anchor:"diffusers.ConfigMixin.load_config.output_loading_info(bool,",description:`<strong>output_loading_info(<code>bool</code>,</strong> <em>optional</em>, defaults to <code>False</code>) — | |
| Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages.`,name:"output_loading_info(bool,"},{anchor:"diffusers.ConfigMixin.load_config.local_files_only",description:`<strong>local_files_only</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) — | |
| Whether to only load local model weights and configuration files or not. If set to <code>True</code>, the model | |
| won’t be downloaded from the Hub.`,name:"local_files_only"},{anchor:"diffusers.ConfigMixin.load_config.token",description:`<strong>token</strong> (<code>str</code> or <em>bool</em>, <em>optional</em>) — | |
| The token to use as HTTP bearer authorization for remote files. If <code>True</code>, the token generated from | |
| <code>diffusers-cli login</code> (stored in <code>~/.huggingface</code>) is used.`,name:"token"},{anchor:"diffusers.ConfigMixin.load_config.revision",description:`<strong>revision</strong> (<code>str</code>, <em>optional</em>, defaults to <code>"main"</code>) — | |
| The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier | |
| allowed by Git.`,name:"revision"},{anchor:"diffusers.ConfigMixin.load_config.subfolder",description:`<strong>subfolder</strong> (<code>str</code>, <em>optional</em>, defaults to <code>""</code>) — | |
| The subfolder location of a model file within a larger model repository on the Hub or locally.`,name:"subfolder"},{anchor:"diffusers.ConfigMixin.load_config.return_unused_kwargs",description:"<strong>return_unused_kwargs</strong> (<code>bool</code>, <em>optional</em>, defaults to `False) —\nWhether unused keyword arguments of the config are returned.",name:"return_unused_kwargs"},{anchor:"diffusers.ConfigMixin.load_config.return_commit_hash",description:"<strong>return_commit_hash</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False) -- Whether the </code>commit_hash` of the loaded configuration are returned.",name:"return_commit_hash"}],source:"https://github.com/huggingface/diffusers/blob/vr_11739/src/diffusers/configuration_utils.py#L289",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>A dictionary of all the parameters stored in a JSON configuration file.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>dict</code></p> | |
| `}}),L=new K({props:{name:"from_config",anchor:"diffusers.ConfigMixin.from_config",parameters:[{name:"config",val:": typing.Union[diffusers.configuration_utils.FrozenDict, typing.Dict[str, typing.Any]] = None"},{name:"return_unused_kwargs",val:" = False"},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"diffusers.ConfigMixin.from_config.config",description:`<strong>config</strong> (<code>Dict[str, Any]</code>) — | |
| A config dictionary from which the Python class is instantiated. Make sure to only load configuration | |
| files of compatible classes.`,name:"config"},{anchor:"diffusers.ConfigMixin.from_config.return_unused_kwargs",description:`<strong>return_unused_kwargs</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) — | |
| Whether kwargs that are not consumed by the Python class should be returned or not.`,name:"return_unused_kwargs"},{anchor:"diffusers.ConfigMixin.from_config.kwargs",description:`<strong>kwargs</strong> (remaining dictionary of keyword arguments, <em>optional</em>) — | |
| Can be used to update the configuration object (after it is loaded) and initiate the Python class. | |
| <code>**kwargs</code> are passed directly to the underlying scheduler/model’s <code>__init__</code> method and eventually | |
| overwrite the same named arguments in <code>config</code>.`,name:"kwargs"}],source:"https://github.com/huggingface/diffusers/blob/vr_11739/src/diffusers/configuration_utils.py#L188",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>A model or scheduler object instantiated from a config dictionary.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><a | |
| href="/docs/diffusers/pr_11739/en/api/models/overview#diffusers.ModelMixin" | |
| >ModelMixin</a> or <a | |
| href="/docs/diffusers/pr_11739/en/api/schedulers/overview#diffusers.SchedulerMixin" | |
| >SchedulerMixin</a></p> | |
| `}}),j=new He({props:{anchor:"diffusers.ConfigMixin.from_config.example",$$slots:{default:[Ae]},$$scope:{ctx:V}}}),Z=new K({props:{name:"save_config",anchor:"diffusers.ConfigMixin.save_config",parameters:[{name:"save_directory",val:": typing.Union[str, os.PathLike]"},{name:"push_to_hub",val:": bool = False"},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"diffusers.ConfigMixin.save_config.save_directory",description:`<strong>save_directory</strong> (<code>str</code> or <code>os.PathLike</code>) — | |
| Directory where the configuration JSON file is saved (will be created if it does not exist).`,name:"save_directory"},{anchor:"diffusers.ConfigMixin.save_config.push_to_hub",description:`<strong>push_to_hub</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) — | |
| Whether or not to push your model to the Hugging Face Hub after saving it. You can specify the | |
| repository you want to push to with <code>repo_id</code> (will default to the name of <code>save_directory</code> in your | |
| namespace).`,name:"push_to_hub"},{anchor:"diffusers.ConfigMixin.save_config.kwargs",description:`<strong>kwargs</strong> (<code>Dict[str, Any]</code>, <em>optional</em>) — | |
| Additional keyword arguments passed along to the <a href="/docs/diffusers/pr_11739/en/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub">push_to_hub()</a> method.`,name:"kwargs"}],source:"https://github.com/huggingface/diffusers/blob/vr_11739/src/diffusers/configuration_utils.py#L146"}}),W=new K({props:{name:"to_json_file",anchor:"diffusers.ConfigMixin.to_json_file",parameters:[{name:"json_file_path",val:": typing.Union[str, os.PathLike]"}],parametersDescription:[{anchor:"diffusers.ConfigMixin.to_json_file.json_file_path",description:`<strong>json_file_path</strong> (<code>str</code> or <code>os.PathLike</code>) — | |
| Path to the JSON file to save a configuration instance’s parameters.`,name:"json_file_path"}],source:"https://github.com/huggingface/diffusers/blob/vr_11739/src/diffusers/configuration_utils.py#L622"}}),R=new K({props:{name:"to_json_string",anchor:"diffusers.ConfigMixin.to_json_string",parameters:[],source:"https://github.com/huggingface/diffusers/blob/vr_11739/src/diffusers/configuration_utils.py#L587",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p>String containing all the attributes that make up the configuration instance in JSON format.</p> | |
| `,returnType:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>str</code></p> | |
| `}}),G=new Ve({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/configuration.md"}}),{c(){o=c("meta"),w=r(),u=c("p"),m=r(),h(p.$$.fragment),f=r(),$=c("p"),$.innerHTML=we,te=r(),h(k.$$.fragment),oe=r(),h(J.$$.fragment),ne=r(),i=c("div"),h(I.$$.fragment),le=r(),F=c("p"),F.innerHTML=Ce,fe=r(),A=c("p"),A.textContent=ke,ue=r(),B=c("ul"),B.innerHTML=Te,ge=r(),T=c("div"),h(N.$$.fragment),me=r(),z=c("p"),z.textContent=je,pe=r(),C=c("div"),h(L.$$.fragment),he=r(),Y=c("p"),Y.textContent=De,_e=r(),h(j.$$.fragment),be=r(),D=c("div"),h(Z.$$.fragment),xe=r(),Q=c("p"),Q.innerHTML=Pe,ve=r(),P=c("div"),h(W.$$.fragment),ye=r(),q=c("p"),q.textContent=Se,$e=r(),S=c("div"),h(R.$$.fragment),Me=r(),O=c("p"),O.textContent=Ue,se=r(),h(G.$$.fragment),ie=r(),ee=c("p"),this.h()},l(e){const s=We("svelte-u9bgzb",document.head);o=l(s,"META",{name:!0,content:!0}),s.forEach(n),w=a(e),u=l(e,"P",{}),U(u).forEach(n),m=a(e),_(p.$$.fragment,e),f=a(e),$=l(e,"P",{"data-svelte-h":!0}),M($)!=="svelte-cn3j17"&&($.innerHTML=we),te=a(e),_(k.$$.fragment,e),oe=a(e),_(J.$$.fragment,e),ne=a(e),i=l(e,"DIV",{class:!0});var d=U(i);_(I.$$.fragment,d),le=a(d),F=l(d,"P",{"data-svelte-h":!0}),M(F)!=="svelte-1ds76gz"&&(F.innerHTML=Ce),fe=a(d),A=l(d,"P",{"data-svelte-h":!0}),M(A)!=="svelte-wz8va1"&&(A.textContent=ke),ue=a(d),B=l(d,"UL",{"data-svelte-h":!0}),M(B)!=="svelte-18ukgf0"&&(B.innerHTML=Te),ge=a(d),T=l(d,"DIV",{class:!0});var H=U(T);_(N.$$.fragment,H),me=a(H),z=l(H,"P",{"data-svelte-h":!0}),M(z)!=="svelte-k51ly"&&(z.textContent=je),H.forEach(n),pe=a(d),C=l(d,"DIV",{class:!0});var X=U(C);_(L.$$.fragment,X),he=a(X),Y=l(X,"P",{"data-svelte-h":!0}),M(Y)!=="svelte-1vaeeyi"&&(Y.textContent=De),_e=a(X),_(j.$$.fragment,X),X.forEach(n),be=a(d),D=l(d,"DIV",{class:!0});var ae=U(D);_(Z.$$.fragment,ae),xe=a(ae),Q=l(ae,"P",{"data-svelte-h":!0}),M(Q)!=="svelte-kmewni"&&(Q.innerHTML=Pe),ae.forEach(n),ve=a(d),P=l(d,"DIV",{class:!0});var de=U(P);_(W.$$.fragment,de),ye=a(de),q=l(de,"P",{"data-svelte-h":!0}),M(q)!=="svelte-if97l3"&&(q.textContent=Se),de.forEach(n),$e=a(d),S=l(d,"DIV",{class:!0});var ce=U(S);_(R.$$.fragment,ce),Me=a(ce),O=l(ce,"P",{"data-svelte-h":!0}),M(O)!=="svelte-tueex0"&&(O.textContent=Ue),ce.forEach(n),d.forEach(n),se=a(e),_(G.$$.fragment,e),ie=a(e),ee=l(e,"P",{}),U(ee).forEach(n),this.h()},h(){E(o,"name","hf:doc:metadata"),E(o,"content",ze),E(T,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),E(C,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),E(D,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),E(P,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),E(S,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),E(i,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,s){t(document.head,o),g(e,w,s),g(e,u,s),g(e,m,s),b(p,e,s),g(e,f,s),g(e,$,s),g(e,te,s),b(k,e,s),g(e,oe,s),b(J,e,s),g(e,ne,s),g(e,i,s),b(I,i,null),t(i,le),t(i,F),t(i,fe),t(i,A),t(i,ue),t(i,B),t(i,ge),t(i,T),b(N,T,null),t(T,me),t(T,z),t(i,pe),t(i,C),b(L,C,null),t(C,he),t(C,Y),t(C,_e),b(j,C,null),t(i,be),t(i,D),b(Z,D,null),t(D,xe),t(D,Q),t(i,ve),t(i,P),b(W,P,null),t(P,ye),t(P,q),t(i,$e),t(i,S),b(R,S,null),t(S,Me),t(S,O),g(e,se,s),b(G,e,s),g(e,ie,s),g(e,ee,s),re=!0},p(e,[s]){const d={};s&2&&(d.$$scope={dirty:s,ctx:e}),k.$set(d);const H={};s&2&&(H.$$scope={dirty:s,ctx:e}),j.$set(H)},i(e){re||(x(p.$$.fragment,e),x(k.$$.fragment,e),x(J.$$.fragment,e),x(I.$$.fragment,e),x(N.$$.fragment,e),x(L.$$.fragment,e),x(j.$$.fragment,e),x(Z.$$.fragment,e),x(W.$$.fragment,e),x(R.$$.fragment,e),x(G.$$.fragment,e),re=!0)},o(e){v(p.$$.fragment,e),v(k.$$.fragment,e),v(J.$$.fragment,e),v(I.$$.fragment,e),v(N.$$.fragment,e),v(L.$$.fragment,e),v(j.$$.fragment,e),v(Z.$$.fragment,e),v(W.$$.fragment,e),v(R.$$.fragment,e),v(G.$$.fragment,e),re=!1},d(e){e&&(n(w),n(u),n(m),n(f),n($),n(te),n(oe),n(ne),n(i),n(se),n(ie),n(ee)),n(o),y(p,e),y(k,e),y(J,e),y(I),y(N),y(L),y(j),y(Z),y(W),y(R),y(G,e)}}}const ze='{"title":"Configuration","local":"configuration","sections":[{"title":"ConfigMixin","local":"diffusers.ConfigMixin","sections":[],"depth":2}],"depth":1}';function Ye(V){return Ne(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ot extends Le{constructor(o){super(),Ze(this,o,Ye,Be,Ie,{})}}export{ot as component}; | |
Xet Storage Details
- Size:
- 19.5 kB
- Xet hash:
- c65a9ef26b6d2d77a00ba9f29773001e6fb2d8099f60c4876d1ef5412a7b9c72
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.