import{s as ie,o as le,n as ne}from"../chunks/scheduler.0cf4ef2e.js";import{S as ce,i as me,e as g,s as c,c as b,h as ue,a as f,d as a,b as m,f as P,g as _,j as I,k as V,l as y,m as i,n as w,t as $,o as M,p as T}from"../chunks/index.abc433bf.js";import{C as pe,H as ae,E as he}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.c5e6f579.js";import{D as de}from"../chunks/Docstring.d25cce65.js";import{C as se}from"../chunks/CodeBlock.0951eb7c.js";import{E as oe}from"../chunks/ExampleCodeBlock.51f0b6db.js";function ge(U){let r,p="Examples:",o,u,h;return u=new se({props:{code:"JTIzJTIwVGFrZW4lMjBmcm9tJTIwaHR0cHMlM0ElMkYlMkZweXRvcmNoLm9yZyUyRmRvY3MlMkZzdGFibGUlMkZ0ZW5zb3Jib2FyZC5odG1sJTBBLSUyMGZyb20lMjB0b3JjaC51dGlscy50ZW5zb3Jib2FyZCUyMGltcG9ydCUyMFN1bW1hcnlXcml0ZXIlMEElMkIlMjBmcm9tJTIwaHVnZ2luZ2ZhY2VfaHViJTIwaW1wb3J0JTIwSEZTdW1tYXJ5V3JpdGVyJTBBJTBBaW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBLSUyMHdyaXRlciUyMCUzRCUyMFN1bW1hcnlXcml0ZXIoKSUwQSUyQiUyMHdyaXRlciUyMCUzRCUyMEhGU3VtbWFyeVdyaXRlcihyZXBvX2lkJTNEJTIydXNlcm5hbWUlMkZteS10cmFpbmVkLW1vZGVsJTIyKSUwQSUwQWZvciUyMG5faXRlciUyMGluJTIwcmFuZ2UoMTAwKSUzQSUwQSUyMCUyMCUyMCUyMHdyaXRlci5hZGRfc2NhbGFyKCdMb3NzJTJGdHJhaW4nJTJDJTIwbnAucmFuZG9tLnJhbmRvbSgpJTJDJTIwbl9pdGVyKSUwQSUyMCUyMCUyMCUyMHdyaXRlci5hZGRfc2NhbGFyKCdMb3NzJTJGdGVzdCclMkMlMjBucC5yYW5kb20ucmFuZG9tKCklMkMlMjBuX2l0ZXIpJTBBJTIwJTIwJTIwJTIwd3JpdGVyLmFkZF9zY2FsYXIoJ0FjY3VyYWN5JTJGdHJhaW4nJTJDJTIwbnAucmFuZG9tLnJhbmRvbSgpJTJDJTIwbl9pdGVyKSUwQSUyMCUyMCUyMCUyMHdyaXRlci5hZGRfc2NhbGFyKCdBY2N1cmFjeSUyRnRlc3QnJTJDJTIwbnAucmFuZG9tLnJhbmRvbSgpJTJDJTIwbl9pdGVyKQ==",highlighted:`# Taken from https://pytorch.org/docs/stable/tensorboard.html
<span class="hljs-deletion">- from torch.utils.tensorboard import SummaryWriter</span>
<span class="hljs-addition">+ from huggingface_hub import HFSummaryWriter</span>

import numpy as np

<span class="hljs-deletion">- writer = SummaryWriter()</span>
<span class="hljs-addition">+ writer = HFSummaryWriter(repo_id=&quot;username/my-trained-model&quot;)</span>

