import{s as oe,o as re,n as V}from"../chunks/scheduler.7da89386.js";import{S as ne,i as se,g as d,s as p,r as T,A as le,h as f,f as r,c as u,j as P,u as H,x as J,k as R,y as w,a as g,v,d as x,t as W,w as j}from"../chunks/index.20910acc.js";import{T as ie}from"../chunks/Tip.53e22153.js";import{D as ce}from"../chunks/Docstring.46cd0798.js";import{C as ae}from"../chunks/CodeBlock.cde23137.js";import{E as ee}from"../chunks/ExampleCodeBlock.7bb746b1.js";import{H as te}from"../chunks/Heading.4cf72777.js";function ge(y){let t,i="<code>HFSummaryWriter</code> is experimental. Its API is subject to change in the future without prior notice.";return{c(){t=d("p"),t.innerHTML=i},l(a){t=f(a,"P",{"data-svelte-h":!0}),J(t)!=="svelte-1jyxcko"&&(t.innerHTML=i)},m(a,l){g(a,t,l)},p:V,d(a){a&&r(t)}}}function pe(y){let t,i="Examples:",a,l,h;return l=new ae({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMEhGU3VtbWFyeVdyaXRlciUwQSUwQWxvZ2dlciUyMCUzRCUyMEhGU3VtbWFyeVdyaXRlcihyZXBvX2lkJTNEJTIydGVzdF9oZl9sb2dnZXIlMjIlMkMlMjBjb21taXRfZXZlcnklM0QxNSklMEFsb2dnZXIuYWRkX3NjYWxhciglMjJhJTIyJTJDJTIwMSklMEFsb2dnZXIuYWRkX3NjYWxhciglMjJiJTIyJTJDJTIwMiklMEElMEFsb2dnZXIuc2NoZWR1bGVyLnRyaWdnZXIoKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> HFSummaryWriter

<span class="hljs-comment"># Logs are automatically pushed every 15 minutes</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>logger = HFSummaryWriter(repo_id=<span class="hljs-string">&quot;test_hf_logger&quot;</span>, commit_every=<span class="hljs-number">15</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>logger.add_scalar(<span class="hljs-string">&quot;a&quot;</span>, <span class="hljs-number">1</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>logger.add_scalar(<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-number">2</span>)
...

<span class="hljs-comment"># You can also trigger a push manually</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>logger.scheduler.trigger()`,wrap:!1}}),{c(){t=d("p"),t.textContent=i,a=p(),T(l.$$.fragment)},l(n){t=f(n,"P",{"data-svelte-h":!0}),J(t)!=="svelte-kvfsh7"&&(t.textContent=i),a=u(n),H(l.$$.fragment,n)},m(n,m){g(n,t,m),g(n,a,m),v(l,n,m),h=!0},p:V,i(n){h||(x(l.$$.fragment,n),h=!0)},o(n){W(l.$$.fragment,n),h=!1},d(n){n&&(r(t),r(a)),j(l,n)}}}function ue(y){let t,i;return t=new ae({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMEhGU3VtbWFyeVdyaXRlciUwQSUwQXdpdGglMjBIRlN1bW1hcnlXcml0ZXIocmVwb19pZCUzRCUyMnRlc3RfaGZfbG9nZ2VyJTIyKSUyMGFzJTIwbG9nZ2VyJTNBJTBBJTIwJTIwJTIwJTIwbG9nZ2VyLmFkZF9zY2FsYXIoJTIyYSUyMiUyQyUyMDEpJTBBJTIwJTIwJTIwJTIwbG9nZ2VyLmFkZF9zY2FsYXIoJTIyYiUyMiUyQyUyMDIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> HFSummaryWriter

<span class="hljs-comment"># Logs are automatically pushed every 5 minutes (default) + when exiting the context manager</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> HFSummaryWriter(repo_id=<span class="hljs-string">&quot;test_hf_logger&quot;</span>) <span class="hljs-keyword">as</span> logger:
<span class="hljs-meta">... </span>    logger.add_scalar(<span class="hljs-string">&quot;a&quot;</span>, <span class="hljs-number">1</span>)
<span class="hljs-meta">... </span>    logger.add_scalar(<span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-number">2</span>)`,wrap:!1}}),{c(){T(t.$$.fragment)},l(a){H(t.$$.fragment,a)},m(a,l){v(t,a,l),i=!0},p:V,i(a){i||(x(t.$$.fragment,a),i=!0)},o(a){W(t.$$.fragment,a),i=!1},d(a){j(t,a)}}}function he(y){let t,i,a,l,h,n,m,N=`TensorBoard는 기계학습 실험을 위한 시각화 도구입니다. 주로 손실 및 정확도와 같은 지표를 추적 및 시각화하고, 모델 그래프와
히스토그램을 보여주고, 이미지를 표시하는 등 다양한 기능을 제공합니다. 또한 TensorBoard는 Hugging Face Hub와 잘 통합되어 있습니다.
<code>tfevents</code> 같은 TensorBoard 추적을 Hub에 푸시하면 Hub는 이를 자동으로 감지하여 시각화 인스턴스를 시작합니다.
TensorBoard와 Hub의 통합에 대한 자세한 정보는 <a href="https://huggingface.co/docs/hub/tensorboard" rel="nofollow">가이드</a>를 확인하세요.`,C,F,Q=`이 통합을 위해, <code>huggingface_hub</code>는 로그를 Hub로 푸시하기 위한 사용자 정의 로거를 제공합니다.
이 로거는 추가적인 코드 없이 <a href="https://tensorboardx.readthedocs.io/en/latest/tensorboard.html" rel="nofollow">SummaryWriter</a>의 대체제로 사용될 수 있습니다.
추적은 계속해서 로컬에 저장되며 백그라운드 작업이 일정한 시간마다 Hub에 푸시하는 형태로 동작합니다.`,Z,S,q,s,k,L,M,z="Wrapper around the tensorboard’s <code>SummaryWriter</code> to push training logs to the Hub.",E,I,A=`Data is logged locally and then pushed to the Hub asynchronously. Pushing data to the Hub is done in a separate
thread to avoid blocking the training script. In particular, if the upload fails for any reason (e.g. a connection
issue), the main script will not be interrupted. Data is automatically pushed to the Hub every <code>commit_every</code>
minutes (default to every 5 minutes).`,G,_,B,b,Y,$,X,U,D;return h=new te({props:{title:"TensorBoard 로거",local:"tensorboard-logger",headingTag:"h1"}}),S=new te({props:{title:"HFSummaryWriter",local:"huggingface_hub.HFSummaryWriter ][ huggingface_hub.HFSummaryWriter",headingTag:"h2"}}),k=new ce({props:{name:"class huggingface_hub.HFSummaryWriter",anchor:"huggingface_hub.HFSummaryWriter",parameters:[{name:"*args",val:""},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"huggingface_hub.HFSummaryWriter.repo_id",description:`<strong>repo_id</strong> (<code>str</code>) &#x2014;
The id of the repo to which the logs will be pushed.`,name:"repo_id"},{anchor:"huggingface_hub.HFSummaryWriter.logdir",description:`<strong>logdir</strong> (<code>str</code>, <em>optional</em>) &#x2014;
The directory where the logs will be written. If not specified, a local directory will be created by the
underlying <code>SummaryWriter</code> object.`,name:"logdir"},{anchor:"huggingface_hub.HFSummaryWriter.commit_every",description:`<strong>commit_every</strong> (<code>int</code> or <code>float</code>, <em>optional</em>) &#x2014;
The frequency (in minutes) at which the logs will be pushed to the Hub. Defaults to 5 minutes.`,name:"commit_every"},{anchor:"huggingface_hub.HFSummaryWriter.squash_history",description:`<strong>squash_history</strong> (<code>bool</code>, <em>optional</em>) &#x2014;
Whether to squash the history of the repo after each commit. Defaults to <code>False</code>. Squashing commits is
useful to avoid degraded performances on the repo when it grows too large.`,name:"squash_history"},{anchor:"huggingface_hub.HFSummaryWriter.repo_type",description:`<strong>repo_type</strong> (<code>str</code>, <em>optional</em>) &#x2014;
The type of the repo to which the logs will be pushed. Defaults to &#x201C;model&#x201D;.`,name:"repo_type"},{anchor:"huggingface_hub.HFSummaryWriter.repo_revision",description:`<strong>repo_revision</strong> (<code>str</code>, <em>optional</em>) &#x2014;
The revision of the repo to which the logs will be pushed. Defaults to &#x201C;main&#x201D;.`,name:"repo_revision"},{anchor:"huggingface_hub.HFSummaryWriter.repo_private",description:`<strong>repo_private</strong> (<code>bool</code>, <em>optional</em>) &#x2014;
Whether to create a private repo or not. Defaults to False. This argument is ignored if the repo already
exists.`,name:"repo_private"},{anchor:"huggingface_hub.HFSummaryWriter.path_in_repo",description:`<strong>path_in_repo</strong> (<code>str</code>, <em>optional</em>) &#x2014;
The path to the folder in the repo where the logs will be pushed. Defaults to &#x201C;tensorboard/&#x201C;.`,name:"path_in_repo"},{anchor:"huggingface_hub.HFSummaryWriter.repo_allow_patterns",description:`<strong>repo_allow_patterns</strong> (<code>List[str]</code> or <code>str</code>, <em>optional</em>) &#x2014;
A list of patterns to include in the upload. Defaults to <code>&quot;*.tfevents.*&quot;</code>. Check out the
<a href="https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder" rel="nofollow">upload guide</a> for more details.`,name:"repo_allow_patterns"},{anchor:"huggingface_hub.HFSummaryWriter.repo_ignore_patterns",description:`<strong>repo_ignore_patterns</strong> (<code>List[str]</code> or <code>str</code>, <em>optional</em>) &#x2014;
A list of patterns to exclude in the upload. Check out the
<a href="https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder" rel="nofollow">upload guide</a> for more details.`,name:"repo_ignore_patterns"},{anchor:"huggingface_hub.HFSummaryWriter.token",description:`<strong>token</strong> (<code>str</code>, <em>optional</em>) &#x2014;
Authentication token. Will default to the stored token. See <a href="https://huggingface.co/settings/token" rel="nofollow">https://huggingface.co/settings/token</a> for more
details
kwargs &#x2014;
Additional keyword arguments passed to <code>SummaryWriter</code>.`,name:"token"}],source:"https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_tensorboard_logger.py#L46"}}),_=new ie({props:{warning:!0,$$slots:{default:[ge]},$$scope:{ctx:y}}}),b=new ee({props:{anchor:"huggingface_hub.HFSummaryWriter.example",$$slots:{default:[pe]},$$scope:{ctx:y}}}),$=new ee({props:{anchor:"huggingface_hub.HFSummaryWriter.example-2",$$slots:{default:[ue]},$$scope:{ctx:y}}}),{c(){t=d("meta"),i=p(),a=d("p"),l=p(),T(h.$$.fragment),n=p(),m=d("p"),m.innerHTML=N,C=p(),F=d("p"),F.innerHTML=Q,Z=p(),T(S.$$.fragment),q=p(),s=d("div"),T(k.$$.fragment),L=p(),M=d("p"),M.innerHTML=z,E=p(),I=d("p"),I.innerHTML=A,G=p(),T(_.$$.fragment),B=p(),T(b.$$.fragment),Y=p(),T($.$$.fragment),X=p(),U=d("p"),this.h()},l(e){const o=le("svelte-u9bgzb",document.head);t=f(o,"META",{name:!0,content:!0}),o.forEach(r),i=u(e),a=f(e,"P",{}),P(a).forEach(r),l=u(e),H(h.$$.fragment,e),n=u(e),m=f(e,"P",{"data-svelte-h":!0}),J(m)!=="svelte-a0nj69"&&(m.innerHTML=N),C=u(e),F=f(e,"P",{"data-svelte-h":!0}),J(F)!=="svelte-8u26do"&&(F.innerHTML=Q),Z=u(e),H(S.$$.fragment,e),q=u(e),s=f(e,"DIV",{class:!0});var c=P(s);H(k.$$.fragment,c),L=u(c),M=f(c,"P",{"data-svelte-h":!0}),J(M)!=="svelte-1gj9gtd"&&(M.innerHTML=z),E=u(c),I=f(c,"P",{"data-svelte-h":!0}),J(I)!=="svelte-37hlnu"&&(I.innerHTML=A),G=u(c),H(_.$$.fragment,c),B=u(c),H(b.$$.fragment,c),Y=u(c),H($.$$.fragment,c),c.forEach(r),X=u(e),U=f(e,"P",{}),P(U).forEach(r),this.h()},h(){R(t,"name","hf:doc:metadata"),R(t,"content",me),R(s,"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,o){w(document.head,t),g(e,i,o),g(e,a,o),g(e,l,o),v(h,e,o),g(e,n,o),g(e,m,o),g(e,C,o),g(e,F,o),g(e,Z,o),v(S,e,o),g(e,q,o),g(e,s,o),v(k,s,null),w(s,L),w(s,M),w(s,E),w(s,I),w(s,G),v(_,s,null),w(s,B),v(b,s,null),w(s,Y),v($,s,null),g(e,X,o),g(e,U,o),D=!0},p(e,[o]){const c={};o&2&&(c.$$scope={dirty:o,ctx:e}),_.$set(c);const K={};o&2&&(K.$$scope={dirty:o,ctx:e}),b.$set(K);const O={};o&2&&(O.$$scope={dirty:o,ctx:e}),$.$set(O)},i(e){D||(x(h.$$.fragment,e),x(S.$$.fragment,e),x(k.$$.fragment,e),x(_.$$.fragment,e),x(b.$$.fragment,e),x($.$$.fragment,e),D=!0)},o(e){W(h.$$.fragment,e),W(S.$$.fragment,e),W(k.$$.fragment,e),W(_.$$.fragment,e),W(b.$$.fragment,e),W($.$$.fragment,e),D=!1},d(e){e&&(r(i),r(a),r(l),r(n),r(m),r(C),r(F),r(Z),r(q),r(s),r(X),r(U)),r(t),j(h,e),j(S,e),j(k),j(_),j(b),j($)}}}const me='{"title":"TensorBoard 로거","local":"tensorboard-logger","sections":[{"title":"HFSummaryWriter","local":"huggingface_hub.HFSummaryWriter ][ huggingface_hub.HFSummaryWriter","sections":[],"depth":2}],"depth":1}';function de(y){return re(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class He extends ne{constructor(t){super(),se(this,t,de,he,oe,{})}}export{He as component};
