Skip to content

Commit

Permalink
Merge pull request #640 from fabridamicelli/de_ch_4_part2
Browse files Browse the repository at this point in the history
Translate German Chapter 4 (part 2)
  • Loading branch information
MKhalusova authored Feb 13, 2024
2 parents 6dfa7e1 + f8af3dd commit dcab735
Show file tree
Hide file tree
Showing 4 changed files with 341 additions and 0 deletions.
7 changes: 7 additions & 0 deletions chapters/de/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,13 @@
title: Verwendung vortrainierter Modelle
- local: chapter4/3
title: Vortrainierte Modelle teilen
- local: chapter4/4
title: Erstellung einer Modellkarte ("model card")
- local: chapter4/5
title: Teil 1 abgeschlossen!
- local: chapter4/6
title: Quiz am Ende des Kapitels
quiz: 4

- title: Wörterverzeichnis
sections:
Expand Down
91 changes: 91 additions & 0 deletions chapters/de/chapter4/4.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# Erstellung einer Modellkarte ("model card")

<CourseFloatingBanner
chapter={4}
classNames="absolute z-10 right-0 top-0"
/>

Die Modellkarte (Steckbrief) ist eine Datei, die wahrscheinlich genauso wichtig wie das Modell und der Tokenizer in dem Modell-Repository ist.
Da liegt die zentrale Definition vom Modell und sie trägt dazu bei, dass andere Menschen der Community das wiederverwenden und die Ergebnisse reproduzieren können – also das ist die Basis, auf der Andere ihre Artifakte bauen können.

Die Dokumentation zum Modell- Training und Evaluierung hilft anderen Nutzer:innen zu verstehen, was sie vom Modell erwarten sollten.
Ausreichende Information zu der Vor- und Nachaufarbeitung der Daten dient auch dazu, dass man die Einschränkungen, Biases und den Kontext identifizieren kann, wann das Modell nützlich ist und wann nicht.

Deswegen ist die Erstellung einer klar definierten Modellkarte ein sehr wichtiger Schritt. Hier geben wir ein Paar Hinweise, die dir dabei helfen könnten. Die Modellkarte wird durch eine *README.md* Datei (eine Markdown Datei) kreiert, die du schonmal gesehen hast.

