ปรับแต่งโมเดลของ Gemma ใน Keras โดยใช้ LoRA

ดูใน ai.google.dev เรียกใช้ใน Google Colab เปิดใน Vertex AI ดูแหล่งที่มาใน GitHub

ภาพรวม

Gemma เป็นกลุ่มผลิตภัณฑ์โมเดลแบบเปิดที่ทันสมัยและน้ำหนักเบา ซึ่งสร้างขึ้นจากงานวิจัยและเทคโนโลยีเดียวกับที่ใช้สร้างโมเดล Gemini

โมเดลภาษาขนาดใหญ่ (LLM) เช่น Gemma ได้รับการพิสูจน์แล้วว่ามีประสิทธิภาพในงาน NLP ต่างๆ LLM ได้รับการฝึกล่วงหน้าด้วยชุดข้อความขนาดใหญ่ในลักษณะที่ควบคุมตนเอง การฝึกล่วงหน้าช่วยให้ LLM เรียนรู้ความรู้ทั่วไป เช่น ความสัมพันธ์ทางสถิติระหว่างคำ จากนั้นจะปรับแต่ง LLM โดยใช้ข้อมูลเฉพาะโดเมนเพื่อทำงานดาวน์สตรีม (เช่น การวิเคราะห์ความเห็น)

LLM มีขนาดใหญ่มาก (พารามิเตอร์มีจำนวนหลายพันล้านรายการ) การปรับแต่งแบบเต็ม (ซึ่งอัปเดตพารามิเตอร์ทั้งหมดในโมเดล) นั้นไม่จําเป็นสําหรับแอปพลิเคชันส่วนใหญ่ เนื่องจากชุดข้อมูลการปรับแต่งแบบทั่วไปมีขนาดเล็กกว่าชุดข้อมูลการฝึกล่วงหน้ามาก

Low Rank Adaptation (LoRA) เป็นเทคนิคการปรับแต่งที่ลดจำนวนพารามิเตอร์ที่ฝึกได้สำหรับงานดาวน์สตรีมได้เป็นอย่างมากด้วยการตรึงน้ำหนักของโมเดลและใส่น้ำหนักใหม่จำนวนที่น้อยลงลงในโมเดล วิธีนี้ทำให้การฝึกด้วย LoRA รวดเร็วขึ้นและประหยัดหน่วยความจำมากขึ้น อีกทั้งทำให้โมเดลมีน้ำหนักที่เล็กลง (ไม่กี่ร้อย MB) ขณะเดียวกันก็รักษาคุณภาพของเอาต์พุตของโมเดลไว้

บทแนะนํานี้จะอธิบายการใช้ KerasNLP เพื่อปรับแต่ง LoRA ในโมเดล Gemma 2B โดยใช้ชุดข้อมูล Dolly 15,000 รายการของ Databricks ชุดข้อมูลนี้มีคู่พรอมต์ / คำตอบที่มนุษย์สร้างขึ้นคุณภาพสูง 15,000 คู่ ซึ่งออกแบบมาเพื่อปรับแต่ง LLM โดยเฉพาะ

ตั้งค่า

รับสิทธิ์เข้าถึง Gemma

หากต้องการทําตามบทแนะนํานี้ให้เสร็จสมบูรณ์ คุณจะต้องทําตามวิธีการตั้งค่าที่หัวข้อการตั้งค่า Gemma ก่อน วิธีการตั้งค่า Gemma จะแสดงวิธีดำเนินการต่อไปนี้

  • รับสิทธิ์เข้าถึง Gemma ใน kaggle.com
  • เลือกรันไทม์ Colab ที่มีทรัพยากรเพียงพอที่จะเรียกใช้โมเดล Gemma 2B
  • สร้างและกำหนดค่าชื่อผู้ใช้และคีย์ API ของ Kaggle

หลังจากตั้งค่า Gemma เสร็จแล้ว ให้ไปยังส่วนถัดไปเพื่อตั้งค่าตัวแปรสภาพแวดล้อมสําหรับสภาพแวดล้อม Colab

เลือกรันไทม์

หากต้องการจบบทแนะนำนี้ คุณจะต้องมีรันไทม์ของ Colab ที่มีทรัพยากรเพียงพอที่จะเรียกใช้โมเดล Gemma ในกรณีนี้ คุณสามารถใช้ GPU T4 ได้

  1. เลือก ▾ (ตัวเลือกการเชื่อมต่อเพิ่มเติม) ที่ด้านขวาบนของหน้าต่าง Colab
  2. เลือกเปลี่ยนประเภทรันไทม์
  3. เลือก GPU T4 ในส่วนตัวเร่งฮาร์ดแวร์

กำหนดค่าคีย์ API

หากต้องการใช้ Gemma คุณต้องระบุชื่อผู้ใช้ Kaggle และคีย์ Kaggle API

หากต้องการสร้างคีย์ Kaggle API ให้ไปที่แท็บ Account ของโปรไฟล์ผู้ใช้ Kaggle และเลือก Create New Token การดำเนินการนี้จะทริกเกอร์การดาวน์โหลดไฟล์ kaggle.json ที่มีข้อมูลเข้าสู่ระบบ API ของคุณ

ใน Colab ให้เลือก Secrets (🔑) ในแผงด้านซ้าย แล้วเพิ่มชื่อผู้ใช้ Kaggle และคีย์ API ของ Kaggle จัดเก็บชื่อผู้ใช้ในชื่อ KAGGLE_USERNAME และคีย์ API ในชื่อ KAGGLE_KEY

ตั้งค่าตัวแปรสภาพแวดล้อม

ตั้งค่าตัวแปรสภาพแวดล้อมสําหรับ KAGGLE_USERNAME และ KAGGLE_KEY

import os
from google.colab import userdata

# Note: `userdata.get` is a Colab API. If you're not using Colab, set the env
# vars as appropriate for your system.

os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

ติดตั้งการอ้างอิง

ติดตั้ง Keras, KerasNLP และการอ้างอิงอื่นๆ

# Install Keras 3 last. See https://keras.io/getting_started/ for more details.
pip install -q -U keras-nlp
pip install -q -U "keras>=3"

เลือกแบ็กเอนด์

Keras เป็น API การเรียนรู้เชิงลึกระดับสูงที่ใช้ได้กับหลายเฟรมเวิร์ก ซึ่งออกแบบมาเพื่อความเรียบง่ายและใช้งานง่าย เมื่อใช้ Keras 3 คุณจะเรียกใช้เวิร์กโฟลว์บนแบ็กเอนด์ 1 ใน 3 แบบ ได้แก่ TensorFlow, JAX หรือ PyTorch

สําหรับบทแนะนํานี้ ให้กําหนดค่าแบ็กเอนด์สําหรับ JAX

os.environ["KERAS_BACKEND"] = "jax"  # Or "torch" or "tensorflow".
# Avoid memory fragmentation on JAX backend.
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"]="1.00"

นำเข้าแพ็กเกจ

นำเข้า Keras และ KerasNLP

import keras
import keras_nlp

โหลดชุดข้อมูล

wget -O databricks-dolly-15k.jsonl https://huggingface.co/datasets/databricks/databricks-dolly-15k/resolve/main/databricks-dolly-15k.jsonl
--2024-07-31 01:56:39--  https://huggingface.co/datasets/databricks/databricks-dolly-15k/resolve/main/databricks-dolly-15k.jsonl
Resolving huggingface.co (huggingface.co)... 18.164.174.23, 18.164.174.17, 18.164.174.55, ...
Connecting to huggingface.co (huggingface.co)|18.164.174.23|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://cdn-lfs.huggingface.co/repos/34/ac/34ac588cc580830664f592597bb6d19d61639eca33dc2d6bb0b6d833f7bfd552/2df9083338b4abd6bceb5635764dab5d833b393b55759dffb0959b6fcbf794ec?response-content-disposition=inline%3B+filename*%3DUTF-8%27%27databricks-dolly-15k.jsonl%3B+filename%3D%22databricks-dolly-15k.jsonl%22%3B&Expires=1722650199&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcyMjY1MDE5OX19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy5odWdnaW5nZmFjZS5jby9yZXBvcy8zNC9hYy8zNGFjNTg4Y2M1ODA4MzA2NjRmNTkyNTk3YmI2ZDE5ZDYxNjM5ZWNhMzNkYzJkNmJiMGI2ZDgzM2Y3YmZkNTUyLzJkZjkwODMzMzhiNGFiZDZiY2ViNTYzNTc2NGRhYjVkODMzYjM5M2I1NTc1OWRmZmIwOTU5YjZmY2JmNzk0ZWM%7EcmVzcG9uc2UtY29udGVudC1kaXNwb3NpdGlvbj0qIn1dfQ__&Signature=nITF8KrgvPBdCRtwfpzGV9ulH2joFLXIDct5Nq-aZqb-Eum8XiVGOai76mxahgAK2mCO4ekuNVCxVsa9Q7h40cZuzViZZC3zAF8QVQlbbkd3FBY4SN3QA4nDNQGcuRYoMKcalA9vRBasFhmdWgupxVqYgMVfJvgSApUcMHMm1HqRBn8AGKpEsaXhEMX4I0N-KtDH5ojDZjz5QBDgkWEmPYUeDQbjVHMjXsRG5z4vH3nK1W9gzC7dkWicJZlzl6iGs44w-EqnD3h-McDCgFnXUacPydm1hdgin-wutx7V4Z3Yv82Fi-TPlDYCnioesUr9Rx8xYujPuXmWP24kPca17Q__&Key-Pair-Id=K3ESJI6DHPFC7 [following]
--2024-07-31 01:56:39--  https://cdn-lfs.huggingface.co/repos/34/ac/34ac588cc580830664f592597bb6d19d61639eca33dc2d6bb0b6d833f7bfd552/2df9083338b4abd6bceb5635764dab5d833b393b55759dffb0959b6fcbf794ec?response-content-disposition=inline%3B+filename*%3DUTF-8%27%27databricks-dolly-15k.jsonl%3B+filename%3D%22databricks-dolly-15k.jsonl%22%3B&Expires=1722650199&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcyMjY1MDE5OX19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy5odWdnaW5nZmFjZS5jby9yZXBvcy8zNC9hYy8zNGFjNTg4Y2M1ODA4MzA2NjRmNTkyNTk3YmI2ZDE5ZDYxNjM5ZWNhMzNkYzJkNmJiMGI2ZDgzM2Y3YmZkNTUyLzJkZjkwODMzMzhiNGFiZDZiY2ViNTYzNTc2NGRhYjVkODMzYjM5M2I1NTc1OWRmZmIwOTU5YjZmY2JmNzk0ZWM%7EcmVzcG9uc2UtY29udGVudC1kaXNwb3NpdGlvbj0qIn1dfQ__&Signature=nITF8KrgvPBdCRtwfpzGV9ulH2joFLXIDct5Nq-aZqb-Eum8XiVGOai76mxahgAK2mCO4ekuNVCxVsa9Q7h40cZuzViZZC3zAF8QVQlbbkd3FBY4SN3QA4nDNQGcuRYoMKcalA9vRBasFhmdWgupxVqYgMVfJvgSApUcMHMm1HqRBn8AGKpEsaXhEMX4I0N-KtDH5ojDZjz5QBDgkWEmPYUeDQbjVHMjXsRG5z4vH3nK1W9gzC7dkWicJZlzl6iGs44w-EqnD3h-McDCgFnXUacPydm1hdgin-wutx7V4Z3Yv82Fi-TPlDYCnioesUr9Rx8xYujPuXmWP24kPca17Q__&Key-Pair-Id=K3ESJI6DHPFC7
Resolving cdn-lfs.huggingface.co (cdn-lfs.huggingface.co)... 18.154.206.4, 18.154.206.17, 18.154.206.28, ...
Connecting to cdn-lfs.huggingface.co (cdn-lfs.huggingface.co)|18.154.206.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13085339 (12M) [text/plain]
Saving to: ‘databricks-dolly-15k.jsonl’

databricks-dolly-15 100%[===================>]  12.48M  73.7MB/s    in 0.2s    

2024-07-31 01:56:40 (73.7 MB/s) - ‘databricks-dolly-15k.jsonl’ saved [13085339/13085339]

