# سجّل TensorBoard

TensorBoard هو مجموعة أدوات للتصور مخصصة لتجارب تعلم الآلة. يتيح TensorBoard تتبع وتصوير المقاييس مثل الخسارة والدقة، وتصوير رسم النموذج، وعرض المخططات التكرارية، وعرض الصور، وأكثر من ذلك بكثير. يتكامل TensorBoard بشكل جيد مع Hugging Face Hub. يقوم Hub تلقائيًا باكتشاف مسارات TensorBoard (مثل `tfevents`) عند دفعها إلى Hub، مما يبدأ مثيلًا لعرضها. للحصول على مزيد من المعلومات حول تكامل TensorBoard على Hub، راجع [هذا الدليل](https://huggingface.co/docs/hub/tensorboard).

للانتفاع بهذا التكامل، يوفر `huggingface_hub` مسجّل مخصصًا لدفع السجلات إلى Hub. يعمل كبديل جاهز للاستخدام لـ [SummaryWriter](https://tensorboardx.readthedocs.io/en/latest/tensorboard.html) دون الحاجة إلى أي كود إضافي. لا تزال الآثار محفوظة محليًا، وتقوم مهمة في الخلفية بدفعها إلى Hub على فترات منتظمة.

## HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

#### huggingface_hub.HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

```python
huggingface_hub.HFSummaryWriter(*args, **kwargs)
```

[المصدر](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/_tensorboard_logger.py#L39)

**المعاملات:**

repo_id (`str`) : المعرّف الخاص بالمستودع الذي سيتم دفع السجلات إليه.

logdir (`str`, *اختياري*) : المجلد الذي سيتم فيه كتابة السجلات. إذا لم يُحدد، فسيتم إنشاء مجلد محلي بواسطة كائن `SummaryWriter` الأساسي.

commit_every (`int` أو `float`، *اختياري*) : التردد (بالدقائق) الذي تُدفع به السجلات إلى Hub. القيمة الافتراضية هي 5 دقائق.

squash_history (`bool`، *اختياري*) : ما إذا كان سيتم ضغط سجل المستودع بعد كل التزام. القيمة الافتراضية هي `False`. يُعدّ ضغط الالتزامات مفيدًا لتجنب تدهور الأداء في المستودع عندما يكبر حجمه بشكل مفرط.

repo_type (`str`، *اختياري*) : نوع المستودع الذي سيتم دفع السجلات إليه. القيمة الافتراضية هي "model".

repo_revision (`str`، *اختياري*) : إصدار المستودع الذي سيتم دفع السجلات إليه. القيمة الافتراضية هي "main".

repo_private (`bool`، *اختياري*) : ما إذا كان سيتم جعل المستودع خاصًا. إذا كان `None` (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي الخاص بالمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل.

path_in_repo (`str`، *اختياري*) : المسار إلى المجلد في المستودع الذي سيتم دفع السجلات إليه. القيمة الافتراضية هي "tensorboard/".

repo_allow_patterns (`list[str]` أو `str`، *اختياري*) : قائمة بأنماط يجب تضمينها في عملية الرفع. القيمة الافتراضية هي `"*.tfevents.*"`. راجع [دليل الرفع](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) لمزيد من التفاصيل.

repo_ignore_patterns (`list[str]` أو `str`، *اختياري*) : قائمة بأنماط يجب استبعادها في عملية الرفع. راجع [دليل الرفع](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) لمزيد من التفاصيل.

token (`str`، *اختياري*) : رمز المصادقة. سيُستخدم رمز المصادقة المخزَّن افتراضيًا. راجع https://huggingface.co/settings/token لمزيد من التفاصيل

kwargs : حُجج كلمات مفتاحية إضافية تُمرَّر إلى `SummaryWriter`.

غلاف حول `SummaryWriter` الخاص بـ tensorboard لدفع سجلات التدريب إلى Hub.

تُسجَّل البيانات محليًا ثم تُدفع إلى Hub بشكل غير متزامن. يتم دفع البيانات إلى Hub في خيط منفصل لتجنب تعطيل سكربت التدريب. وبشكل خاص، إذا فشل الرفع لأي سبب (مثل مشكلة اتصال)، فلن يتم مقاطعة السكربت الرئيسي. تُدفع البيانات تلقائيًا إلى Hub كل `commit_every` دقيقة (الافتراضي هو كل 5 دقائق).

> [!WARNING]
> `HFSummaryWriter` تجريبي. قد تتغير واجهته البرمجية (API) في المستقبل دون إشعار مسبق.

أمثلة:
```diff
# Taken from https://pytorch.org/docs/stable/tensorboard.html
- from torch.utils.tensorboard import SummaryWriter
+ from huggingface_hub import HFSummaryWriter

import numpy as np

- writer = SummaryWriter()
+ writer = HFSummaryWriter(repo_id="username/my-trained-model")

for n_iter in range(100):
    writer.add_scalar('Loss/train', np.random.random(), n_iter)
    writer.add_scalar('Loss/test', np.random.random(), n_iter)
    writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
    writer.add_scalar('Accuracy/test', np.random.random(), n_iter)
```

```py
>>> from huggingface_hub import HFSummaryWriter

# Logs are automatically pushed every 15 minutes (5 by default) + when exiting the context manager
>>> with HFSummaryWriter(repo_id="test_hf_logger", commit_every=15) as logger:
...     logger.add_scalar("a", 1)
...     logger.add_scalar("b", 2)
```

