Blank white background with no objects or features visible.

Werden Sie Teil unseres VAR- und VAD-Ökosystems – und ermöglichen Sie die Governance von Unternehmens-KI über LLMs, MCPs und Agents hinweg. Read →

True ML Talks #23 - MLOps- und LLMS-Anwendungen @ GitLab

von TrueFoundry

Aktualisiert: October 26, 2023

Fassen Sie zusammen mit
Metallic silver knot design with interlocking loops and circular shape forming a decorative pattern.
Blurry black butterfly or moth icon with outstretched wings on white background.
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Wir sind zurück mit einer weiteren Folge von True ML Talks. In dieser Ausgabe tauchen wir erneut tief in die MLOps- und LLMS-Anwendungen bei GitLab ein und wir sprechen mit Monmayuri Ray.

Monmayuri leitet den Bereich KI-Forschung bei GitLab mit viel Fokus auf die LLMs im letzten Jahr. Und davor war sie als technische Leiterin in der ModelOps Division bei GitLab tätig. Sie arbeitete auch mit anderen Unternehmen wie Microsoft und eBay zusammen.

📌

Unsere Gespräche mit Monmayuri werden die folgenden Aspekte behandeln:
- ML- und LLM-Anwendungsfälle bei GitLab
- Weiterentwicklung der ML-Infrastruktur von GitLab zur Unterstützung großer Sprachmodelle (LLMs)
- GitLabs Reise mit LLMs: Von Open Source bis Fine-Tuning
- Training großer Sprachmodelle bei GitLab
- Triton im Vergleich zu PyTorch, Ensembled GPUs und dynamisches Batching für LLM-Inferenz
- Herausforderungen und Forschung bei der Evaluierung von LLMs bei GitLab
- Die LLM-Architektur von GitLab und die Zukunft von LLMs

Sehen Sie sich die ganze Folge unten an:

ML- und LLM-Anwendungsfälle @ GitLab

Maschinelles Lernen (ML) verändert den Lebenszyklus der Softwareentwicklung, und GitLab steht an der Spitze dieser Innovation. GitLab nutzt ML, um Entwickler auf ihrem gesamten Weg zu unterstützen, von der Erstellung von Problemen über das Zusammenführen von Anfragen bis hin zur Bereitstellung von Apps.

Einer der aufregendsten Anwendungsfälle für ML bei GitLab sind große Sprachmodelle (LLMs). GitLab verwendet LLMs und GenAI, um neue Funktionen für seine Produkte zu entwickeln, wie z. B. die Codevervollständigung und die Zusammenfassung von Problemen.

Vorteile von ML für GitLab-Nutzer

  1. Gesteigerte Produktivität: ML kann Entwicklern helfen, produktiver zu arbeiten, indem Aufgaben wie die Codevervollständigung und die Zusammenfassung von Problemen automatisiert werden.
  2. Verbesserte Codequalität: ML kann Entwicklern helfen, besseren Code zu schreiben, indem potenzielle Fehler identifiziert und Verbesserungen vorgeschlagen werden.
  3. Verkürzte Entwicklungszeit: ML kann Entwicklern helfen, den Zeitaufwand für die Softwareentwicklung zu reduzieren, indem Aufgaben automatisiert werden und Probleme schneller erkannt und behoben werden können.
  4. Verbessertes Entwicklererlebnis: ML kann dazu beitragen, das Entwicklererlebnis zu verbessern, indem es die Verwendung von GitLab-Produkten vereinfacht und Support und Anleitungen bietet.

Wie sich die ML-Infrastruktur von GitLab zur Unterstützung großer Sprachmodelle (LLMs) weiterentwickelt

GitLab war an vorderster Front dabei, große Sprachmodelle (LLMs) zu verwenden, um Entwickler zu unterstützen. Infolgedessen musste GitLab seine ML-Infrastruktur weiterentwickeln, um diese komplexen Modelle zu unterstützen.

Herausforderungen

  1. Größe und Komplexität: LLMs sind viel größer und komplexer als herkömmliche ML-Modelle, was bedeutet, dass für das Training und die Bereitstellung leistungsfähigere Hard- und Software erforderlich ist.
  2. Integration: Die Produkte von GitLab sind in Ruby on Rails und JavaScript geschrieben. Das bedeutet, dass GitLab Wege finden musste, seine ML-Infrastruktur in diese Technologien zu integrieren.
  3. Verteilte Infrastruktur: Die ML-Infrastruktur von GitLab ist auf mehrere verschiedene Cloud-Anbieter verteilt. Das bedeutet, dass GitLab Methoden entwickeln musste, um seine ML-Infrastruktur auf konsistente und effiziente Weise zu verwalten.

Lösungen

Um den oben genannten Herausforderungen zu begegnen, hat GitLab eine Reihe von Änderungen an seiner ML-Infrastruktur vorgenommen. Diese Änderungen können in die folgenden Bereiche unterteilt werden:

  1. Hardware: GitLab hat in neue Hardware wie GPUs und TPUs investiert, um das Training und den Einsatz von LLMs zu unterstützen.
  2. Software: GitLab hat neue Schulungs- und Bereitstellungspipelines für LLMs entwickelt. GitLab hat auch eine Reihe von Integrationslösungen entwickelt, damit seine ML-Infrastruktur mit seinen Ruby on Rails- und JavaScript-Anwendungen zusammenarbeiten kann.
  3. Verwaltung: GitLab hat eine Reihe von Tools und Prozessen entwickelt, um die Verwaltung seiner verteilten ML-Infrastruktur zu unterstützen.

GitLabs Reise mit LLMs: Von Open Source bis Fine-Tuning

GitLab war an vorderster Front dabei, große Sprachmodelle (LLMs) zu verwenden, um Entwickler zu unterstützen. In den frühen Tagen begann GitLab mit der Verwendung Open-Source-LLMs, wie Salesforce Code Gen. Da sich die Landschaft jedoch geändert hat und LLMs immer leistungsfähiger geworden sind, hat GitLab dazu übergegangen, seine eigenen LLMs für bestimmte Anwendungsfälle wie die Codegenerierung zu verfeinern.

Die Feinabstimmung von LLMs erfordert erhebliche Investitionen in die Infrastruktur, da diese Modelle sehr umfangreich und komplex sind. GitLab musste neue Schulungs- und Bereitstellungspipelines für LLMs sowie neue Möglichkeiten zur Verwaltung seiner ML-Infrastruktur in einer verteilten Umgebung entwickeln.

Eine der wichtigsten Herausforderungen, mit denen GitLab bei der Feinabstimmung von LLMs konfrontiert war, besteht darin, das richtige Gleichgewicht zwischen Kosten und Latenz zu finden. Die Schulung und Bereitstellung von LLMs kann sehr teuer sein, und es kann auch langsam sein, Ergebnisse zu erzielen. GitLab musste mit verschiedenen Clustergrößen, GPU-Konfigurationen und Batching-Techniken experimentieren, um das richtige Gleichgewicht für seine Bedürfnisse zu finden.

Eine weitere Herausforderung, mit der GitLab konfrontiert war, besteht darin, sicherzustellen, dass seine LLMs genau und zuverlässig sind. LLMs können mit riesigen Text- und Code-Datensätzen trainiert werden, aber diese Datensätze können auch Fehler und Vorurteile enthalten. GitLab musste neue Techniken entwickeln, um seine LLMs zu evaluieren und zu widerlegen.

Trotz der Herausforderungen hat GitLab erhebliche Fortschritte bei der Verwendung von LLMs zur Unterstützung von Entwicklern erzielt. GitLab ist jetzt in der Lage, LLMs in großem Umfang zu trainieren und bereitzustellen, und es verwendet diese Modelle, um neue Funktionen und Produkte zu entwickeln, die den Softwareentwicklungsprozess effizienter und angenehmer machen werden.

Training großer Sprachmodelle bei GitLab

Das Training großer Sprachmodelle (LLMs) ist eine herausfordernde Aufgabe, die erhebliche Investitionen in Infrastruktur und Ressourcen erfordert. GitLab war bei der Verwendung von LLMs zur Unterstützung von Entwicklern an vorderster Front, und das Unternehmen hat dabei viel gelernt.

Hier sind einige Erkenntnisse und Erkenntnisse aus GitLabs Erfahrung beim Training von LLMs:

  1. Fangen Sie klein an und skalieren Sie. Bei der Schätzung der Menge an GPU-Ressourcen, die für das Training benötigt werden, ist es am besten, klein anzufangen und schrittweise zu skalieren. Dies hilft Ihnen, Ressourcenverschwendung zu vermeiden und potenzielle Engpässe frühzeitig zu erkennen.
  2. Verwenden Sie dynamisches Batching. Dynamisches Batching kann dir helfen, deinen Trainingsprozess zu optimieren, indem du ähnliche Eingaben gruppierst. Dies kann zu erheblichen Leistungsverbesserungen führen, insbesondere bei großen Datensätzen.
  3. Wählen Sie die richtigen Parameter für die Optimierung. Bei der Feinabstimmung von LLMs gibt es kein Patentrezept für die Auswahl der richtigen Parameter zur Optimierung. Die besten Parameter variieren je nach dem spezifischen LLM, den Trainingsdaten und dem gewünschten Ergebnis. Es ist jedoch wichtig, mit verschiedenen Parametern zu experimentieren, um die beste Kombination für Ihre spezifischen Bedürfnisse zu finden.
  4. Erwägen Sie den Einsatz verteilter Schulungen. Durch verteiltes Training können Sie den Trainingsprozess beschleunigen, indem Sie die Arbeitslast auf mehrere GPUs oder Computer verteilen. Dies kann besonders für das Training großer LLMs mit großen Datensätzen von Vorteil sein.
  5. Experimentiere mit dem Low-Rank-Anpassungsmodus. Der Low-Rank-Anpassungsmodus ist eine Technik, die zur Feinabstimmung von LLMs mit einer kleineren Anzahl von Parametern verwendet werden kann. Dies kann in Fällen nützlich sein, in denen Sie nicht über genügend Ressourcen verfügen, um das gesamte Modell zu optimieren.

Zusätzlich zu den oben genannten Erkenntnissen hat GitLab auch eine Reihe wertvoller Lektionen darüber gelernt, wie wichtig es ist, ein gutes Verständnis des Basismodells und der Trainingsdaten zu haben. GitLab hat beispielsweise herausgefunden, dass es wichtig ist, das Konstrukt des Basismodells zu kennen und zu wissen, wie man die Trainingsdaten kuratiert, um sie für den gewünschten Anwendungsfall zu optimieren.

Triton im Vergleich zu PyTorch, Ensembled GPUs und dynamisches Batching für LLM-Inferenz

GitLab verwendet Triton für LLM-Inferenz, da es sich besser für die Skalierung auf das hohe Volumen an Anfragen eignet, die GitLab empfängt. Triton ist auch einfacher zu umschließen und zu skalieren als andere Modellserver, wie z. B. PyTorch-Server.

GitLab hat noch nicht mit den TGI- oder VLLM-Modellservern von Hugging Face experimentiert, da sich diese noch in einem frühen Entwicklungsstadium befanden, als GitLab seine LLM-Inferenzpipeline zum ersten Mal einsetzte.

Wenn es um dynamisches Batching geht, besteht die Strategie von GitLab darin, für den spezifischen Anwendungsfall, die Last, die Abfrageebene, das Volumen und die Anzahl der verfügbaren GPUs zu optimieren. Wenn GitLab beispielsweise 500 GPUs für ein 7B-Modell hat, kann es eine andere Batch-Strategie verwenden, als wenn es nur ein paar GPUs für ein kleineres Modell hat.

GitLab verwendet auch ein Ensemble von GPUs, um Anfragen zu bearbeiten. Das bedeutet, dass GitLab eine Mischung aus verschiedenen GPU-Typen verwendet, darunter Hochleistungs-GPUs und GPUs mit geringerer Leistung. GitLab verteilt die Anforderungen auf das gesamte Ensemble von GPUs, um Leistung und Kosten zu optimieren.

Im Folgenden finden Sie einige Tipps für den Entwurf einer Architektur zur Zusammenstellung von GPUs und zur Optimierung des Lastenausgleichs:

  1. Verstehe deine Verkehrsmuster. Wann sind Ihre Hauptverkehrszeiten? Welche Arten von Anfragen erhalten Sie am häufigsten?
  2. Verwenden Sie A/B-Tests, um mit verschiedenen GPU-Konfigurationen und Lastausgleichsstrategien zu experimentieren.
  3. Überwachen Sie Ihre Leistung und Latenz, um sicherzustellen, dass Ihre Architektur Ihren Anforderungen entspricht.

Hier sind einige konkrete Beispiele dafür, wie GitLab seine Architektur für zusammengesetzte GPUs und dynamisches Batching optimiert hat:

  1. GitLab verwendet ein dynamisches Orchestrierungssystem, um GPUs Anfragen auf der Grundlage von Typ, Leistung und Verfügbarkeit zuzuweisen.
  2. GitLab verwendet eine Technik namens „GPU-Warm-up“, um sicherzustellen, dass GPUs bereit sind, Anfragen zu bearbeiten, wenn sie benötigt werden.
  3. GitLab verwendet Quantisierung, um die Größe seiner Modelle zu reduzieren, ohne die Genauigkeit zu beeinträchtigen.

Wenn Sie diese Tipps befolgen, können Sie eine Architektur entwerfen, die große Mengen an LLM-Inferenzanforderungen effizient verarbeiten kann.

Wir haben auch versucht zu streamen, und ich denke, wir prüfen auch Streamings für unsere Drittanbieter - Monmayuri

Herausforderungen und Forschung bei der Bewertung von LLMs bei GitLab

Die Bewertung der Leistung großer Sprachmodelle (LLMs) ist eine herausfordernde Aufgabe. GitLab hat an diesem Problem gearbeitet und war mit mehreren Herausforderungen konfrontiert, darunter:

  1. Verschiedene Anwendungsfälle haben unterschiedliche Bedürfnisse. Verschiedene LLM-Anwendungsfälle, wie Chat, Codevorschlag und Erklärung von Sicherheitslücken, haben unterschiedliche Anforderungen und erfordern unterschiedliche Bewertungsmetriken.
  2. Es ist schwierig zu wissen, welches Modell für eine bestimmte Abfrage am besten geeignet ist. Es ist schwierig zu bestimmen, welches LLM bei einer bestimmten Abfrage am besten abschneidet, insbesondere in der Produktion.
  3. Es ist schwierig, Genauigkeit und Akzeptanzraten in Einklang zu bringen. Es ist wichtig, ein Gleichgewicht zwischen der Genauigkeit der LLM-Ergebnisse und der Akzeptanzrate dieser Ergebnisse durch die Benutzer zu finden.

GitLab begegnet diesen Herausforderungen durch:

  1. Kuratieren eines guten Datensatzes für jeden Anwendungsfall. GitLab kuratiert für jeden LLM-Anwendungsfall einen Datensatz, der repräsentativ für die Arten von Abfragen ist, die Benutzer in der Produktion einreichen.
  2. Analyse historischer Daten. GitLab analysiert historische Daten, um zu verstehen, wie LLMs in der Vergangenheit bei verschiedenen Arten von Abfragen abgeschnitten haben.
  3. Entwicklung neuer Bewertungsmetriken. GitLab entwickelt neue Bewertungsmetriken, die auf bestimmte LLM-Anwendungsfälle zugeschnitten sind.
  4. Daten nutzen, um Entscheidungen zu treffen. GitLab verwendet Daten, um Entscheidungen darüber zu treffen, welche LLMs für verschiedene Anwendungsfälle verwendet werden sollen und wie die Parameter dieser LLMs optimiert werden sollen.

Das Ziel von GitLab ist es, einen skalierbaren und datengesteuerten Ansatz zur Bewertung von LLMs zu entwickeln. Dieser Ansatz wird GitLab dabei helfen, sicherzustellen, dass seine LLMs in der Produktion gut funktionieren und die Bedürfnisse seiner Benutzer erfüllen.

Forschungsrichtungen

GitLab forscht auch an neuen Möglichkeiten zur Bewertung von LLMs. Zu den Forschungsrichtungen, die GitLab derzeit erforscht, gehören:

  1. Verwendung von Mensch-Computer-Interaktionsdaten (HCI) zur Bewertung von LLMs. HCI-Daten können Aufschluss darüber geben, wie Benutzer mit LLMs interagieren und wie sie die Ergebnisse dieser Interaktionen wahrnehmen. Diese Daten können verwendet werden, um neue Bewertungsmetriken für LLMs zu entwickeln.
  2. Verwendung kontradiktorischer Methoden zur Bewertung von LLMs. Kontradiktorische Methoden können verwendet werden, um Eingaben zu generieren, die LLMs dazu verleiten sollen, Fehler zu machen. Diese Daten können verwendet werden, um die Robustheit von LLMs gegenüber verschiedenen Arten von Fehlern zu bewerten.
  3. Einsatz von Transferlernen zur Bewertung von LLMs. Transfer Learning kann verwendet werden, um LLMs an neuen Aufgaben zu evaluieren, ohne für jede Aufgabe einen neuen Datensatz sammeln zu müssen. Dies kann nützlich sein, um LLMs bei Aufgaben zu evaluieren, für die es schwierig oder teuer ist, Daten zu sammeln.

Die Forschung von GitLab zur Bewertung von LLMs ist noch nicht abgeschlossen. GitLab hat es sich zur Aufgabe gemacht, neue und innovative Methoden zur Bewertung von LLMs zu entwickeln, um sicherzustellen, dass seine LLMs den Bedürfnissen seiner Nutzer entsprechen.

Die LLM-Architektur von GitLab und die Zukunft von LLMs

Die LLM-Architektur von GitLab ist ein umfassender Ansatz für Training, Bewertung und Bereitstellung von LLMs. Die Architektur ist so konzipiert, dass sie flexibel und skalierbar ist, sodass GitLab problemlos neue Technologien einführen und die Bedürfnisse seiner Benutzer erfüllen kann.

Die Architektur besteht aus mehreren Schlüsselkomponenten:

  1. Datenvorverarbeitung und Tokenisierung: Die LLM-Architektur von GitLab beginnt mit der Vorverarbeitung und Tokenisierung der Daten, die für das Training des LLM verwendet werden. Dieser Prozess beinhaltet das Bereinigen der Daten, das Entfernen von Rauschen und das Konvertieren des Textes in ein Format, das der LLM verstehen kann.
  2. Probenahme und Verkürzung: Sobald die Daten vorverarbeitet und tokenisiert wurden, tastet die LLM-Architektur von GitLab die Daten ab und kürzt sie. Dies geschieht, um die Rechenkosten für das Training des LLM zu reduzieren.
  3. GPU-Suiten: Die LLM-Architektur von GitLab verwendet GPU-Suiten, um das LLM zu trainieren. GPUs sind spezialisierte Prozessoren, die sich gut für das Training von LLMs eignen.
  4. Bewertungssuite: Die LLM-Architektur von GitLab umfasst eine Evaluationssuite zur Bewertung der Leistung des LLM. Die Evaluationssuite umfasst eine Vielzahl von Metriken wie Genauigkeit, Sprachkompetenz und Kohärenz.
  5. Modellieren Sie Checkpoints: Die LLM-Architektur von GitLab speichert in regelmäßigen Abständen Modell-Checkpoints. Dadurch kann GitLab das Training von einem vorherigen Punkt aus fortsetzen, falls etwas schief geht.
  6. Prompt-Bibliothek: Die LLM-Architektur von GitLab beinhaltet eine Prompt-Bibliothek, eine Sammlung von Prompts, die verwendet werden können, um verschiedene Arten von Text aus dem LLM zu generieren.
  7. Modellregistrierung: Die LLM-Architektur von GitLab umfasst eine Modellregistrierung, die ein zentrales Repository für alle LLM-Modelle von GitLab ist.
  8. Bereitstellungs-Engine: Die LLM-Architektur von GitLab umfasst eine Deployment-Engine, die das LLM in der Produktion einsetzt. Die Deployment Engine umfasst einen Load Balancer, um den Datenverkehr auf mehrere Instanzen des LLM zu verteilen.

Die LLM-Architektur von GitLab ist ein leistungsstarkes Tool, das es GitLab ermöglicht, LLMs in großem Maßstab zu trainieren, zu evaluieren und bereitzustellen. Die Architektur ist so konzipiert, dass sie flexibel und skalierbar ist, sodass GitLab problemlos neue Technologien einführen und die Bedürfnisse seiner Benutzer erfüllen kann.

Die Zukunft von LLMs