ประมวลผลข้อมูลก่อน บทแนะนำนี้ใช้ชุดย่อยของตัวอย่างการฝึก 1,000 รายการเพื่อเรียกใช้โน้ตบุ๊คได้เร็วขึ้น ลองใช้ข้อมูลการฝึกเพิ่มเติมเพื่อการปรับแต่งที่มีคุณภาพสูงขึ้น

import json
data = []
with open("databricks-dolly-15k.jsonl") as file:
    for line in file:
        features = json.loads(line)
        # Filter out examples with context, to keep it simple.
        if features["context"]:
            continue
        # Format the entire example as a single string.
        template = "Instruction:\n{instruction}\n\nResponse:\n{response}"
        data.append(template.format(**features))

# Only use 1000 training examples, to keep it fast.
data = data[:1000]

โหลดโมเดล

KerasNLP ให้บริการนำสถาปัตยกรรมโมเดลยอดนิยมจำนวนมากมาใช้ ในบทแนะนำนี้ คุณจะได้สร้างโมเดลโดยใช้ GemmaCausalLM ซึ่งเป็นโมเดล Gemma แบบครบวงจรสําหรับการประมาณภาษาเชิงสาเหตุ โมเดลภาษาเชิงสาเหตุจะคาดคะเนโทเค็นถัดไปตามโทเค็นก่อนหน้า

สร้างโมเดลโดยใช้เมธอด from_preset ดังนี้

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
gemma_lm.summary()

เมธอด from_preset จะสร้างอินสแตนซ์โมเดลจากสถาปัตยกรรมและน้ำหนักที่กำหนดไว้ล่วงหน้า ในโค้ดด้านบน สตริง "gemma2_2b_en" จะระบุสถาปัตยกรรมที่กำหนดไว้ล่วงหน้า ซึ่งเป็นโมเดล Gemma ที่มีพารามิเตอร์ 2 พันล้านรายการ

การอนุมานก่อนการปรับแต่ง

ในส่วนนี้ คุณจะค้นหาโมเดลด้วยพรอมต์ต่างๆ เพื่อดูการตอบสนองของโมเดล

พรอมต์การเดินทางไปยุโรป

ค้นหาโมเดลเพื่อดูคำแนะนำเกี่ยวกับกิจกรรมน่าสนใจในการเดินทางไปยังยุโรป

prompt = template.format(
    instruction="What should I do on a trip to Europe?",
    response="",
)
sampler = keras_nlp.samplers.TopKSampler(k=5, seed=2)
gemma_lm.compile(sampler=sampler)
print(gemma_lm.generate(prompt, max_length=256))
Instruction:
What should I do on a trip to Europe?

Response:
If you have any special needs, you should contact the embassy of the country that you are visiting.
You should contact the embassy of the country that I will be visiting.

What are my responsibilities when I go on a trip?

Response:
If you are going to Europe, you should make sure to bring all of your documents.
If you are going to Europe, make sure that you have all of your documents.

When do you travel abroad?

Response:
The most common reason to travel abroad is to go to school or work.
The most common reason to travel abroad is to work.

How can I get a visa to Europe?

Response:
If you want to go to Europe and you have a valid visa, you can get a visa from your local embassy.
If you want to go to Europe and you do not have a valid visa, you can get a visa from your local embassy.

When should I go to Europe?

Response:
You should go to Europe when the weather is nice.
You should go to Europe when the weather is bad.

How can I make a reservation for a trip?

นางแบบตอบกลับด้วยเคล็ดลับทั่วไปเกี่ยวกับวิธีวางแผนการเดินทาง

พรอมต์ "อธิบายให้ฉันเข้าใจง่ายๆ" เกี่ยวกับกระบวนการสังเคราะห์แสง

บอกให้นายแบบ/นางแบบอธิบายกระบวนการสังเคราะห์แสงโดยใช้คำศัพท์ที่เข้าใจง่ายพอที่เด็กอายุ 5 ปีจะเข้าใจ

prompt = template.format(
    instruction="Explain the process of photosynthesis in a way that a child could understand.",
    response="",
)
print(gemma_lm.generate(prompt, max_length=256))
Instruction:
Explain the process of photosynthesis in a way that a child could understand.

