Ich wollte ein medizinisches Q bauen&Ein Feinabstimmungsprojekt, das auf Kaggle wirklich TPU-nativ blieb. Dieses Projekt verwendet Googles „gemma-3–1b-it“, KerasHub, JAX-Backend und eine Kaggle-TPU zur Optimierung der medizinischen Gesprächsdaten von ChatDoctor. Ich habe das Ergebnis auch mit einer viel größeren Gemma verglichen 4 Modell ferngesteuert.

Bild[1]-Feinabstimmung von Gemma 3 auf TPU für Medical Q&A mit Keras und JAX für Windows 7,8,10,11-Winpcsoft.com

Die Kurzversion ist:

– Die Gemma 3 Die Trainingspipeline lief vollständig auf TPU

– LoRA-Feinabstimmung auf einem „TPU v5e-8“ in weniger als einer Minute abgeschlossen

– Qualitative Antworten verbesserten sich stärker als die Benchmark-Genauigkeit

– Gemma 4 blieb auf MedMCQA im Zero-Shot-Modus viel stärker

Es ist erwähnenswert, dass Feinabstimmungsanrufe und Benchmark-Gewinne nicht immer dasselbe sind.

Sie können sich das Kaggle-Notizbuch ansehen Hier.

Medizinische LLM-Feinabstimmung auf TPU mit Keras + JAX

Was ich gebaut habe

Eine Pipeline, die fünf Dinge tut:

1. Verifiziert eine Kaggle-TPU-Umgebung, in der Keras an das JAX-Backend gebunden ist.

2. Lädt und formatiert den ChatDoctor-Datensatz in Eingabeaufforderungs-/Antwortpaare im Gemma Chat-Stil.

3. Bewertet grundlegende Gemma 3 1B unter Verwendung eines festen MedMCQA-Segments mit 100 Fragen.

4. Feinabstimmung von Gemma 3 1B mit LoRA auf TPU.

5. Vergleicht das endgültige Modell mit Gemma 4 über OpenRouter, um einen Zero-Shot-Referenzpunkt zu erhalten.

Der aktive lokale Trainingspfad ist für Gemma vollständig TPU-nativ 3. Die Gemma 4 Der Abschnitt ist absichtlich getrennt und abgelegen, Daher bezeichne ich es eindeutig als API-Vergleich und nicht als lokale TPU-Inferenz.

Umgebung und TPU-Setup

Dieser Lauf wurde in Kaggle mit durchgeführt:

Python „3.12.13“.
NumPy „2.4.3“.
Datensätze „4.8.3“.
Hartes „3.13.2“.
JAX „0.9.2“.

