8-4 Meta AI: Codellama モデル
学習目標
Pythonプログラムを使用して、Hugging FaceプラットフォームからCodeLlamaモデルをダウンロードし、簡単なプロンプトを使用してLlama 3に質問をして回答を得てください。

CodeLlamaとは?
CodeLlamaは、Meta AIが開発した、コード生成と理解に特化したプログラミング言語モデルです。ユーザーのプログラミングニーズを理解し、それに対応するコードスニペットを自動的に生成します。
Code Llamaでできること
1. コード例の生成:説明に基づいて実行可能なコードを自動的に生成します。
2. コードの説明:複雑な関数やアルゴリズムのロジックを分かりやすい言葉で説明します。
3. デバッグの提案:コードのエラーを特定し、修正方法を提示します。
始め方
1. meta-llama/CodeLlama-7b-Instruct-hf (https://huggingface.co/meta-llama/CodeLlama-7b-Instruct-hf) にアクセスしてアクセスをリクエストし、承認をお待ちください。承認されると、次のページが表示されます。

2. 次のサンプルプログラムでは、CodeLlamaを使ってtwoSum関数のコードを完成させます。
(1) tokenを、先ほど生成したHugging Faceトークンに置き換えてください。
import torch
import transformers
from transformers import AutoTokenizer
from huggingface_hub import login
# Log in to Hugging Face
login(token="hf_XXXXXXXXXXXXXXXX") # Replace with your own Hugging Face token
# Model name
model = "meta-llama/CodeLlama-7b-hf"
# Load tokenizer from the model path
tokenizer = AutoTokenizer.from_pretrained(model)
# Create a pipeline for text generation
pipeline = transformers.pipeline(
"text-generation", # Specify task type as text generation
model=model, # Specify model ID
torch_dtype=torch.float16, # Specify model data type (float16)
device_map="auto", # Automatically select device (CPU or GPU)
model_kwargs={"cache_dir": "./model" }, # Set path to store the model (default is ~/.cache/huggingface)
)
sequences = pipeline(
"def twoSum(nums, target):",
do_sample=True, # Enable random sampling
top_k=10, # Sample from top 10 highest-probability tokens
temperature=0.1, # Controls randomness of generation
top_p=0.95, # Only consider tokens with cumulative probability up to 0.95
num_return_sequences=1, # Generate one sequence
eos_token_id=tokenizer.eos_token_id, # Specify end-of-sequence token
max_length=200, # Maximum length of generated sequence (in tokens)
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
3. プログラムを実行すると、次の結果が表示されます。

完了したら、プログラムの入力プロンプトを変更し、CodeLlamaを使って回文数、ローマ数字から整数への変換などのコーディング問題を解決できます。
参考資料:
meta-llama/CodeLlama-7b-hf · Hugging Face