Das Konzept von Modellkarte ("model card") stammt aus einer Forschungsrichtung bei Google, die zuerst in dem Paper ["Model Cards for Model Reporting"](https://arxiv.org/abs/1810.03993) von Margaret Mitchell et al erschien. Vieles von dem, was hier steht, basiert auf dem Paper und wir empfehlen dir, das Paper zu lesen, um besser zu verstehen, warum Modellkarten so wichtig sind, wenn man Wert auf Reproduzierbarkeit, Wiederverwendbarkeit und Fairness legt.

Eine Modellkarte fängt mit einer kurzen, große Übersicht davon, was das Modell kann plus einige Details in den folgenden Abschnitte:

- Modell-Beschreibung
- Beabsichtigte Nutzung und Einschränkungen
- Modell-Bedienung
- Einschränkungen und Bias
- Trainingsdaten
- Trainingsverfahren
- Evaluierungsergebnisse

Lass uns anschauen, was genau in jedem Abschnitt stehen sollte.

### Modell-Beschreibung

Die Modellbeschreibung enthält grundlegende Details zum Modell. Dazu gehören die Architektur, die Version, ob es in einem Paper vorgestellt wurde, ob eine Originalimplementierung verfügbar ist, der Autor und allgemeine Informationen über das Modell. Eventuelle Urheberrechte sind hier anzugeben. In diesem Abschnitt können auch allgemeine Informationen zu Trainingsverfahren, Parametern und wichtigen Haftungsausschlüssen erwähnt werden.

### Verwendungszweck und Einschränkungen

Hier beschreibst du die angedachten Anwendungsfälle fürs Modell, einschließlich der Sprachen, Felder und Domänen, in denen es angewendet werden kann. In diesem Abschnitt der Modellkarte können auch Bereiche dokumentiert werden, die bekanntermaßen außerhalb des Anwendungsbereichs des Modells liegen oder in denen die Leistung wahrscheinlich nicht optimal ist.

### Modell-Bedienung

Dieser Abschnitt sollte einige Beispiele für die Verwendung des Modells enthalten. Dies kann die Verwendung der Funktion `pipeline()`, die Verwendung der Modell- und Tokenizer-Klassen und jeden anderen Code zeigen, der deiner Meinung nach hilfreich sein könnte.


### Trainingsdaten

In diesem Teil sollte angegeben werden, auf welchen Datensatz bzw. Datensätze das Modell trainiert wurde. Eine kurze Beschreibung des Datensatzes/der Datensätze ist ebenfalls willkommen.

### Trainingsverfahren

In diesem Abschnitt solltest du alle relevanten Aspekte des Modelltrainingsverfahren beschreiben, die für die Reproduzierbarkeit nützlich sind. Dazu gehören alle Vor- und Nachbearbeitungen, die an den Daten durchgeführt wurden, sowie Details wie die Anzahl der Trainingsepochene, Batch-Größe, die Lernrate usw.

### Variablen und Metriken

Hier solltest du die Bewertungsmetriken beschreiben und die verschiedenen Faktoren, die du dabei mit berücksichtigst. Durch die Angabe, welche Metrik(en) verwendet wurden, für welchen Datensatz und welche Datensatzaufteilung, kannst du die Leistung deines Modells leicht mit der anderer Modelle vergleichen. Diese sollten durch die vorherigen Abschnitte informiert werden, wie z. B. die beabsichtigten Benutzer und Anwendungsfälle.

### Evaluierungsergebnisse

Abschließend gibst du an, wie gut das Modell mit dem Bewertungsdatensatz abschneidet. Wenn das Modell einen Entscheidungsschwellenwert verwendet, gib entweder den in der Bewertung verwendeten Entscheidungsschwellenwert an oder mach Angaben zur Bewertung bei verschiedenen Schwellenwerten für die beabsichtigten Verwendungszwecke.

## Beispiel

Im Folgenden findest du einige Beispiele von guten Modellkarten:

- [`bert-base-cased`](https://huggingface.co/bert-base-cased)
- [`gpt2`](https://huggingface.co/gpt2)
- [`distilbert`](https://huggingface.co/distilbert-base-uncased)


Mehr Beispiele von verschiedene Organisationen/Firmen sind hier verfügbar [here](https://github.com/huggingface/model_card/blob/master/examples.md).

## Hinweis

Modellkarten sind bei der Veröffentlichung von Modellen nicht erforderlich und du musst bei der Erstellung nicht alle oben beschriebenen Abschnitte einbeziehen. Allerdings kann eine explizite Dokumentation des Modells künftigen Nutzern nur nützen, daher empfehlen wir dir, so viele Abschnitte wie möglich nach bestem Wissen und Gewissen auszufüllen.

## Modellkarte-Metadaten

Wenn du den Hugging Face Hub ein wenig erkundet hast, solltest du gesehen haben, dass einige Modelle zu bestimmten Kategorien gehören: Du kannst sie nach Aufgaben, Sprachen, Bibliotheken und mehr filtern. Die Kategorien, zu denen ein Modell gehört, werden anhand der Metadaten identifiziert, die du im Kopf der Modellkarte hinzufügst.

Zum Beispiel sieh dir dieses an [`camembert-base` model card](https://huggingface.co/camembert-base/blob/main/README.md). Du solltest folgende Zeilen auf der Modellkarte sehen:

```
---
language: fr
license: mit
datasets:
- oscar
---
```

Diese Metadaten werden vom Hugging Face Hub analysiert, der dieses Modell dann als französisches Modell mit einer MIT-Lizenz identifiziert, das auf dem Oscar-Datensatz trainiert wurde.

Die vollständige [Modellkarte](https://github.com/huggingface/hub-docs/blame/main/modelcard.md) ermöglicht die Angabe von Sprachen, Lizenzen, Tags, Datensätzen, Metriken sowie den Bewertungsergebnissen, die das Modell wann erhalten hat Ausbildung.
12 changes: 12 additions & 0 deletions chapters/de/chapter4/5.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Teil 1 abgeschlossen!

<CourseFloatingBanner
chapter={4}
classNames="absolute z-10 right-0 top-0"
/>

Dies ist das Ende des ersten Teils des Kurses! Teil 2 wird am 15. November mit einem großen Community-Event veröffentlicht, weitere Informationen findest du [hier](https://huggingface.co/blog/course-launch-event).

Du solltest nun in der Lage sein, ein vorab trainiertes Modell für ein Textklassifizierungsproblem (einzelne Sätze oder Satzpaare) zu optimieren und das Ergebnis in den Model Hub hochzuladen. Um sicherzustellen, dass du diesen ersten Abschnitt beherrschst, solltest du genau das an einem Problem verwenden, das dich interessiert (und nicht unbedingt auf Englisch, wenn Sie eine andere Sprache sprechen)! Hilfe findest du in den [Hugging Face-Foren](https://discuss.huggingface.co/) und du kannst dein Projekt in [diesem Thema](https://discuss.huggingface.co/t/share-your-projects) teilen /6803), sobald du damit fertig bist.

Wir freuen uns darauf, zu sehen, was du alles damit baust!
231 changes: 231 additions & 0 deletions chapters/de/chapter4/6.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
<FrameworkSwitchCourse {fw} />

<!-- DISABLE-FRONTMATTER-SECTIONS -->

# Quiz am Ende des Kapitels

<CourseFloatingBanner
chapter={4}
classNames="absolute z-10 right-0 top-0"
/>

Lass uns testen, was du im vorheringen Kapitel gelernt hast!

### 1. Auf welche Modelle sind die Hub-Modelle beschränkt?

<Question
choices={[
{
text: "Modelle aus der 🤗 Transformers Bibliothek.",
explain: "Obwohl Modelle aus der 🤗 Transformers-Bibliothek auf dem Hugging Face Hub unterstützt werden, sind sie nicht die einzigen!"
},
{
text: "Alle Modelle mit einer ähnlichen Schnittstelle (Interface) wie 🤗 Transformers.",
explain: "Beim Hochladen von Modellen auf den Hugging Face Hub werden keine Schnittstellenanforderungen festgelegt."

},
{
text: "Es gibt keine",
explain: "Korrekt! Es gibt keine Einschränkungen, um Modelle auf den Hub hochzuladen",
correct: true
},
{
text: "Modelle, die in irgendeiner Weise mit NLP zu tun haben",
explain: "Es werden keine Anforderungen an den Einsatzbereich gestellt!"
}
]}
/>

### 2. Wie kannst du die Modelle auf dem Hub verwalten?

<Question
choices={[
{
text: "Durch einen GCP-Account.",
explain: "Inkorrekt!"
},
{
text: "Durch Peer-to-Peer-Verteilung.",
explain: "Inkorrekt!"
},
{
text: "Durch git und git-lfs.",
explain: "Korrekt! Modelle auf dem Hub sind einfach Git-Repositories, die für große Dateien <code>git-lfs</code> benutzen.",
correct: true
}
]}
/>

### 3. Was kannst du mit der Hugging Face Hub-Weboberfläche tun?

<Question
choices={[
{
text: "Ein vorhandenes Repository forken.",
explain: "Das Forken eines Repositorys ist auf dem Hugging Face Hub nicht möglich."
},
{
text: "Ein neues Modell-Repository erstellen.",
explain: "Richtig! Das ist jedoch nicht alles, was Sie tun können.",
correct: true
},
{
text: "Dateien editieren und verwalten.",
explain: "Richtig! Das ist aber nicht die einzige Antwort.",
correct: true
},
{
text: "Dateien hochladen.",
explain: "Korrekt! Aber das ist nicht alles.",
correct: true
},
{
text: "Unterschiede zwischen Versionen sehen.",
explain: "Korrekt! Aber das ist nicht alles.",
correct: true
}
]}
/>

### 4. Was ist eine Modellkarte?

<Question
choices={[
{
text: "Eine grobe Beschreibung des Modells, daher weniger wichtig als die Modell- und Tokenizer-Dateien.",
explain: "Es ist zwar eine Beschreibung des Modells, aber es ist ein wichtiger Teil: Wenn es unvollständig ist oder fehlt, wird der Nutzen des Modells drastisch reduziert."
},
{
text: "Eine Möglichkeit, Reproduzierbarkeit, Wiederverwendbarkeit und Fairness sicherzustellen.",
explain: "Richtig! Das Teilen der richtigen Informationen auf der Modellkarte hilft Benutzern, dein Modell zu nutzen und sich seiner Grenzen und Vorurteile bewusst zu werden.",
correct: true
},
{
text: "Eine Python-Datei, die ausgeführt werden kann, um Informationen zum Modell zu holen",
explain: "Modellkarten sind einfache Markdown-Dateien."
}
]}
/>

### 5. Welche dieser Objekte der 🤗 Transformers-Bibliothek können mit `push_to_hub()` direkt auf dem Hub geteilt werden?

{#if fw === 'pt'}
<Question
choices={[
{
text: "Ein Tokenizer",
explain: "Richtig! Alle Tokenizer verfügen über die Methode <code>push_to_hub</code>, und wenn su sie verwendest, werden alle Tokenizer-Dateien (Vokabular, Architektur des Tokenizers usw.) in ein bestimmtes Repo verschoben. Aber das ist nicht die einzig richtige Antwort!",
correct: true
},
{
text: "Eine Modell-Konfiguration",
explain: "Richtig! Alle Modellkonfigurationen verfügen über die Methode <code>push_to_hub</code>, und wenn Sie sie verwenden, werden sie an ein bestimmtes Repo gepusht. Was kannst du sonst noch teilen?",
correct: true
},
{
text: "Ein Model",
explain: "Richtig! Alle Modelle verfügen über die Methode <code>push_to_hub</code>, und wenn du sie verwendest, werden sie und ihre Konfigurationsdateien in ein bestimmtes Repo gepusht. Das ist jedoch nicht alles, was du teilen kannst.",
correct: true
},
{
text: "Ein Trainer",
explain: "Das ist richtig – der <code>Trainer</code> implementiert auch die Methode <code>push_to_hub</code> und lädt mit dieser Methode das Modell, seine Konfiguration, den Tokenizer und einen Modellkartenentwurf auf einen gegebenen Server hoch repo. Versuch es auch mit einer anderen Antwort!",
correct: true
}
]}
/>
{:else}
<Question
choices={[
{
text: "Ein tokenizer",
explain: "Correct! All tokenizers have the <code>push_to_hub</code> method, and using it will push all the tokenizer files (vocabulary, architecture of the tokenizer, etc.) to a given repo. That's not the only right answer, though!",
explain: "Richtig! Alle Tokenizer verfügen über die Methode <code>push_to_hub</code>, und wenn du sie verwendest, werden alle Tokenizer-Dateien (Vokabular, Architektur des Tokenizers usw.) in ein bestimmtes Repo verschoben. Das ist aber nicht die einzige richtige Antwort!",
correct: true
},
{
text: "Eine Modell-Konfiguration",
explain: "Right! All model configurations have the <code>push_to_hub</code> method, and using it will push them to a given repo. What else can you share?",
explain: "Richtig! Alle Modellkonfigurationen verfügen über die Methode <code>push_to_hub</code>, und wenn du sie verwendest, werden sie an ein bestimmtes Repo gepusht. Was kannst du sonst noch teilen?",
correct: true
},
{
text: "Ein Modell",
explain: "Richtig! Alle Modelle verfügen über die Methode <code>push_to_hub</code>, und wenn du sie verwendest, werden sie und ihre Konfigurationsdateien in ein bestimmtes Repo gepusht. Das ist jedoch nicht alles, was du teilen kannst.",
correct: true
},
{
text: "Alles oben mit einem speziellen `Callback`",
explain: "Das ist richtig – der <code>PushToHubCallback</code> sendet während des Trainings regelmäßig alle diese Objekte an ein Repo.",
correct: true
}
]}
/>
{/if}

### 6. Was ist der erste Schritt bei Verwendung der Methode `push_to_hub()` oder der CLI-Tools?

<Question
choices={[
{
text: "Login auf der Website.",
explain: "Das hilft auf deinem lokalen Rechner nicht."
},
{
text: "'huggingface-cli login' im Terminal auszuführen.",
explain: "Richtig – dadurch wird dein persönlicher Token heruntergeladen und zwischengespeichert.",
correct: true
},
{
text: "'notebook_login()' im Notebook auszuführen.",
explain: "Richtig – es wird ein Widget angezeigt, mit dem du dichh authentifizieren kannst.",
correct: true
},
]}
/>

### 7. Du verwendest ein Modell und einen Tokenizer – wie kannst du diese auf den Hub hochladen?

<Question
choices={[
{
text: "Mittels der push_to_hub Methode direkt auf dem Model und dem Tokenizer.",
explain: "Korrekt!",
correct: true
},
{
text: "Innerhalb der Python-Runtime, indem man sie in ein <code>huggingface_hub</code>-Dienstprogramm einschließt.",
explain: "Modelle und Tokenizer profitieren bereits von den Dienstprogrammen <code>huggingface_hub</code>: kein zusätzlicher Wrapping erforderlich!"
},
{
text: "Indem du sie auf der Festplatte speicherst und <code>transformers-cli upload-model</code> aufrufst",
explain: "Der Befehl <code>upload-model</code> existiert nicht."
}
]}
/>

### 8. Welche Git-Operationen kann man mit der Klasse „Repository“ ausführen?

<Question
choices={[
{
text: "Ein Commit.",
explain: "Richtig, dafür ist die <code>git_commit()</code> Methode da.",
correct: true
},
{
text: "Ein Pull",
explain: "Das ist der Zweck der <code>git_pull()</code> Methode.",
correct: true
},
{
text: "Ein Push",
explain: "Die Methode <code>git_push()</code> macht das.",
correct: true
},
{
text: "Ein Merge",
explain: "Nein, die Operation wird mit dieser API nie möglich sein."
}
]}
/>

0 comments on commit dcab735

Please sign in to comment.