ai.google.dev-এ দেখুন | Google Colab-এ চালান | Vertex AI-তে খুলুন | GitHub-এ উৎস দেখুন |
ওভারভিউ
জেমিনি মডেল তৈরি করতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি থেকে তৈরি হালকা ওজনের, অত্যাধুনিক ওপেন মডেলের একটি পরিবার।
Gemma-এর মতো বড় ভাষা মডেল (LLMs) বিভিন্ন এনএলপি কাজগুলিতে কার্যকর বলে দেখানো হয়েছে। একজন এলএলএমকে প্রথমে স্ব-তত্ত্বাবধানে একটি বৃহৎ পাঠ্যের উপর প্রাক-প্রশিক্ষিত করা হয়। প্রাক-প্রশিক্ষণ এলএলএম-কে সাধারণ-উদ্দেশ্য জ্ঞান শিখতে সাহায্য করে, যেমন শব্দের মধ্যে পরিসংখ্যানগত সম্পর্ক। একটি LLM তারপর ডোমেন-নির্দিষ্ট ডেটার সাথে ডাউনস্ট্রিম কাজগুলি (যেমন সেন্টিমেন্ট বিশ্লেষণ) সঞ্চালনের জন্য সূক্ষ্ম সুর করা যেতে পারে।
এলএলএম আকারে অত্যন্ত বড় (বিলিয়ন ক্রমে পরামিতি)। বেশিরভাগ অ্যাপ্লিকেশনের জন্য সম্পূর্ণ ফাইন-টিউনিং (যা মডেলের সমস্ত প্যারামিটার আপডেট করে) প্রয়োজন হয় না কারণ সাধারণ ফাইন-টিউনিং ডেটাসেটগুলি প্রাক-প্রশিক্ষণ ডেটাসেটের তুলনায় তুলনামূলকভাবে অনেক ছোট।
নিম্ন র্যাঙ্ক অ্যাডাপ্টেশন (LoRA) হল একটি সূক্ষ্ম-সুরঞ্জন কৌশল যা মডেলের ওজন হিমায়িত করে এবং মডেলে অল্প সংখ্যক নতুন ওজন ঢোকানোর মাধ্যমে ডাউনস্ট্রিম কাজের জন্য প্রশিক্ষিত প্যারামিটারের সংখ্যা ব্যাপকভাবে হ্রাস করে। এটি LoRA এর সাথে প্রশিক্ষণকে আরও দ্রুত এবং আরও মেমরি-দক্ষ করে তোলে এবং মডেল আউটপুটগুলির গুণমান বজায় রেখে ছোট মডেল ওজন (কয়েক শত এমবি) তৈরি করে।
এই টিউটোরিয়ালটি আপনাকে Databricks Dolly 15k ডেটাসেট ব্যবহার করে Gemma 2B মডেলে LoRA ফাইন-টিউনিং করার জন্য KerasNLP ব্যবহার করে নিয়ে যাবে। এই ডেটাসেটে 15,000টি উচ্চ-মানের মানব-উত্পাদিত প্রম্পট/প্রতিক্রিয়া জোড়া রয়েছে যা বিশেষভাবে ফাইন-টিউনিং এলএলএম-এর জন্য ডিজাইন করা হয়েছে।
সেটআপ
Gemma অ্যাক্সেস পান
এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনাকে প্রথমে Gemma সেটআপে সেটআপ নির্দেশাবলী সম্পূর্ণ করতে হবে। জেমা সেটআপ নির্দেশাবলী আপনাকে দেখায় যে কীভাবে নিম্নলিখিতগুলি করতে হবে:
- kaggle.com- এ Gemma-এ অ্যাক্সেস পান।
- Gemma 2B মডেল চালানোর জন্য পর্যাপ্ত সম্পদ সহ একটি Colab রানটাইম বেছে নিন।
- একটি Kaggle ব্যবহারকারীর নাম এবং API কী তৈরি এবং কনফিগার করুন।
আপনি জেমা সেটআপ সম্পূর্ণ করার পরে, পরবর্তী বিভাগে যান, যেখানে আপনি আপনার Colab পরিবেশের জন্য পরিবেশের ভেরিয়েবল সেট করবেন।
রানটাইম নির্বাচন করুন
এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য, আপনার Gemma মডেল চালানোর জন্য পর্যাপ্ত সম্পদ সহ একটি Colab রানটাইম থাকতে হবে। এই ক্ষেত্রে, আপনি একটি T4 GPU ব্যবহার করতে পারেন:
- Colab উইন্ডোর উপরের ডানদিকে, ▾ ( অতিরিক্ত সংযোগ বিকল্প ) নির্বাচন করুন।
- রানটাইম পরিবর্তন নির্বাচন করুন।
- হার্ডওয়্যার এক্সিলারেটরের অধীনে, T4 GPU নির্বাচন করুন।
আপনার API কী কনফিগার করুন
Gemma ব্যবহার করতে, আপনাকে অবশ্যই আপনার Kaggle ব্যবহারকারীর নাম এবং একটি Kaggle API কী প্রদান করতে হবে।
একটি Kaggle API কী তৈরি করতে, আপনার Kaggle ব্যবহারকারী প্রোফাইলের অ্যাকাউন্ট ট্যাবে যান এবং নতুন টোকেন তৈরি করুন নির্বাচন করুন। এটি আপনার API শংসাপত্র ধারণকারী একটি kaggle.json
ফাইলের ডাউনলোডকে ট্রিগার করবে৷
Colab-এ, বাম ফলকে সিক্রেটস (🔑) নির্বাচন করুন এবং আপনার Kaggle ব্যবহারকারীর নাম এবং Kaggle API কী যোগ করুন। KAGGLE_USERNAME
নামে আপনার ব্যবহারকারীর নাম এবং KAGGLE_KEY
নামের অধীনে আপনার API কী সংরক্ষণ করুন।
পরিবেশের ভেরিয়েবল সেট করুন
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"
একটি ব্যাকএন্ড নির্বাচন করুন
কেরাস হল একটি উচ্চ-স্তরের, মাল্টি-ফ্রেমওয়ার্ক ডিপ লার্নিং API যা সরলতা এবং ব্যবহারের সহজতার জন্য ডিজাইন করা হয়েছে। কেরাস 3 ব্যবহার করে, আপনি তিনটি ব্যাকএন্ডের একটিতে ওয়ার্কফ্লো চালাতে পারেন: টেনসরফ্লো, জেএএক্স, বা পাইটর্চ।
এই টিউটোরিয়ালের জন্য, 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"
প্যাকেজ আমদানি করুন
কেরাস এবং কেরাসএনএলপি আমদানি করুন।
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]
ডেটা প্রিপ্রসেস করুন। এই টিউটোরিয়ালটি নোটবুকটি দ্রুত কার্যকর করতে 1000টি প্রশিক্ষণ উদাহরণের একটি উপসেট ব্যবহার করে। উচ্চ মানের ফাইন-টিউনিংয়ের জন্য আরও প্রশিক্ষণ ডেটা ব্যবহার করার কথা বিবেচনা করুন।
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
ব্যবহার করে একটি মডেল তৈরি করবেন, কার্যকারণ ভাষার মডেলিংয়ের জন্য এন্ড-টু-এন্ড জেমা মডেল। একটি কার্যকারণ ভাষা মডেল পূর্ববর্তী টোকেনগুলির উপর ভিত্তি করে পরবর্তী টোকেনের পূর্বাভাস দেয়।
from_preset
পদ্ধতি ব্যবহার করে মডেল তৈরি করুন:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
gemma_lm.summary()
from_preset
পদ্ধতিটি একটি প্রিসেট আর্কিটেকচার এবং ওজন থেকে মডেলটিকে ইনস্ট্যান্টিয়েট করে। উপরের কোডে, "gemma2_2b_en" স্ট্রিংটি প্রিসেট আর্কিটেকচারকে নির্দিষ্ট করে — 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?
মডেলটি কীভাবে ভ্রমণের পরিকল্পনা করতে হয় তার জেনেরিক টিপস দিয়ে সাড়া দেয়।
ELI5 সালোকসংশ্লেষণ প্রম্পট
মডেলটিকে সালোকসংশ্লেষণের ব্যাখ্যা করতে বলুন যাতে একটি 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 ফাইন-টিউনিং
মডেল থেকে আরও ভালো সাড়া পেতে, Databricks Dolly 15k ডেটাসেট ব্যবহার করে লো র্যাঙ্ক অ্যাডাপ্টেশন (LoRA) দিয়ে মডেলটিকে ফাইন-টিউন করুন।
LoRA র্যাঙ্ক LLM-এর মূল ওজনে যোগ করা প্রশিক্ষণযোগ্য ম্যাট্রিসের মাত্রা নির্ধারণ করে। এটি সূক্ষ্ম-টিউনিং সমন্বয়গুলির অভিব্যক্তি এবং নির্ভুলতা নিয়ন্ত্রণ করে।
একটি উচ্চ র্যাঙ্ক মানে আরো বিস্তারিত পরিবর্তন সম্ভব, কিন্তু আরো প্রশিক্ষণযোগ্য পরামিতি মানে। একটি নিম্ন র্যাঙ্ক মানে কম কম্পিউটেশনাল ওভারহেড, কিন্তু সম্ভাব্য কম সুনির্দিষ্ট অভিযোজন।
এই টিউটোরিয়ালটি 4-এর একটি LoRA র্যাঙ্ক ব্যবহার করে৷ অনুশীলনে, একটি অপেক্ষাকৃত ছোট র্যাঙ্ক দিয়ে শুরু করুন (যেমন 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>
NVIDIA GPU-তে মিশ্র নির্ভুলতা ফাইন-টিউনিং-এর উপর নোট করুন
সূক্ষ্ম-টিউনিংয়ের জন্য সম্পূর্ণ নির্ভুলতা সুপারিশ করা হয়। NVIDIA GPU-তে ফাইন-টিউনিং করার সময়, মনে রাখবেন যে আপনি প্রশিক্ষণের গুণমানের উপর ন্যূনতম প্রভাব সহ প্রশিক্ষণের গতি বাড়ানোর জন্য মিশ্র নির্ভুলতা ( 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.
মডেলটি এখন ইউরোপে দেখার জন্য জায়গাগুলি সুপারিশ করে৷
ELI5 সালোকসংশ্লেষণ প্রম্পট
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.
মডেলটি এখন সালোকসংশ্লেষণকে সহজ ভাষায় ব্যাখ্যা করে।
নোট করুন যে প্রদর্শনের উদ্দেশ্যে, এই টিউটোরিয়ালটি শুধুমাত্র একটি যুগের জন্য এবং একটি নিম্ন LoRA র্যাঙ্ক মান সহ ডেটাসেটের একটি ছোট উপসেটে মডেলটিকে সূক্ষ্ম-টিউন করে। সূক্ষ্ম সুর করা মডেল থেকে আরও ভাল প্রতিক্রিয়া পেতে, আপনি পরীক্ষা করতে পারেন:
- ফাইন-টিউনিং ডেটাসেটের আকার বৃদ্ধি করা হচ্ছে
- আরও পদক্ষেপের জন্য প্রশিক্ষণ (যুগ)
- একটি উচ্চতর LoRA র্যাঙ্ক সেট করা
-
learning_rate
এবংweight_decay
মত হাইপারপ্যারামিটার মানগুলি পরিবর্তন করা।
সারাংশ এবং পরবর্তী পদক্ষেপ
এই টিউটোরিয়ালটি কেরাসএনএলপি ব্যবহার করে একটি জেমা মডেলে LoRA ফাইন-টিউনিং কভার করেছে। পরবর্তীতে নিম্নলিখিত নথিগুলি দেখুন:
- একটি জেমা মডেলের সাথে কীভাবে পাঠ্য তৈরি করতে হয় তা শিখুন।
- একটি জেমা মডেলে কীভাবে বিতরণ করা ফাইন-টিউনিং এবং অনুমান সম্পাদন করতে হয় তা শিখুন।
- Vertex AI এর সাথে জেমা ওপেন মডেলগুলি কীভাবে ব্যবহার করবেন তা শিখুন।
- KerasNLP ব্যবহার করে Gemma কিভাবে ফাইন-টিউন করবেন এবং Vertex AI-তে স্থাপন করবেন তা শিখুন।
ai.google.dev-এ দেখুন | Google Colab-এ চালান | Vertex AI-তে খুলুন | GitHub-এ উৎস দেখুন |
ওভারভিউ
জেমিনি মডেল তৈরি করতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি থেকে তৈরি হালকা ওজনের, অত্যাধুনিক ওপেন মডেলের একটি পরিবার।
Gemma-এর মতো বড় ভাষা মডেল (LLMs) বিভিন্ন এনএলপি কাজগুলিতে কার্যকর বলে দেখানো হয়েছে। একজন এলএলএমকে প্রথমে স্ব-তত্ত্বাবধানে একটি বৃহৎ পাঠ্যের উপর প্রাক-প্রশিক্ষিত করা হয়। প্রাক-প্রশিক্ষণ এলএলএম-কে সাধারণ-উদ্দেশ্য জ্ঞান শিখতে সাহায্য করে, যেমন শব্দের মধ্যে পরিসংখ্যানগত সম্পর্ক। একটি LLM তারপর ডোমেন-নির্দিষ্ট ডেটার সাথে ডাউনস্ট্রিম কাজগুলি (যেমন সেন্টিমেন্ট বিশ্লেষণ) সঞ্চালনের জন্য সূক্ষ্ম সুর করা যেতে পারে।
এলএলএম আকারে অত্যন্ত বড় (বিলিয়ন ক্রমে পরামিতি)। বেশিরভাগ অ্যাপ্লিকেশনের জন্য সম্পূর্ণ ফাইন-টিউনিং (যা মডেলের সমস্ত প্যারামিটার আপডেট করে) প্রয়োজন হয় না কারণ সাধারণ ফাইন-টিউনিং ডেটাসেটগুলি প্রাক-প্রশিক্ষণ ডেটাসেটের তুলনায় তুলনামূলকভাবে অনেক ছোট।
নিম্ন র্যাঙ্ক অ্যাডাপ্টেশন (LoRA) হল একটি সূক্ষ্ম-সুরঞ্জন কৌশল যা মডেলের ওজন হিমায়িত করে এবং মডেলে অল্প সংখ্যক নতুন ওজন ঢোকানোর মাধ্যমে ডাউনস্ট্রিম কাজের জন্য প্রশিক্ষিত প্যারামিটারের সংখ্যা ব্যাপকভাবে হ্রাস করে। এটি LoRA এর সাথে প্রশিক্ষণকে আরও দ্রুত এবং আরও মেমরি-দক্ষ করে তোলে এবং মডেল আউটপুটগুলির গুণমান বজায় রেখে ছোট মডেল ওজন (কয়েক শত এমবি) তৈরি করে।
এই টিউটোরিয়ালটি আপনাকে Databricks Dolly 15k ডেটাসেট ব্যবহার করে Gemma 2B মডেলে LoRA ফাইন-টিউনিং করার জন্য KerasNLP ব্যবহার করে নিয়ে যাবে। এই ডেটাসেটে 15,000টি উচ্চ-মানের মানব-উত্পাদিত প্রম্পট/প্রতিক্রিয়া জোড়া রয়েছে যা বিশেষভাবে ফাইন-টিউনিং এলএলএম-এর জন্য ডিজাইন করা হয়েছে।
সেটআপ
Gemma অ্যাক্সেস পান
এই টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনাকে প্রথমে Gemma সেটআপে সেটআপ নির্দেশাবলী সম্পূর্ণ করতে হবে। জেমা সেটআপ নির্দেশাবলী আপনাকে দেখায় যে কীভাবে নিম্নলিখিতগুলি করতে হবে:
- kaggle.com- এ Gemma-এ অ্যাক্সেস পান।
- Gemma 2B মডেল চালানোর জন্য পর্যাপ্ত সম্পদ সহ একটি Colab রানটাইম বেছে নিন।
- একটি Kaggle ব্যবহারকারীর নাম এবং API কী তৈরি এবং কনফিগার করুন।
আপনি জেমা সেটআপ সম্পূর্ণ করার পরে, পরবর্তী বিভাগে যান, যেখানে আপনি আপনার Colab পরিবেশের জন্য পরিবেশের ভেরিয়েবল সেট করবেন।
রানটাইম নির্বাচন করুন
এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য, আপনার Gemma মডেল চালানোর জন্য পর্যাপ্ত সম্পদ সহ একটি Colab রানটাইম থাকতে হবে। এই ক্ষেত্রে, আপনি একটি T4 GPU ব্যবহার করতে পারেন:
- Colab উইন্ডোর উপরের ডানদিকে, ▾ ( অতিরিক্ত সংযোগ বিকল্প ) নির্বাচন করুন।
- রানটাইম পরিবর্তন নির্বাচন করুন।
- হার্ডওয়্যার এক্সিলারেটরের অধীনে, T4 GPU নির্বাচন করুন।
আপনার API কী কনফিগার করুন
Gemma ব্যবহার করতে, আপনাকে অবশ্যই আপনার Kaggle ব্যবহারকারীর নাম এবং একটি Kaggle API কী প্রদান করতে হবে।
একটি Kaggle API কী তৈরি করতে, আপনার Kaggle ব্যবহারকারী প্রোফাইলের অ্যাকাউন্ট ট্যাবে যান এবং নতুন টোকেন তৈরি করুন নির্বাচন করুন। এটি আপনার API শংসাপত্র ধারণকারী একটি kaggle.json
ফাইলের ডাউনলোডকে ট্রিগার করবে৷
Colab-এ, বাম ফলকে সিক্রেটস (🔑) নির্বাচন করুন এবং আপনার Kaggle ব্যবহারকারীর নাম এবং Kaggle API কী যোগ করুন। KAGGLE_USERNAME
নামে আপনার ব্যবহারকারীর নাম এবং KAGGLE_KEY
নামের অধীনে আপনার API কী সংরক্ষণ করুন।
পরিবেশের ভেরিয়েবল সেট করুন
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"
একটি ব্যাকএন্ড নির্বাচন করুন
কেরাস হল একটি উচ্চ-স্তরের, মাল্টি-ফ্রেমওয়ার্ক ডিপ লার্নিং API যা সরলতা এবং ব্যবহারের সহজতার জন্য ডিজাইন করা হয়েছে। কেরাস 3 ব্যবহার করে, আপনি তিনটি ব্যাকএন্ডের একটিতে ওয়ার্কফ্লো চালাতে পারেন: টেনসরফ্লো, জেএএক্স, বা পাইটর্চ।
এই টিউটোরিয়ালের জন্য, 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"
প্যাকেজ আমদানি করুন
কেরাস এবং কেরাসএনএলপি আমদানি করুন।
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]
ডেটা প্রিপ্রসেস করুন। এই টিউটোরিয়ালটি নোটবুকটি দ্রুত কার্যকর করতে 1000টি প্রশিক্ষণ উদাহরণের একটি উপসেট ব্যবহার করে। উচ্চ মানের ফাইন-টিউনিংয়ের জন্য আরও প্রশিক্ষণ ডেটা ব্যবহার করার কথা বিবেচনা করুন।
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
ব্যবহার করে একটি মডেল তৈরি করবেন, কার্যকারণ ভাষার মডেলিংয়ের জন্য এন্ড-টু-এন্ড জেমা মডেল। একটি কার্যকারণ ভাষা মডেল পূর্ববর্তী টোকেনগুলির উপর ভিত্তি করে পরবর্তী টোকেনের পূর্বাভাস দেয়।
from_preset
পদ্ধতি ব্যবহার করে মডেল তৈরি করুন:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
gemma_lm.summary()
from_preset
পদ্ধতিটি একটি প্রিসেট আর্কিটেকচার এবং ওজন থেকে মডেলটিকে ইনস্ট্যান্টিয়েট করে। উপরের কোডে, "gemma2_2b_en" স্ট্রিংটি প্রিসেট আর্কিটেকচারকে নির্দিষ্ট করে — 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?
মডেলটি কীভাবে ভ্রমণের পরিকল্পনা করতে হয় তার জেনেরিক টিপস দিয়ে সাড়া দেয়।
ELI5 সালোকসংশ্লেষণ প্রম্পট
মডেলটিকে সালোকসংশ্লেষণের ব্যাখ্যা করতে বলুন যাতে একটি 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 ফাইন-টিউনিং
মডেল থেকে আরও ভালো সাড়া পেতে, Databricks Dolly 15k ডেটাসেট ব্যবহার করে লো র্যাঙ্ক অ্যাডাপ্টেশন (LoRA) দিয়ে মডেলটিকে ফাইন-টিউন করুন।
LoRA র্যাঙ্ক LLM-এর মূল ওজনে যোগ করা প্রশিক্ষণযোগ্য ম্যাট্রিসের মাত্রা নির্ধারণ করে। এটি সূক্ষ্ম-টিউনিং সমন্বয়গুলির অভিব্যক্তি এবং নির্ভুলতা নিয়ন্ত্রণ করে।
একটি উচ্চ র্যাঙ্ক মানে আরো বিস্তারিত পরিবর্তন সম্ভব, কিন্তু আরো প্রশিক্ষণযোগ্য পরামিতি মানে। একটি নিম্ন র্যাঙ্ক মানে কম কম্পিউটেশনাল ওভারহেড, কিন্তু সম্ভাব্য কম সুনির্দিষ্ট অভিযোজন।
এই টিউটোরিয়ালটি 4-এর একটি LoRA র্যাঙ্ক ব্যবহার করে৷ অনুশীলনে, একটি অপেক্ষাকৃত ছোট র্যাঙ্ক দিয়ে শুরু করুন (যেমন 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>
NVIDIA GPU-তে মিশ্র নির্ভুলতা ফাইন-টিউনিং-এর উপর নোট করুন
সূক্ষ্ম-টিউনিংয়ের জন্য সম্পূর্ণ নির্ভুলতা সুপারিশ করা হয়। NVIDIA GPU-তে ফাইন-টিউনিং করার সময়, মনে রাখবেন যে আপনি প্রশিক্ষণের গুণমানের উপর ন্যূনতম প্রভাব সহ প্রশিক্ষণের গতি বাড়ানোর জন্য মিশ্র নির্ভুলতা ( 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.
মডেলটি এখন ইউরোপে দেখার জন্য জায়গাগুলি সুপারিশ করে৷
ELI5 সালোকসংশ্লেষণ প্রম্পট
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.
মডেলটি এখন সালোকসংশ্লেষণকে সহজ ভাষায় ব্যাখ্যা করে।
নোট করুন যে প্রদর্শনের উদ্দেশ্যে, এই টিউটোরিয়ালটি শুধুমাত্র একটি যুগের জন্য এবং একটি নিম্ন LoRA র্যাঙ্ক মান সহ ডেটাসেটের একটি ছোট উপসেটে মডেলটিকে সূক্ষ্ম-টিউন করে। সূক্ষ্ম সুর করা মডেল থেকে আরও ভাল প্রতিক্রিয়া পেতে, আপনি পরীক্ষা করতে পারেন:
- ফাইন-টিউনিং ডেটাসেটের আকার বৃদ্ধি করা হচ্ছে
- আরও পদক্ষেপের জন্য প্রশিক্ষণ (যুগ)
- একটি উচ্চতর LoRA র্যাঙ্ক সেট করা
-
learning_rate
এবংweight_decay
মত হাইপারপ্যারামিটার মানগুলি পরিবর্তন করা।
সারাংশ এবং পরবর্তী পদক্ষেপ
এই টিউটোরিয়ালটি কেরাসএনএলপি ব্যবহার করে একটি জেমা মডেলে LoRA ফাইন-টিউনিং কভার করেছে। পরবর্তীতে নিম্নলিখিত নথিগুলি দেখুন: