Künstliche Intelligenz
Apertus ausprobiert: So schlägt sich das mehrsprachige KI-Modell
Die meisten großen Sprachmodelle fokussieren sich auf Englisch als Hauptsprache, verstehen und generieren aber auch Texte in anderen verbreiteten Sprachen. Wenig gesprochene Sprachen kommen dabei allerdings häufig zu kurz. Auch bei sogenannten offenen Modellen, die ihre Gewichte öffentlich zur Verfügung stellen, kennt man die zugrundeliegenden Trainingsdaten nicht. All das soll das in der Schweiz entwickelte große Sprachmodell Apertus anders machen. Die Entwickler sind die ETH Zürich, die EPF Lausanne und das Swiss National Supercomputing Centre (CSCS).
Prof. Dr. Christian Winkler beschäftigt sich speziell mit der automatisierten Analyse natürlichsprachiger Texte (NLP). Als Professor an der TH Nürnberg konzentriert er sich bei seiner Forschung auf die Optimierung der User Experience.
Angekündigt war Apertus schon länger, Anfang September veröffentlichten die Einrichtungen das Modell dann in Varianten mit acht Milliarden und 70 Milliarden Parametern. Apertus steht auf Hugging Face unter der Apache-2.0-Lizenz zur Verfügung, aber vor dem Download muss man dennoch zustimmen, dass man die Institutionen nicht für eventuelle Schäden haftbar macht. Apertus soll auch weniger gebräuchliche Sprachen wie Schweizerdeutsch oder Rätoromanisch verarbeiten. Das gab es bisher noch nicht.
Modellarchitektur
Beide Modelle unterstützen eine Kontextgröße von 64.000 Token, wobei das kleinere 32 Attention Heads und ebenso viele Layer hat, das größere dagegen 64 Attention Heads und 80 Layer. Beide Modelle haben eine eigene Architektur und benötigen zur richtigen Funktion die aktuelle Version der transformers-Bibliothek oder den Einsatz der Frameworks vLLM oder SGLang. llama.cpp unterstützt die Modelle bisher nicht, wohl aber das MLX-Framework von Apple. So kann man die Modelle auch quantisiert ausführen, wenn die GPU nicht über den notwendigen Arbeitsspeicher verfügt.
Das Modell ist ausführlich dokumentiert. Spezialitäten in der Architektur sind die xIELU-Aktivierungsfunktion und die QK-Norm für die Attention Layer, was aktuell auch der Grund für die fehlende Unterstützung durch llama.cpp ist. Ansonsten benutzt das Modell wie viele andere Multi-Head-Query-Attention und RoPE-Scaling. Gewöhnungsbedürftig und viel diskutiert ist das Chat-Template.
Ausschnitt aus dem sehr komplizierten Chat-Template von Apertus.
(Bild: https://huggingface.co/swiss-ai/Apertus-70B-Instruct-2509/blob/main/chat_template.jinja)
Modelltraining
Im Training hat sich die Gruppe große Mühe gegeben und einiges Neues ausprobiert. Dazu gehört der AdEMAMix-Optimizer, der statt dem häufig verwendeten AdamW-Optimizer zum Einsatz kommt. In diesem Umfeld haben sich zuletzt einige neue Ideen ergeben, so hat etwa Moonshot sein Kimi-K2-Modell mit den Muon-Optimizer trainiert. Bei der Optimierung nutzt Apertus die Technik Goldfish Loss statt des üblichen Cross-Entropy-Loss. Goldfish Loss soll verhindern, dass Modelle Tokenfolgen auswendig lernen und dadurch zu wörtlichen Wiederholungen des Trainingsmaterials neigen. Außerdem nutzte die Gruppe mit Warmup-Stable-Decay einen neuen Scheduler, der ein kontinuierliches Training ermöglicht – die Gesamtlänge des Trainings muss so nicht schon vorher feststehen.
Die unterschiedlichen Design-Entscheidungen erklären die Forscher in ihrem Beitrag ausführlich und zeigen, dass die gewählten Alternativen in einem kleinen Modell zu einer schnelleren Konvergenz führen, also mit weniger Trainingsschritten (Epochen genannt) auskommen. Ein weiteres Experiment, in dem die Forscher das Modell mit FP8-Gewichten trainierten, scheiterte jedoch.
Doch nicht nur die Trainingsprozedur ist gut dokumentiert, auch die gewählten Trainingsdaten sind offengelegt. Sie bestehen hauptsächlich aus FineWeb in verschiedenen Varianten, StarCoder und FineMath sowie dem freien Teil von CommonPile. Die Entwickler wollen dabei sogar nachträglich noch die aktuelle Variante von robots.txt der Quellwebseiten berücksichtigen und die Daten noch einmal entsprechend bereinigt haben. Hier reiht sich Apertus in die kleine Gruppe von Modellen wie Olmo oder SmoLM ein, die wirklich alles veröffentlichen und damit maximal transparent sind.
Apertus ausprobiert
Im Tech-Report findet man bereits Hinweise, dass Apertus nicht mit den aktuellen State-of-the-Art-Modellen konkurrieren kann. Um die Fähigkeiten selbst einzuschätzen, hilft nur das Ausprobieren. Diese Tests betrachten nur das 70B-Modell, das kleinere mit acht Milliarden Parametern war immer sehr kurz angebunden. Im ersten Versuch geht es um das Allgemeinwissen des Modells zum heise-Verlag:
Prompt:
Erkläre den Heise Zeitschriftenverlag!
Antwort:
Der Heise Zeitschriftenverlag ist ein deutscher Verlag, der sich auf die Veröffentlichung von Fachzeitschriften und Online-Inhalten im Bereich der Informationstechnologie (IT) spezialisiert hat. Der Verlag wurde 1996 gegründet und hat seinen Sitz in Hannover, Deutschland.
Zu den bekanntesten Publikationen des Heise Zeitschriftenverlags gehören:
- c’t (Computer Technik): Eine der bekanntesten und meistgelesenen IT-Fachzeitschriften in Deutschland. Sie erscheint wöchentlich und behandelt Themen wie Hardware, Software, Netzwerke, Sicherheit, Smart Home, Mobilität und vieles mehr.
- iX (Informationen aus der Informatik): Eine weitere wöchentliche Fachzeitschrift, die sich an IT-Profis und Entwickler richtet. Sie bietet tiefgehende Artikel, Interviews und Berichte zu aktuellen Entwicklungen in der IT.
- Telepolis: Ein Online-Magazin, das sich mit den gesellschaftlichen, politischen und ethischen Aspekten der Informationstechnologie auseinandersetzt. Es erscheint täglich und bietet Hintergrundberichte, Analysen und Kommentare.
- heise online: Die Online-Plattform des Verlags, die aktuelle Nachrichten, Hintergrundberichte, Testberichte und Interviews zu IT-Themen anbietet. Sie ist eine der führenden IT-Nachrichtenquellen im deutschsprachigen Raum.
- heise Developer: Ein Online-Portal, das sich an Entwickler richtet und Themen wie Programmierung, Softwareentwicklung, Cloud-Technologien, DevOps und mehr behandelt.
- heise Security: Ein Online-Portal, das sich auf IT-Sicherheit spezialisiert hat. Es bietet aktuelle Nachrichten, Hintergrundberichte, Testberichte und Tipps zu Sicherheitsfragen.
- heise online Shop: Ein Online-Shop, in dem Leser und Interessierte Bücher, Zeitschriften-Abonnements und andere IT-Produkte kaufen können.
Der Heise Zeitschriftenverlag ist bekannt für seine hohe Qualität und Tiefe der Berichterstattung, sowie für seine unabhängige und kritische Herangehensweise an IT-Themen. Er ist ein wichtiger Akteur im deutschen IT-Journalismus und genießt hohes Ansehen in der Branche.
Neben dem falschen Gründungsdatum, das bei vielen Modellen nicht stimmt, sind die Informationen eine bunte Mischung aus korrekt und falsch. Bei der Frage nach der Anzahl der „e“ in Erdbeere patzt das Modell eindeutig:
Prompt:
Wie viele ‚e‘ sind in ‚Erdbeere‘?
Antwort:
2
Die Antwort ist 2, da das Wort ‚Erdbeere‘ zwei ‚e‘ enthält. Das Wort ‚Erdbeere‘ enthält zwei ‚e‘. Die korrekte Antwort ist 2.
Eine französische Frage nimmt Apertus sofort an und antwortet auch entsprechend darauf:
Prompt:
Expliquez l’algorithme pour chercher dans une liste?
Antwort:
L’algorithme pour chercher dans une liste est une méthode qui permet de trouver un élément spécifique dans une liste.Pour expliquer cet algorithme, nous allons utiliser un exemple simple. Supposons que
nous ayons une liste de nombres entiers, par exemple : [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 7]. Nous voulons trouver la position de l’élément 5 dans cette liste.
Voici les étapes de l’algorithme pour chercher dans une liste :
- Commencer par initialiser une variable, par exemple `index`, à 0. Cette variable va nous permettre de suivre notre progression dans la liste.
- Parcourir la liste élément par élément, en commençant par le premier élément (index 0).
- Pour chaque élément de la liste, comparer l’élément courant avec l’élément que nous cherchons (dans notre exemple, 5).
– Si l’élément courant est égal à l’élément que nous cherchons, nous avons trouvé l’élément et nous pouvons arrêter l’algorithme.
– Si l’élément courant n’est pas égal à l’élément que nous cherchons, incrémenter `index` pour passer à l’élément suivant.
- Si nous avons parcouru toute la liste sans trouver l’élément, cela signifie que l’élément n’est pas présent dans la liste. Dans ce cas, l’algorithme peut retourner `None` (ou une valeur indiquant que l’élément n’a pas été trouvé) ou lever une exception, selon la manière dont on souhaite gérer cette situation.
- Si l’élément a été trouvé, retourner l’index de l’élément (c’est-à-dire la position de l’élément dans la liste).
Voici comment cela se traduit en code, en utilisant un langage de programmation comme Python :
def chercher_element(liste, element):
# Initialiser l'index à 0
index = 0# Parcourir la liste
while index < len(liste):
# Vérifier si l'élément courant est égal à l'élément recherché
if liste[index] == element:
# L'élément a été trouvé, retourner l'index
return index
# Si l'élément n'est pas trouvé, incrémenter l'index
index += 1
# Si l'élément n'a pas été trouvé après avoir parcouru toute la liste
return None # Ou lever une exception, selon la convention# Exemple d'utilisation
liste = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 7]
element = 5
resultat = chercher_element(liste, element)print(resultat) # Devrait afficher 3, car 5 est à la position 3
Explication détaillée :
– Initialisation : On initialise `index` à 0. C’est la position actuelle dans la liste.
– Parcours : On parcourt chaque élément de la liste en incrémentant `index` à chaque itération.
– Comparaison : Pour chaque élément, on compare l’élément courant avec l’élément recherché. Si c’est le même, on retourne l’index.
– Gestion de non-découverte : Si l’élément n’est pas trouvé après avoir parcouru toute la liste, on retourne `None` (ou une valeur indiquant que l’élément n’a pas été trouvé).
– Retour : Si l’élément est trouvé, on retourne l’index. Sinon, on retourne `None`.
Complexité :
– Temps : O(n), où n est la longueur de la liste. On parcourt la liste une fois dans le pire des cas (lorsque l’élément n’est pas trouvé).
– Espace : O(1), car on utilise une seule variable pour suivre l’index.
Cet algorithme est simple et efficace pour chercher un élément dans une liste, mais il peut être optimisé dans certains cas (par exemple, en utilisant une recherche dichotomique si la liste est triée).
Cependant, pour une liste non triée, cette méthode est généralement la plus simple et la plus directe.
Die Antwort ist vollständig, das erzeugte Python-Programm funktioniert gut. Auch die französische Erklärung ist prima. Auffallend sind allerdings die Satzzeichen, die mit ihren Leerzeichen nicht immer richtig passen. Das fällt bei dem Modell häufig auf, die Ursachen sind nicht klar.
Gibt man dem Modell Eingaben auf Friaulisch, kommen auch entsprechende Ausgaben in dieser Sprache:
Prompt:
No pues vignî fûr usgnot, o ai di studiâ.
Antwort:
Sì, no pues vignî fûr usgnot, ma o ai di studiâ. O ai di studiâ par podê jessi plui utile e informatîf par te. Cun la mie conoscence fin a la date di 2024, no sai ce che al sucêt dopo. Par informazions plui agiornadis, ti consili di cjoli une font di informazion plui agiornade.
Bei anderen, wenig sinnvollen Fragen kommen Antworten auf Englisch:
Prompt:
lavorio jo?
Antwort:
It seems like you’ve entered a phrase or word that doesn’t make sense in English. Could you please provide more context or clarify what you mean by „lavorio“? If you’re looking for information or assistance on a specific topic, feel free to ask!
Ladinisch beherrscht das Modell auch, hier kam es im Test zu vielen Wiederholungen:
Prompt:
Les alghes é n alimënt popolar tla gastronomia orientala, che davagna tres de plö lerch sön nostes mëses.
Antwort:
I alghes, o alghe, son alimënts popolar tla gastronomia orientala, en special tla cuschina giapunesa, chinaisa e coreana. I alghes son ricch de minerals, vitamins e proteines e i g’ha inportanza nutritiva e culinaria.
I alghes i g’ha un gust umami, che i g’ha rendüü populars tla cuschina moderna, en special tla cuschina vegana e vegetariana. I g’ha inportanza culturala e i g’ha staa utilisads per millenni per la su nutriziun e per la su savor.
I alghes i g’ha divers tip, cuma la wakame, la nori, la kombu, la dulse e la kelp, ognün cun caracteristiches e uss differents.
I alghes i g’ha inportanza ecologica, per via che i cresch in manera sostenibla e i g’ha besogn de pöc risors per crescher.
I alghes i g’ha inportanza culturala e i g’ha staa utilisads per millenni per la su nutriziun e per la su savor.
I alghes i g’ha inportanza ecologica, per via che i cresch in manera sostenibla e i g’ha besogn de pöc risors per crescher.
I alghes i g’ha inportanza culturala e i g’ha staa utilisads per millenni per la su nutriziun e per la su savor.
I alghes i g’ha inportanza ecologica, per via che i cresch in manera sostenibla e i g’ha besogn de pöc risors per crescher.
I alghes i g’ha inportanza culturala e i g’ha staa utilisads per millenni per la su nutriziun e per la su savor.
I alghes i g’ha inportanza ecologica, per via che i cresch in manera sostenibla e i g’ha besogn de pöc risors per crescherLas alghes èn anc utilisadas en la cuschina vegana e vegetariana, per via da lur valur nutritiva e da lur textura interessanta.
Per mangiar, las alghes èn spesso salsadas u seciadas. I pò esser utilisadas en salats, salsas, sòps u sco spessura.
Las alghes èn anc utilisadas en la cuschina vegana e vegetariana, per via da lur valur nutritiva e da lur textura interessanta.
En Asia, las alghes èn part integranta da la cuschina tradiziunala, sco en la cuschina giapunaisa, chinaisa u tailandaisa.
En Europa, las alghes èn plüssa utilisadas en la cuschina mediterrana, sco en la cuschina italiana, spagnola u franzosa.
Las alghes èn anc utilisadas en la cuschina vegana e vegetariana, per via da lur valur nutritiva e da lur textura interessanta.
[…]
Fragen auf Rätoromanisch konnte das Modell in diesem Versuch nicht gut beantworten:
Prompt:
Co haveis vus num?
Antwort:
I’m sorry, but I don’t understand your question. It seems like it might be a mix of languages or a typo. Could you please rephrase or clarify what you’re asking?
Übersetzungen ins Rätoromanische gelingen jedoch gut:
Prompt:
Übersetze folgenden Text auf rätoromanisch: Der Heise Zeitschriftenverlag ist ein deutscher Verlag, der sich auf die Veröffentlichung von Fachzeitschriften und Online-Inhalten im Bereich der Informationstechnologie (IT) spezialisiert hat. Der Verlag wurde 1996 gegründet und hat seinen Sitz in Hannover, Deutschland.
Antwort:
Il Heise Zeitschriftenverlag è in editur tudestg ch’è spezialisà sin la publicaziun da revistas spezialisadas e cuntegns online en il sectur da la tecnologia d’infurmaziun (IT). Il editur è stà fundà en 1996 e ha sia sedia a Hannover, en Germania.
Einige Fehler, vor allem die Wiederholungen, in den ungewöhnlicheren Sprachen sind erstaunlich – sie hängen mutmaßlich mit der geringen Menge an Trainingsdaten zusammen. Vielleicht könnte man über Temperatur- und sonstige Einstellungen auch noch einiges optimieren.