# مشاركة مجموعة بيانات باستخدام سطر الأوامر

في Hugging Face، نعمل على مهمة تتمثل في ديمقراطية تعلم الآلة الجيد، ونؤمن بقيمة المصادر المفتوحة. ولهذا السبب صممنا 🤗 Datasets بحيث يمكن لأي شخص مشاركة مجموعة بيانات مع مجتمع تعلم الآلة الأوسع. حاليًا، هناك آلاف مجموعات البيانات بأكثر من 100 لغة في Hugging Face Hub، وفريق Hugging Face يرحب دائمًا بالمساهمات الجديدة!

توفر مستودعات مجموعات البيانات ميزات مثل:

- استضافة مجانية للبيانات
- إصدار بيانات
- سجلّ الالتزامات والفروقات
- بيانات وصفية لتحسين قابلية الاكتشاف
- بطاقات مجموعات البيانات للتوثيق، والترخيص، والقيود، وما إلى ذلك.
- [عارض مجموعة البيانات](https://huggingface.co/docs/hub/datasets-viewer)

ستُظهر لك هذه الدليل كيفية مشاركة مجلد بيانات أو مستودع يمكن لأي شخص الوصول إليه بسهولة.

## إضافة مجموعة بيانات

يمكنك مشاركة مجموعة بياناتك مع المجتمع عبر مستودع مجموعات بيانات على Hugging Face Hub. كما يمكن أن تكون مجموعة البيانات خاصة إذا كنت ترغب في التحكم في من يمكنه الوصول إليها.

في مستودع مجموعة بيانات، يمكنك استضافة جميع ملفات البيانات الخاصة بك و[إعداد مجموعة البيانات](./repository_structure#define-your-splits-and-subsets-in-yaml) لتحديد الملف الذي ينتمي إلى كل تقسيم. الصيغ المدعومة هي: CSV وTSV وJSON وJSON lines والنص وParquet وArrow وSQLite وWebDataset. كما تُدعم العديد من أنواع الملفات المضغوطة: GZ وBZ2 وLZ4 وLZMA أو ZSTD. على سبيل المثال، يمكن أن تتكون مجموعة بياناتك من ملفات `.json.gz`.

عند تحميل مجموعة بيانات من Hub، يتم تحميل جميع الملفات الموجودة في الصيغ المدعومة، وذلك وفقاً لـ[هيكل المستودع](./repository_structure).

لمزيد من المعلومات حول كيفية تحميل مجموعة بيانات من Hub، راجع درس [تحميل مجموعة بيانات من Hub](./load_hub).

### إنشاء المستودع

يتطلب مشاركة مجموعة بيانات المجتمع إنشاء حساب على [hf.co](https://huggingface.co/join) إذا لم يكن لديك حساب بالفعل. يمكنك إنشاء [مستودع مجموعة بيانات جديد](https://huggingface.co/login?next=%2Fnew-dataset) مباشرةً من حسابك على Hugging Face Hub، لكن هذا الدليل سيوضح لك كيفية رفع مجموعة بيانات من الطرفية.

1. تأكد من أنك داخل البيئة الافتراضية التي قمت بتثبيت Datasets فيها، ثم نفّذ الأمر التالي:

```
hf auth login
```

2. سجّل الدخول باستخدام بيانات اعتماد Hugging Face Hub الخاصة بك، وأنشئ مستودع بيانات جديدًا:

```
hf repos create my-cool-dataset --type dataset
```

أضف اسم المنظمة قبل اسم المستودع لإنشاؤه تحت تلك المنظمة:

```
hf repos create your-org-name/my-cool-dataset --type dataset
```

## جهّز ملفاتك

تحقق من مجلدك للتأكد من أن الملفات التي تقوم برفعها هي فقط:

- ملفات البيانات الخاصة بمجموعة البيانات

- بطاقة مجموعة البيانات `README.md`

## hf upload

استخدم أمر `hf upload` لرفع الملفات إلى Hub مباشرة. داخليًا، يستخدم نفس أدوات المساعدة `upload_file` و`upload_folder` الموصوفة في [دليل الرفع](https://huggingface.co/docs/huggingface_hub/guides/upload). في الأمثلة أدناه، سنستعرض أكثر حالات الاستخدام شيوعًا. للحصول على قائمة كاملة بالخيارات المتاحة، يمكنك تشغيل:

```bash
>>> hf upload --help
```

لمزيد من المعلومات العامة حول `hf` يمكنك الاطلاع على [دليل سطر الأوامر](https://huggingface.co/docs/huggingface_hub/guides/cli).

### رفع مجلد كامل

الاستخدام الافتراضي لهذا الأمر هو:

```bash
# Usage:  hf upload [dataset_repo_id] [local_path] [path_in_repo] --repo-type dataset
```

لرفع المجلد الحالي في جذر المستودع، استخدم:

```bash
>>> hf upload my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main/
```

> [!TIP]
> إذا لم يكن المستودع موجودًا بعد، فسيتم إنشاؤه تلقائيًا.

يمكنك أيضًا رفع مجلد محدد:

```bash
>>> hf upload my-cool-dataset ./data . --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/
```

أخيرًا، يمكنك رفع مجلد إلى وجهة محددة في المستودع:

```bash
>>> hf upload my-cool-dataset ./path/to/curated/data /data/train --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main/data/train
```

### رفع ملف واحد

يمكنك أيضًا رفع ملف واحد عن طريق تعيين `local_path` ليُشير إلى ملف على جهازك. في هذه الحالة، يكون `path_in_repo` اختياريًا وسيُستخدم افتراضيًا اسم ملفك المحلي:

```bash
>>> hf upload Wauplin/my-cool-dataset ./files/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/train.csv
```

إذا كنت ترغب في رفع ملف واحد إلى مجلد محدد، فاضبط `path_in_repo` وفقًا لذلك:

```bash
>>> hf upload Wauplin/my-cool-dataset ./files/train.csv /data/train.csv --repo-type dataset
https://huggingface.co/datasetsWauplin/my-cool-dataset/blob/main/data/train.csv
```

### رفع ملفات متعددة

لرفع عدة ملفات من مجلد دفعة واحدة دون رفع المجلد بأكمله، استخدم أنماط `--include` و`--exclude`. كما يمكن دمج ذلك مع خيار `--delete` لحذف الملفات من المستودع أثناء رفع ملفات جديدة. في المثال أدناه، نزامن المساحة المحلية عن طريق حذف الملفات البعيدة ورفع جميع ملفات CSV:

```bash
# Sync local Space with Hub (upload new CSV files, delete removed files)
>>> hf upload Wauplin/my-cool-dataset --repo-type dataset --include="/data/*.csv" --delete="*" --commit-message="Sync local dataset with Hub"
...
```

### الرفع إلى منظمة

لرفع المحتوى إلى مستودع مملوك لمنظمة بدلاً من مستودع شخصي، يجب عليك تحديد ذلك صراحةً في `repo_id`:

```bash
>>> hf upload MyCoolOrganization/my-cool-dataset . . --repo-type dataset
https://huggingface.co/datasetsMyCoolOrganization/my-cool-dataset/tree/main/
```

### الرفع إلى إصدار محدد

بشكل افتراضي، يتم رفع الملفات إلى الفرع `main`. إذا كنت ترغب في رفع الملفات إلى فرع أو مرجع آخر، فاستخدم الخيار `--revision`:

```bash
# Upload files to a PR
hf upload bigcode/the-stack . . --repo-type dataset --revision refs/pr/104
...
```

**ملاحظة:** إذا لم يكن `revision` موجودًا ولم يتم تعيين `--create-pr`، فسيتم إنشاء فرع تلقائيًا من الفرع `main`.

### الرفع وإنشاء طلب دمج

إذا لم يكن لديك إذن لدفع التغييرات إلى مستودع، فيجب عليك فتح طلب سحب (PR) وإعلام المؤلفين بالتغييرات التي تريد إجراؤها. يمكن القيام بذلك عن طريق تعيين الخيار `--create-pr`:

```bash
# Create a PR and upload the files to it
>>> hf upload bigcode/the-stack --repo-type dataset --revision refs/pr/104 --create-pr . .
https://huggingface.co/datasets/bigcode/the-stack/blob/refs%2Fpr%2F104/
```

### الرفع على فترات منتظمة

في بعض الحالات، قد ترغب في دفع تحديثات دورية إلى مستودع. على سبيل المثال، يكون هذا مفيدًا إذا كان مجموعة بياناتك تنمو مع مرور الوقت وتريد رفع مجلد البيانات كل 10 دقائق. يمكنك القيام بذلك باستخدام خيار `--every`:

```bash
# Upload new logs every 10 minutes
hf upload my-cool-dynamic-dataset data/ --every=10
```

### تحديد رسالة التزام

استخدم `--commit-message` و`--commit-description` لتعيين رسالة ووصف مخصصين لالتزامك بدلاً من الافتراضي

```bash
>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --commit-message="Version 2" --commit-description="Train size: 4321. Check Dataset Viewer for more details."
...
https://huggingface.co/datasetsWauplin/my-cool-dataset/tree/main
```

### تحديد رمز

لرفع الملفات، يجب عليك استخدام رمز. بشكل افتراضي، سيتم استخدام الرمز المحفوظ محليًا (باستخدام `hf auth login`). إذا كنت ترغب في المصادقة بشكل صريح، استخدم خيار `--token`:

```bash
>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --token=hf_****
...
https://huggingface.co/datasetsWauplin/my-cool-data/tree/main
```

### وضع الصمت

بشكل افتراضي، يكون أمر `hf upload` مفصّلاً. حيث يطبع تفاصيل مثل رسائل التحذير، ومعلومات حول الملفات المرفوعة، وأشرطة التقدم. إذا كنت ترغب في كتم جميع هذه المخرجات، فاستخدم خيار `--quiet`. في هذه الحالة، يُطبع السطر الأخير فقط (أي الرابط إلى الملفات المرفوعة). وقد يكون ذلك مفيداً إذا كنت تريد تمرير المخرجات إلى أمر آخر في سكربت.

```bash
>>> hf upload Wauplin/my-cool-dataset ./data . --repo-type dataset --quiet
https://huggingface.co/datasets/Wauplin/my-cool-dataset/tree/main
```

## استمتع!

تهانينا، تم الآن رفع مجموعة بياناتك إلى Hugging Face Hub حيث يمكن لأي شخص تحميلها بسطر واحد من الكود! 🥳

```
dataset = load_dataset("Wauplin/my-cool-dataset")
```

إذا كان مجموعة البيانات الخاصة بك مدعومة، فيجب أن تحتوي أيضًا على [عارض مجموعة البيانات](https://huggingface.co/docs/hub/datasets-viewer) ليتيح للجميع استكشاف محتوى مجموعة البيانات.

أخيرًا، لا تنسَ إثراء بطاقة مجموعة البيانات لتوثيقها وجعلها قابلة للاكتشاف! اطّلع على دليل [إنشاء بطاقة مجموعة بيانات](dataset_card) لمعرفة المزيد.