for n_iter in range(100):
    writer.add_scalar(&#x27;Loss/train&#x27;, np.random.random(), n_iter)
    writer.add_scalar(&#x27;Loss/test&#x27;, np.random.random(), n_iter)
    writer.add_scalar(&#x27;Accuracy/train&#x27;, np.random.random(), n_iter)
    writer.add_scalar(&#x27;Accuracy/test&#x27;, np.random.random(), n_iter)`,wrap:!1}}),{c(){r=g("p"),r.textContent=p,o=c(),b(u.$$.fragment)},l(n){r=f(n,"P",{"data-svelte-h":!0}),I(r)!=="svelte-kvfsh7"&&(r.textContent=p),o=m(n),_(u.$$.fragment,n)},m(n,d){i(n,r,d),i(n,o,d),w(u,n,d),h=!0},p:ne,i(n){h||($(u.$$.fragment,n),h=!0)},o(n){M(u.$$.fragment,n),h=!1},d(n){n&&(a(r),a(o)),T(u,n)}}}function fe(U){let r,p;return r=new se({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMEhGU3VtbWFyeVdyaXRlciUwQSUwQXdpdGglMjBIRlN1bW1hcnlXcml0ZXIocmVwb19pZCUzRCUyMnRlc3RfaGZfbG9nZ2VyJTIyJTJDJTIwY29tbWl0X2V2ZXJ5JTNEMTUpJTIwYXMlMjBsb2dnZXIlM0ElMEElMjAlMjAlMjAlMjBsb2dnZXIuYWRkX3NjYWxhciglMjJhJTIyJTJDJTIwMSklMEElMjAlMjAlMjAlMjBsb2dnZXIuYWRkX3NjYWxhciglMjJiJTIyJTJDJTIwMik=",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 (5 by 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>, commit_every=<span class="hljs-number">15</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(){b(r.$$.fragment)},l(o){_(r.$$.fragment,o)},m(o,u){w(r,o,u),p=!0},p:ne,i(o){p||($(r.$$.fragment,o),p=!0)},o(o){M(r.$$.fragment,o),p=!1},d(o){T(r,o)}}}function ye(U){let r,p,o,u,h,n,d,Z,S,Q=`TensorBoard는 기계학습 실험을 위한 시각화 도구입니다. 주로 손실 및 정확도와 같은 지표를 추적 및 시각화하고, 모델 그래프와
히스토그램을 보여주고, 이미지를 표시하는 등 다양한 기능을 제공합니다. 또한 TensorBoard는 Hugging Face Hub와 잘 통합되어 있습니다.
<code>tfevents</code> 같은 TensorBoard 추적을 Hub에 푸시하면 Hub는 이를 자동으로 감지하여 시각화 인스턴스를 시작합니다.
TensorBoard와 Hub의 통합에 대한 자세한 정보는 <a href="https://huggingface.co/docs/hub/tensorboard" rel="nofollow">가이드</a>를 확인하세요.`,B,W,K=`이 통합을 위해, <code>huggingface_hub</code>는 로그를 Hub로 푸시하기 위한 사용자 정의 로거를 제공합니다.
이 로거는 추가적인 코드 없이 <a href="https://tensorboardx.readthedocs.io/en/latest/tensorboard.html" rel="nofollow">SummaryWriter</a>의 대체제로 사용될 수 있습니다.
추적은 계속해서 로컬에 저장되며 백그라운드 작업이 일정한 시간마다 Hub에 푸시하는 형태로 동작합니다.`,X,x,R,s,v,q,j,O="Wrapper around the tensorboard’s <code>SummaryWriter</code> to push training logs to the Hub.",A,C,ee=`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).`,N,k,te="<p><code>HFSummaryWriter</code> is experimental. Its API is subject to change in the future without prior notice.</p>",Y,J,z,H,L,F,E,G,D;return h=new pe({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),d=new ae({props:{title:"TensorBoard 로거",local:"tensorboard-logger",headingTag:"h1"}}),x=new ae({props:{title:"HFSummaryWriter",local:"huggingface_hub.HFSummaryWriter ][ huggingface_hub.HFSummaryWriter",headingTag:"h2"}}),v=new de({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 make the repo private. If <code>None</code> (default), the repo will be public unless the organization&#x2019;s default is private. This value 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`,name:"token"},{anchor:"huggingface_hub.HFSummaryWriter.kwargs",description:`<strong>kwargs</strong> &#x2014;
Additional keyword arguments passed to <code>SummaryWriter</code>.`,name:"kwargs"}],source:"https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_tensorboard_logger.py#L46"}}),J=new oe({props:{anchor:"huggingface_hub.HFSummaryWriter.example",$$slots:{default:[ge]},$$scope:{ctx:U}}}),H=new oe({props:{anchor:"huggingface_hub.HFSummaryWriter.example-2",$$slots:{default:[fe]},$$scope:{ctx:U}}}),F=new he({props:{source:"https://github.com/huggingface/huggingface_hub/blob/main/docs/source/ko/package_reference/tensorboard.md"}}),{c(){r=g("meta"),p=c(),o=g("p"),u=c(),b(h.$$.fragment),n=c(),b(d.$$.fragment),Z=c(),S=g("p"),S.innerHTML=Q,B=c(),W=g("p"),W.innerHTML=K,X=c(),b(x.$$.fragment),R=c(),s=g("div"),b(v.$$.fragment),q=c(),j=g("p"),j.innerHTML=O,A=c(),C=g("p"),C.innerHTML=ee,N=c(),k=g("blockquote"),k.innerHTML=te,Y=c(),b(J.$$.fragment),z=c(),b(H.$$.fragment),L=c(),b(F.$$.fragment),E=c(),G=g("p"),this.h()},l(e){const t=ue("svelte-u9bgzb",document.head);r=f(t,"META",{name:!0,content:!0}),t.forEach(a),p=m(e),o=f(e,"P",{}),P(o).forEach(a),u=m(e),_(h.$$.fragment,e),n=m(e),_(d.$$.fragment,e),Z=m(e),S=f(e,"P",{"data-svelte-h":!0}),I(S)!=="svelte-a0nj69"&&(S.innerHTML=Q),B=m(e),W=f(e,"P",{"data-svelte-h":!0}),I(W)!=="svelte-8u26do"&&(W.innerHTML=K),X=m(e),_(x.$$.fragment,e),R=m(e),s=f(e,"DIV",{class:!0});var l=P(s);_(v.$$.fragment,l),q=m(l),j=f(l,"P",{"data-svelte-h":!0}),I(j)!=="svelte-1gj9gtd"&&(j.innerHTML=O),A=m(l),C=f(l,"P",{"data-svelte-h":!0}),I(C)!=="svelte-37hlnu"&&(C.innerHTML=ee),N=m(l),k=f(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),I(k)!=="svelte-fwqyh8"&&(k.innerHTML=te),Y=m(l),_(J.$$.fragment,l),z=m(l),_(H.$$.fragment,l),l.forEach(a),L=m(e),_(F.$$.fragment,e),E=m(e),G=f(e,"P",{}),P(G).forEach(a),this.h()},h(){V(r,"name","hf:doc:metadata"),V(r,"content",be),V(k,"class","warning"),V(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,t){y(document.head,r),i(e,p,t),i(e,o,t),i(e,u,t),w(h,e,t),i(e,n,t),w(d,e,t),i(e,Z,t),i(e,S,t),i(e,B,t),i(e,W,t),i(e,X,t),w(x,e,t),i(e,R,t),i(e,s,t),w(v,s,null),y(s,q),y(s,j),y(s,A),y(s,C),y(s,N),y(s,k),y(s,Y),w(J,s,null),y(s,z),w(H,s,null),i(e,L,t),w(F,e,t),i(e,E,t),i(e,G,t),D=!0},p(e,[t]){const l={};t&2&&(l.$$scope={dirty:t,ctx:e}),J.$set(l);const re={};t&2&&(re.$$scope={dirty:t,ctx:e}),H.$set(re)},i(e){D||($(h.$$.fragment,e),$(d.$$.fragment,e),$(x.$$.fragment,e),$(v.$$.fragment,e),$(J.$$.fragment,e),$(H.$$.fragment,e),$(F.$$.fragment,e),D=!0)},o(e){M(h.$$.fragment,e),M(d.$$.fragment,e),M(x.$$.fragment,e),M(v.$$.fragment,e),M(J.$$.fragment,e),M(H.$$.fragment,e),M(F.$$.fragment,e),D=!1},d(e){e&&(a(p),a(o),a(u),a(n),a(Z),a(S),a(B),a(W),a(X),a(R),a(s),a(L),a(E),a(G)),a(r),T(h,e),T(d,e),T(x,e),T(v),T(J),T(H),T(F,e)}}}const be='{"title":"TensorBoard 로거","local":"tensorboard-logger","sections":[{"title":"HFSummaryWriter","local":"huggingface_hub.HFSummaryWriter ][ huggingface_hub.HFSummaryWriter","sections":[],"depth":2}],"depth":1}';function _e(U){return le(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Se extends ce{constructor(r){super(),me(this,r,_e,ye,ie,{})}}export{Se as component};