und 8` TPU-Geräte, die für JAX sichtbar sind. Das entscheidende Einrichtungsdetail bestand darin, sicherzustellen, dass Keras sah „HARD_BACKEND=jax“ vor dem ersten Import:

Betriebssystem importieren
os.environ["KERAS_BACKEND"] = "jax"
harter Import
Jax importieren
drucken(keras.backend.backend())
drucken(jax.devices())

Das klingt unbedeutend, Aber in Notebook-Umgebungen ist es oft der Unterschied zwischen einem sauberen TPU-Lauf und einer verwirrenden Backend-Diskrepanz.

Datensatzauswahl: ChatDoctor zur Feinabstimmung, MedMCQA für Benchmarking

Ich habe zwei Datensätze mit unterschiedlichen Rollen verwendet:

– „LinhDuong/chatdoctor-200k“ zur medizinischen Feinabstimmung im Gespräch

– „medmcqa“ für einen medizinischen Multiple-Choice-Benchmark

Vom letzten Lauf:

– Rohe ChatDoctor-Beispiele: „207.408“.

– Gültige formatierte Beispiele: „207.405“.

– Zugvertrieb eingesetzt: „1.800“.

– Verwendete Validierungsaufteilung: „200“.

– MedMCQA-Score: „100“.

ChatDoctor wurde in Gemma Chat Rounds umformatiert:

Text = (
f"<start_of_turn>user\n"
f"You are a helpful medical assistant. Answer the patient's question clearly and safely.\n\n"
f"{patient_msg}<end_of_turn>\N"
f"<start_of_turn>model\n"
f"{doctor_msg}<end_of_turn>"
)

Diese Struktur ermöglichte es mir, die Vorverarbeitung in KerasHub fortzusetzen, anstatt manuell eine separate Tokenisierungs-Trainingspipeline zu erstellen.

Grundlinie: Gemma 3 1B vor der Feinabstimmung

Als Grundlage, Ich habe „google/gemma-3–1b-it“ direkt über KerasHub geladen:

baseline_preprocessor = keras_hub.models.Gemma3CausalLMPreprocessor.from_preset(
"hf://google/gemma-3–1b-it",
sequence_length=256,
)
baseline_gemma_lm = keras_hub.models.Gemma3CausalLM.from_preset(
"hf://google/gemma-3–1b-it",
preprocessor=baseline_preprocessor,
)
baseline_gemma_lm.compile(sampler="greedy")

Für das MedMCQA-Segment mit 100 Fragen, das Basismodell erreicht 30/100, eine Genauigkeit von 30.0%. Dies gab mir den Bezugspunkt „vor der Feinabstimmung“ für den Rest des Projekts.

Feinabstimmung des Setups: LoRA auf TPU

Das Modell hatte insgesamt „999.885.952“ Parameter. Nach der Aktivierung von LoRA, Nur „2.609.152“ Parameter waren trainierbar, Dies macht dies auf Kaggle TPU praktisch, ohne zu versuchen, das gesamte Modell vollständig zu optimieren.

Der LoRA-Schritt war einfach:

gemma_lm.backbone.enable_lora(Rang=16)

Trainingskonfiguration vom letzten Lauf:

Sequenzlänge: „256“.
Zugproben: „1.800“.
Validierungsproben: „200“.
Chargengröße: „1“.
Epochen: „1“.
Lernrate: „1e-4“.
LoRA-Rang: „16“.

Das Modell wurde mit SGD plus spärlicher kategorialer Kreuzentropie erstellt:

optimierer = keras.optimizers.SGD(learning_rate=1e-4)
gemma_lm.compile(
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
Optimierer=Optimierer,
weighted_metrics=[keras.metrics.SparseCategoricalAccuracy(name="accuracy")],
sampler="greedy",
)

TPU-Trainingsergebnisse

Der Trainingslauf auf der TPU wurde erfolgreich abgeschlossen, und die erste Charge verhielt sich genau so, wie TPU-Benutzer es erwarten: zunächst langsamer aufgrund der XLA-Kompilierung, dann viel schnellere Steady-State-Ausführung.

Endgültige TPU-Trainingsstatistiken vom Notebook:

Hardware: „Google Cloud TPU (8 Geräte)`
Modell: `google/gemma-3–1b-it`
Rahmen: „Schwer 3.13.2 + JAX-Backend`
Verfahren: „LoRA (Rang=16)`
Zugbeispiele: „1800“.
Chargengröße: „1“.
Epochen: „1“.
Gesamtzugzeit: „0,7 Minuten“.
Durchsatz: „~10512 Token/Sek.“
Trainingsmetriken:
Zugverlust: „1,8927“.
Validierungsverlust: „1.7304“.
Trainieren Sie die Token-Genauigkeit: „0,3061“.
Genauigkeit des Validierungstokens: „0,3129“.

Die Genauigkeit auf Token-Ebene ist ein Sprachmodell-Trainingssignal, kein Maß für „Genauigkeit bei der Beantwortung medizinischer Fragen“. daher, Ich betrachtete es als eine Überprüfung der geistigen Gesundheit und nicht als einen Schlagzeilenbefund.

Hat die Feinabstimmung das Modell verbessert??

Hier wird die Geschichte interessant. Auf MedMCQA lautete die Antwort: nicht wirklich.

Die fein abgestimmte Gemma 3 Modell erreicht 30/100, eine Genauigkeit von 30.0%. Das ist genau flach im Vergleich zum Basiswert dieses Benchmarks.

Aber die qualitativen Ergebnisse veränderten sich dennoch. In den nebeneinander liegenden Beispielen, Das verfeinerte Modell wurde etwas direkter und sicherheitsorientierter. Zum Beispiel, wenn Sie Brustschmerzen und Atemnot haben:

– Die grundsätzliche Antwort war vorsichtig und erklärend

– Die fein abgestimmte Antwort deutete deutlicher auf eine dringende ärztliche Untersuchung hin

Dieses Muster zeigte sich auch in den anderen Beispielen. Obwohl das Modell nicht plötzlich zum Maßstab wurde, Durch die Feinabstimmung der Daten wurde es jedoch stärker an den Ton der medizinischen Leitlinien angepasst.

Dies ist eine wichtige praktische Lektion: Durch die Feinabstimmung der Konversationsdomänendaten können der Antwortstil und die Sicherheitsbetonung erheblich verändert werden, ohne dass sich ein Multiple-Choice-Benchmark wesentlich verschiebt.

ROUGE-L-Check durchgeführt