LLMs sind immer noch eine relativ neue Technologie, aber sie haben das Potenzial, viele Branchen zu revolutionieren. GitLab glaubt, dass LLMs einen erheblichen Einfluss auf die Softwareentwicklungsbranche haben werden.

GitLab verwendet bereits LLMs, um seine Produkte und Dienstleistungen zu verbessern. GitLab verwendet beispielsweise LLMs, um Codevorschläge zu generieren, Sicherheitslücken zu erklären und die Benutzererfahrung seiner Produkte zu verbessern.

GitLab ist der Ansicht, dass auch andere Organisationen in LLMs investieren sollten. LLMs haben das Potenzial, Produktivität, Effizienz und Qualität in vielen Branchen zu verbessern.

Bereiche, in die investiert werden sollte

GitLab empfiehlt Unternehmen, in die folgenden Bereiche zu investieren, um im LLM-Bereich immer einen Schritt voraus zu sein:

  1. Infrastruktur: LLMs erfordern erhebliche Investitionen in die Infrastruktur. Unternehmen müssen in GPUs, Speicher und Netzwerke investieren, um LLMs zu unterstützen.
  2. Tools und Technologien: Es gibt eine Reihe von Tools und Technologien, die Unternehmen bei der Schulung, Bewertung und Bereitstellung von LLMs unterstützen können. Unternehmen sollten in die Tools und Technologien investieren, die für ihre Bedürfnisse geeignet sind.
  3. Talent: LLMs sind eine komplexe Technologie. Unternehmen müssen in Talente investieren, die über die Fähigkeiten und das Wissen verfügen, um LLMs auszubilden, zu evaluieren und einzusetzen.

Durch Investitionen in diese Bereiche können Unternehmen im LLM-Bereich der Konkurrenz immer einen Schritt voraus sein und die Vorteile dieser leistungsstarken Technologie nutzen.

Lesen Sie unsere vorherigen Blogs in der True ML Talks-Reihe:

Schaue weiter TrueML YouTube-Serie und das TrueML lesen Blog-Serie.

Wahre Gießerei ist ein ML Deployment PaaS über Kubernetes, um die Workflows von Entwicklern zu beschleunigen und ihnen gleichzeitig volle Flexibilität beim Testen und Bereitstellen von Modellen zu bieten und gleichzeitig die volle Sicherheit und Kontrolle für das Infra-Team zu gewährleisten. Über unsere Plattform ermöglichen wir Teams für maschinelles Lernen bereitstellen und überwachen Modelle innerhalb von 15 Minuten mit 100% iger Zuverlässigkeit, Skalierbarkeit und der Möglichkeit, innerhalb von Sekunden rückgängig zu machen. So können sie Kosten sparen und Modelle schneller für die Produktion freigeben, wodurch ein echter Geschäftswert erzielt wird.

Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren

Melde dich an
Inhaltsverzeichniss

Steuern, implementieren und verfolgen Sie KI in Ihrer eigenen Infrastruktur

Buchen Sie eine 30-minütige Fahrt mit unserem KI-Experte

Eine Demo buchen

Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren

Demo buchen

Entdecke mehr

May 21, 2024
|
Lesedauer: 5 Minuten

Was sind Einbettungen beim maschinellen Lernen?

May 16, 2026
|
Lesedauer: 5 Minuten

The Agent Sprawl Problem: Why Enterprises Need Control Before Autonomy

Keine Artikel gefunden.
May 15, 2026
|
Lesedauer: 5 Minuten

Introducing Skills Registry: Reusable Agent Skills for Production AI Systems

Keine Artikel gefunden.
Types of AI agents governed by TrueFoundry enterprise control plane
May 15, 2026
|
Lesedauer: 5 Minuten

Types of AI Agents: Definitions, Roles, and What They Mean for Enterprise Deployment

Keine Artikel gefunden.
May 15, 2026
|
Lesedauer: 5 Minuten

OAuth at the MCP Layer: How We Solved Enterprise Token Management for AI Agents

Keine Artikel gefunden.
April 22, 2026
|
Lesedauer: 5 Minuten

TrueFoundry implementiert und optimiert jetzt Open-Source-LLMs mit wenigen Klicks!

Technik und Produkt
LLMs und GenAI

Aktuelle Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Machen Sie eine kurze Produkttour
Produkttour starten
Produkttour