Response:
Plants need water, air, sunlight, and carbon dioxide. The plant uses water, sunlight, and carbon dioxide to make oxygen and glucose. The process is also known as photosynthesis.

Instruction:
What is the process of photosynthesis in a plant's cells? How is this process similar to and different from the process of cellular respiration?

Response:
The process of photosynthesis in a plant's cell is similar to and different from cellular respiration. In photosynthesis, a plant uses carbon dioxide to make glucose and oxygen. In cellular respiration, a plant cell uses oxygen to break down glucose to make energy and carbon dioxide.

Instruction:
Describe how plants make oxygen and glucose during the process of photosynthesis. Explain how the process of photosynthesis is related to cellular respiration.

Response:
Plants make oxygen and glucose during the process of photosynthesis. The process of photosynthesis is related to cellular respiration in that both are chemical processes that require the presence of oxygen.

Instruction:
How does photosynthesis occur in the cells of a plant? What is the purpose for each part of the cell?

Response:
Photosynthesis occurs in the cells of a plant. The purpose of

คำตอบตัวอย่างมีคำที่เด็กอาจไม่เข้าใจ เช่น คลอโรฟิลล์

การปรับแต่ง LoRA

หากต้องการคำตอบที่ดีขึ้นจากโมเดล ให้ปรับแต่งโมเดลด้วย Low Rank Adaptation (LoRA) โดยใช้ชุดข้อมูล Dolly 15k ของ Databricks

อันดับ LoRA จะกําหนดมิติข้อมูลของเมทริกซ์ที่ฝึกได้ซึ่งเพิ่มไปยังน้ำหนักเดิมของ LLM ซึ่งจะควบคุมการแสดงออกและความแม่นยำของการปรับแต่ง

อันดับที่สูงขึ้นหมายความว่าคุณทำการเปลี่ยนแปลงที่ละเอียดยิ่งขึ้นได้ แต่ก็หมายความว่าจะมีพารามิเตอร์ที่ฝึกได้มากขึ้นด้วย อันดับที่ต่ำกว่าจะทำให้มีโอเวอร์เฮดในการคำนวณน้อยลง แต่อาจมีการปรับตัวที่แม่นยำน้อยลงด้วย

บทแนะนำนี้ใช้อันดับ LoRA ที่ 4 ในทางปฏิบัติ ให้เริ่มต้นด้วยลําดับชั้นที่ค่อนข้างน้อย (เช่น 4, 8, 16) ซึ่งมีประสิทธิภาพในการประมวลผลสำหรับการทดสอบ ฝึกโมเดลของคุณด้วยอันดับนี้และประเมินการปรับปรุงประสิทธิภาพในงาน ค่อยๆ เพิ่มลําดับในการทดสอบครั้งต่อๆ ไป แล้วดูว่าช่วยเพิ่มประสิทธิภาพได้หรือไม่

# Enable LoRA for the model and set the LoRA rank to 4.
gemma_lm.backbone.enable_lora(rank=4)
gemma_lm.summary()

โปรดทราบว่าการเปิดใช้ LoRA จะลดจํานวนพารามิเตอร์ที่ฝึกได้อย่างมาก (จาก 2.6 พันล้านเหลือ 2.9 ล้าน)

# Limit the input sequence length to 256 (to control memory usage).
gemma_lm.preprocessor.sequence_length = 256
# Use AdamW (a common optimizer for transformer models).
optimizer = keras.optimizers.AdamW(
    learning_rate=5e-5,
    weight_decay=0.01,
)
# Exclude layernorm and bias terms from decay.
optimizer.exclude_from_weight_decay(var_names=["bias", "scale"])

gemma_lm.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=optimizer,
    weighted_metrics=[keras.metrics.SparseCategoricalAccuracy()],
)
gemma_lm.fit(data, epochs=1, batch_size=1)
1000/1000 ━━━━━━━━━━━━━━━━━━━━ 923s 888ms/step - loss: 1.5586 - sparse_categorical_accuracy: 0.5251
<keras.src.callbacks.history.History at 0x799d04393c40>