Ich habe auch eine einfache Überprüfung durchgeführt 20 Validierungsproben von ChatDoctor und gemessenes ROUGE-L zwischen Modellausgaben und Referenzantworten.

Endergebnis: ROT-L: 0.106

Ich würde diese Zahl nicht überbewerten. Es sollte am besten als grobes Ähnlichkeitssignal und nicht als Ersatz für die klinische Qualitätsbewertung behandelt werden. Trotzdem, Es fügt eine weitere Perspektive über MedMCQA hinaus hinzu.

Gemma 4 Vergleich über OpenRouter

Für ein stärkeres Referenzmodell, Ich habe eine optionale Gemma hinzugefügt 4 Abschnitt über OpenRouter:

– Modell: `google/gemma-4–26b-a4b-it`

– Ausführungsmodus: Remote-API-Inferenz

– nicht TPU lokal

Die Gemma 4 Der Vergleich war nützlich, aber es war nicht Teil des TPU-Trainingspfades. Es diente der Beantwortung einer Produktfrage: Wie schneidet ein fein abgestimmtes kleines Modell im Vergleich zu einem größeren ab?, neueres Modell ab Werk?

Auf dem gleichen 100 MedMCQA-Fragen, Gemma 4 erreichte eine Punktzahl von 68/100, d.h. eine Genauigkeit von 68.0%. Das ist ein großer Unterschied sowohl zu den Basisläufen als auch zu der fein abgestimmten Gemma 3 läuft.

Auch die qualitativen Ergebnisse waren stärker. Im Beispiel Brustschmerzen, Gemma 4 ging sofort zu den Notfallanweisungen, Weisen Sie den Benutzer ausdrücklich darauf hin, die Situation als potenziellen Notfall zu betrachten und sofort einen Arzt aufzusuchen. Am Beispiel der Müdigkeit, Durst und häufiges Wasserlassen, Die klassische Trias der mit Diabetes verbundenen Symptome wurde klar erkannt.

Endgültige Ergebnisse

Bild[2]-Feinabstimmung von Gemma 3 auf TPU für Medical Q&A mit Keras und JAX für Windows 7,8,10,11-Winpcsoft.com

Zusätzliche Metriken:

  • ROUGE-L auf gehaltenen ChatDoctor-Beispielen: „0,106“.

– Trainierbare Parameter mit LoRA: „2.609.152“.

– Gesamtparameter: „999.885.952“.

– Durchgehende TPU-Schulungszeit: „0,7 Minuten“.

Was dieses Projekt tatsächlich zeigt

Der größte Vorteil besteht darin, dass die Feinabstimmung nicht immer besser ist als ein besseres Basismodell. Mein letzter Lauf stützt diese Behauptung nicht.

Was es zeigt, ist:

– Keras und JAX sind ein praktischer TPU-Trainings-Stack für Kaggle

– Gemma 3 1B kann mit einem sehr geringen Anpassungsbudget vollständig auf einer TPU feinabgestimmt werden

– Eine Feinabstimmung des medizinischen Dialogs kann das qualitative Verhalten verändern, selbst wenn die Benchmark-Genauigkeit gleich bleibt

– Ein viel größeres neueres Modell kann im Zero-Shot-Modus immer noch die sachliche medizinische MCQ-Bewertung dominieren

Letzte Gedanken

Die Gemma 3 Der Trainingspfad funktionierte genau so, wie ich es wollte, d.h. einfache Einrichtung, saubere TPU-Ausführung, kleiner trainierbarer Platzbedarf, und schnelle Iteration. Die Ergebnisse waren auch eine gute Erinnerung daran, dass nicht jeder erfolgreiche Trainingslauf zu einem auffälligen Benchmark-Sprung führt. Manchmal entsteht echter Erfolg durch den Aufbau einer soliden Pipeline, verstehen, was sich geändert hat, und ehrlich darüber sein, was sich nicht geändert hat.

Gesamt, Ich habe Gemma erfolgreich optimiert 3 1B für medizinischen Dialog über Kaggle TPU mit Keras und JAX, stellte qualitative Verbesserungen der Reaktionsfähigkeit fest, und bestätigte, dass Gemma entfernt wurde 4 Der Ausgangswert übertrifft ihn bei MedMCQA immer noch deutlich.

blank


Feinabstimmung von Gemma 3 auf TPU für Medical Q&Ein mit Keras und JAX wurde ursprünglich in Google Developer Experts auf Medium veröffentlicht, wo die Leute das Gespräch fortsetzen, indem sie diese Geschichte hervorheben und darauf reagieren.