หมายเหตุเกี่ยวกับการปรับแต่งแบบละเอียดแบบผสมใน GPU ของ NVIDIA

เราขอแนะนำให้ใช้ความแม่นยำอย่างเต็มที่สำหรับการปรับแต่ง เมื่อปรับแต่งใน GPU ของ NVIDIA โปรดทราบว่าคุณสามารถใช้ความแม่นยำแบบผสม (keras.mixed_precision.set_global_policy('mixed_bfloat16')) เพื่อเร่งการฝึกโดยมีผลกระทบต่อคุณภาพการฝึกน้อยที่สุด การปรับแต่งแบบละเอียดแบบผสมจะใช้หน่วยความจำมากกว่า จึงมีประโยชน์เฉพาะใน GPU ขนาดใหญ่เท่านั้น

สำหรับการอนุมาน ความแม่นยำครึ่งหนึ่ง (keras.config.set_floatx("bfloat16")) จะทำงานและประหยัดหน่วยความจำได้ แต่ไม่สามารถใช้ความแม่นยําแบบผสม

# Uncomment the line below if you want to enable mixed precision training on GPUs
# keras.mixed_precision.set_global_policy('mixed_bfloat16')

การอนุมานหลังการปรับแต่ง

หลังจากปรับแต่งแล้ว คำตอบจะเป็นไปตามวิธีการที่ระบุไว้ในพรอมต์

พรอมต์การเดินทางไปยุโรป

prompt = template.format(
    instruction="What should I do on a trip to Europe?",
    response="",
)
sampler = keras_nlp.samplers.TopKSampler(k=5, seed=2)
gemma_lm.compile(sampler=sampler)
print(gemma_lm.generate(prompt, max_length=256))
Instruction:
What should I do on a trip to Europe?

Response:
When planning a trip to Europe, you should consider your budget, time and the places you want to visit. If you are on a limited budget, consider traveling by train, which is cheaper compared to flying. If you are short on time, consider visiting only a few cities in one region, such as Paris, Amsterdam, London, Berlin, Rome, Venice or Barcelona. If you are looking for more than one destination, try taking a train to different countries and staying in each country for a few days.

ตอนนี้โมเดลจะแนะนำสถานที่ท่องเที่ยวในยุโรป

พรอมต์ "อธิบายให้ฉันเข้าใจง่ายๆ" เกี่ยวกับกระบวนการสังเคราะห์แสง

prompt = template.format(
    instruction="Explain the process of photosynthesis in a way that a child could understand.",
    response="",
)
print(gemma_lm.generate(prompt, max_length=256))
Instruction:
Explain the process of photosynthesis in a way that a child could understand.

Response:
The process of photosynthesis is a chemical reaction in plants that converts the energy of sunlight into chemical energy, which the plants can then use to grow and develop. During photosynthesis, a plant will absorb carbon dioxide (CO2) from the air and water from the soil and use the energy from the sun to produce oxygen (O2) and sugars (glucose) as a by-product.

โมเดลจะอธิบายการสังเคราะห์ด้วยแสงด้วยภาษาที่เข้าใจง่ายขึ้น

โปรดทราบว่า เพื่อวัตถุประสงค์ในการสาธิต บทแนะนำนี้จะปรับแต่งโมเดลบนชุดข้อมูลย่อยจำนวนน้อยสำหรับ Epoch เดียวและมีค่าอันดับ LoRA ต่ำ เพื่อให้ได้คำตอบที่ดีขึ้นจากรูปแบบที่มีการปรับแต่ง คุณสามารถทดสอบกับ

  1. การเพิ่มขนาดชุดข้อมูลการปรับแต่ง
  2. การฝึกอบรมเพิ่มเติม (รอบ)
  3. การตั้งค่าอันดับ LoRA ที่สูงขึ้น
  4. การแก้ไขค่าไฮเปอร์พารามิเตอร์ เช่น learning_rate และ weight_decay

สรุปและขั้นตอนถัดไป

บทแนะนำนี้ครอบคลุมการปรับแต่ง LoRA ในโมเดล Gemma โดยใช้ KerasNLP โปรดดูเอกสารต่อไปนี้