精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一些 Llama3 微調(diào)工具以及如何在 Ollama 中運(yùn)行

人工智能
本文主要介紹如何使用下面這幾個(gè)工具進(jìn)行微調(diào),以及如何在Ollama中安裝運(yùn)行微調(diào)后的模型。

Llama3是Meta提供的一個(gè)開源大模型,包含8B和 70B兩種參數(shù)規(guī)模,涵蓋預(yù)訓(xùn)練和指令調(diào)優(yōu)的變體。這個(gè)開源模型推出已經(jīng)有一段時(shí)間,并且在許多標(biāo)準(zhǔn)測(cè)試中展示了其卓越的性能。特別是Llama3 8B,其具備小尺寸和高質(zhì)量的輸出使其成為邊緣設(shè)備或者移動(dòng)設(shè)備上實(shí)現(xiàn)LLM的完美選擇。但是Llama3也還有許多缺陷,因此,在場(chǎng)景應(yīng)用中,有時(shí)候還需要對(duì)其進(jìn)行微調(diào),以提升中文能力、場(chǎng)景應(yīng)用的專業(yè)度等。

目前有許多團(tuán)隊(duì)在做微調(diào)工具,他們的貢獻(xiàn)提高了我們的效率、減少失誤。比較優(yōu)秀的例如:

  • MLX-LM
  • PyReft
  • litgpt
  • LLaMA-Factory

本文主要介紹如何使用這幾個(gè)工具進(jìn)行微調(diào),以及如何在Ollama中安裝運(yùn)行微調(diào)后的模型。

一、MLX-LM

MLX團(tuán)隊(duì)一直在不懈地努力改進(jìn)MLX-LM庫(kù)在模型微調(diào)工具方面的能力。使用MLX-LM微調(diào)llama3十分簡(jiǎn)單。

可以參考相關(guān)例子:https://github.com/ml-explore/mlx-examples/tree/main/llms/llama

大致步驟如下:

1.準(zhǔn)備訓(xùn)練數(shù)據(jù)

glaiveai/glaive-function-calling-v2是一個(gè)專門用于訓(xùn)練大語(yǔ)言模型處理函數(shù)調(diào)用方面的數(shù)據(jù)集。我們可以下載這個(gè)數(shù)據(jù)集,并將數(shù)據(jù)轉(zhuǎn)換為適合Llama3對(duì)話的格式,并保存到"/data"目錄下。

數(shù)據(jù)下載地址:https://huggingface.co/datasets/glaiveai/glaive-function-calling-v2

數(shù)據(jù)格式轉(zhuǎn)換的腳本如下:

from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments,BitsAndBytesConfig
from datasets import load_dataset
import json

model_name ="meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)

dataset = load_dataset("glaiveai/glaive-function-calling-v2",split="train")

def cleanup(input_string):
    arguments_index = input_string.find('"arguments"')

    if arguments_index == -1:
        return input_string

    start_quote = input_string.find("'", arguments_index)

    if start_quote == -1:
        return input_string

    end_quote = input_string.rfind("'")

    if end_quote == -1 or end_quote <= start_quote:
        return input_string

    arguments_value = input_string[start_quote+1:end_quote]

    output_string = input_string[:start_quote] + arguments_value + input_string[end_quote+1:]

    return output_string

def formatting_prompts_func(example):
    output_texts = []

    for i in range(len(example['system'])):
        messages = [
            {
                "role": "system",
                "content": example['system'][i][len("SYSTEM:"):].strip(),
            },
        ]
        conversations = example['chat'][i].split("<|endoftext|>")
        for message in conversations:
            continue_outer = False
            message = message.strip()
            if message:
                if "USER:" in message:
                    user_content = message.split("ASSISTANT:")[0].strip()
                    messages.append({"role": "user", "content": user_content[5:].strip()})

                    if "ASSISTANT:" in message:
                        assistant_content = message.split("ASSISTANT:")[1].strip()
                        if "<functioncall>" in assistant_content:
                            text = assistant_content.replace("<functioncall>","").strip()
                            json_str = cleanup(text)
                            try:
                                data = json.loads(json_str)
                            except json.JSONDecodeError as e:
                                print(f"0 - Failed to decode JSON: {json_str} - {assistant_content}")
                                continue_outer = True
                                break

                            new_func_text = "<functioncall> "+ json_str
                            messages.append({"role": "assistant", "content": new_func_text})
                        else:
                            messages.append({"role": "assistant", "content": assistant_content})
                elif message.startswith("FUNCTION RESPONSE:"):
                    function_response = message[18:].strip()
                    if "ASSISTANT:" in function_response:
                        function_content, assistant_content = function_response.split("ASSISTANT:")
                        try:
                            data = json.loads(function_content.strip())
                        except json.JSONDecodeError as e:
                            print(f"1 - Failed to decode JSON: {function_content}")
                            continue_outer = True
                            break

                        messages.append({"role": "user", "content": function_content.strip()})
                        messages.append({"role": "assistant", "content": assistant_content.strip()})
                    else:
                        try:
                            data = json.loads(function_response.strip())
                        except json.JSONDecodeError as e:
                            print(f"2 - Failed to decode JSON: {function_response}")
                            continue_outer = True
                            break
                        messages.append({"role": "user", "content": function_response.strip()})
                elif message.startswith("ASSISTANT:"):
                    assistant_content = message.split("ASSISTANT:")[1].strip()
                    if "<functioncall>" in assistant_content:
                        text = assistant_content.replace("<functioncall>","").strip()
                        json_str = cleanup(text)
                        try:
                            data = json.loads(json_str)
                        except json.JSONDecodeError as e:
                            print(f"3 - Failed to decode JSON: {json_str} - {assistant_content}")
                            continue_outer = True
                            break
                        new_func_text = "<functioncall> "+ json_str
                        messages.append({"role": "assistant", "content": new_func_text})
        if continue_outer:
            continue
        text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=False)
        output_texts.append(text)
    del example['system']
    del example['chat']
    return {"text": output_texts}
dataset = dataset.map(formatting_prompts_func, batched=True)

2.安裝mlx-lm包

pip install mlx-lm

這個(gè)庫(kù)為微調(diào)LLM提供了一個(gè)友好的用戶交互方式,省去了許多麻煩,并實(shí)現(xiàn)更好的效果。

3.創(chuàng)建LoRA配置

通過(guò)配置LoRA來(lái)微調(diào)Llama3 8B模型。更改一些關(guān)鍵參數(shù)以優(yōu)化性能:

  • 使用fp16代替qlora,以避免由于量化和解量化而導(dǎo)致的潛在性能下降。
  • 將lora_layers設(shè)置為32,并使用全線性層,以獲得與全微調(diào)相媲美的結(jié)果。

以下是lora_config.yaml文件的示例:


# The path to the local model directory or Hugging Face repo.
model: "meta-llama/Meta-Llama-3-8B-Instruct"
# Whether or not to train (boolean)
train: true

# Directory with {train, valid, test}.jsonl files
data: "data"

# The PRNG seed
seed: 0

# Number of layers to fine-tune
lora_layers: 32

# Minibatch size.
batch_size: 1

# Iterations to train for.
iters: 6000

# Number of validation batches, -1 uses the entire validation set.
val_batches: 25

# Adam learning rate.
learning_rate: 1e-6

# Number of training steps between loss reporting.
steps_per_report: 10

# Number of training steps between validations.
steps_per_eval: 200

# Load path to resume training with the given adapter weights.
resume_adapter_file: null

# Save/load path for the trained adapter weights.
adapter_path: "adapters"

# Save the model every N iterations.
save_every: 1000

# Evaluate on the test set after training
test: false

# Number of test set batches, -1 uses the entire test set.
test_batches: 100

# Maximum sequence length.
max_seq_length: 8192

# Use gradient checkpointing to reduce memory use.
grad_checkpoint: true

# LoRA parameters can only be specified in a config file
lora_parameters:
  # The layer keys to apply LoRA to.
  # These will be applied for the last lora_layers
  keys: ['mlp.gate_proj', 'mlp.down_proj', 'self_attn.q_proj', 'mlp.up_proj', 'self_attn.o_proj','self_attn.v_proj', 'self_attn.k_proj']
  rank: 128
  alpha: 256
  scale: 10.0
  dropout: 0.05

# Schedule can only be specified in a config file, uncomment to use.
# lr_schedule:
#  name: cosine_decay
#  warmup: 100 # 0 for no warmup
#  warmup_init: 1e-7 # 0 if not specified
#  arguments: [1e-6, 1000, 1e-7] # passed to scheduler

4.執(zhí)行微調(diào)

在數(shù)據(jù)準(zhǔn)備和LoRA配置就緒后,就可以開始微調(diào)Llama3 8B了,只需要運(yùn)行以下命令。

mlx_lm.lora --config lora_config.yaml

5.模型融合發(fā)布

LoRa模型是無(wú)法單獨(dú)完成推理的,需要和原生Llama結(jié)合才能運(yùn)行。因?yàn)樗黤reeze了原來(lái)的模型,單獨(dú)加了一些層,后續(xù)的訓(xùn)練都在這些層上做,所以需要進(jìn)行模型融合。

可以使用mlx_lm.fuse將訓(xùn)練過(guò)的適配器與原始的Llama3 8B模型以HF格式融合:

mlx_lm.fuse --model meta-llama/Meta-Llama-3-8B-Instruct

二、PyReft

項(xiàng)目源碼:https://github.com/stanfordnlp/pyreft

ReFT方法的出發(fā)點(diǎn)是基于干預(yù)模型可解釋性的概念,該概念強(qiáng)調(diào)改變表示而不是權(quán)重。這個(gè)概念基于線性表示假設(shè),該假設(shè)指出概念被編碼在神經(jīng)網(wǎng)絡(luò)的線性子空間中。

PyReFT是一個(gè)基于ReFT方法的庫(kù),支持通過(guò)可訓(xùn)練的干預(yù)來(lái)調(diào)整內(nèi)部語(yǔ)言模型的表示。PyReFT具有更少的微調(diào)參數(shù)和更強(qiáng)的魯棒性,可以提高微調(diào)效率、降低微調(diào)成本,同時(shí)也為研究自適應(yīng)參數(shù)的可解釋性打開了大門。

PyReft支持:

  • 微調(diào)發(fā)布在HuggingFace上任何預(yù)訓(xùn)練大模型
  • 可配置ReFT超參數(shù)
  • 輕松將微調(diào)后的結(jié)果分享到HuggingFace

1.安裝依賴庫(kù)

使用Pip安裝最新版本的transformers以支持llama3。此外,還需要安裝bitsandbytes庫(kù)。

!pip install -q git+https://github.com/huggingface/transformers
!pip install -q bitsandbytes

2.安裝或?qū)雙yreft

安裝Pyreft庫(kù)。如果已經(jīng)安裝則將導(dǎo)入pyreft。

try:
    import pyreft

except ModuleNotFoundError:
    !pip install git+https://github.com/stanfordnlp/pyreft.git

3.加載模型

在加載模型之前需要確保登陸到huggingface,以便于訪問(wèn)Llama3模型,可以使用下面的代碼片段:

from huggingface_hub import notebook_login
notebook_login()

接下來(lái)就是設(shè)置用于訓(xùn)練的提示詞模板。由于我們將使用基礎(chǔ)模型,因此需要添加特殊的標(biāo)記,以便模型能夠?qū)W會(huì)停止并且不繼續(xù)生成文本。下面的代碼片段用于執(zhí)行加載模型和標(biāo)記器。

import torch, transformers, pyreft
device = "cuda"

prompt_no_input_template = """<|begin_of_text|><|start_header_id|>user<|end_header_id|>%s<|eot_id|><|start_header_id|>assistant<|end_header_id|>"""

model_name_or_path = "meta-llama/Meta-Llama-3-8B"
model = transformers.AutoModelForCausalLM.from_pretrained(
    model_name_or_path, torch_dtype=torch.bfloat16, device_map=device, trust_remote_code=True)

# # get tokenizer
tokenizer = transformers.AutoTokenizer.from_pretrained(
    model_name_or_path, model_max_length=2048, 
    padding_side="right", use_fast=False)
tokenizer.pad_token = tokenizer.eos_token

接著,設(shè)置pyreft配置,然后使用pyreft.get_reft_model()方法準(zhǔn)備好模型。

# get reft model
reft_config = pyreft.ReftConfig(representations={
    "layer": 8, "component": "block_output",
    "low_rank_dimension": 4,
    "intervention": pyreft.LoreftIntervention(embed_dim=model.config.hidden_size,
    low_rank_dimension=4)})
reft_model = pyreft.get_reft_model(model, reft_config)
reft_model.set_device("cuda")
reft_model.print_trainable_parameters()

4.準(zhǔn)備數(shù)據(jù)集

下面以O(shè)penHermes—2.5數(shù)據(jù)集為例。由于Reft Trainer的數(shù)據(jù)需要采用特定格式,因此我們使用:

pyreft.make_last_position_supervised_data_module()

來(lái)準(zhǔn)備數(shù)據(jù)。

dataset_name = "teknium/OpenHermes-2.5"
from datasets import load_dataset

dataset = load_dataset(dataset_name, split="train")
dataset = dataset.select(range(10_000))

data_module = pyreft.make_last_position_supervised_data_module(
    tokenizer, model, [prompt_no_input_template % row["conversations"][0]["value"] for row in dataset], 
    [row["conversations"][1]["value"] for row in dataset])

5.執(zhí)行訓(xùn)練

為pyreft.ReftTrainerForCausalLM()設(shè)置訓(xùn)練參數(shù)。可以根據(jù)自己的使用情況和計(jì)算資源進(jìn)行更改。下面的代碼參數(shù)設(shè)置只訓(xùn)練1個(gè)epoch。

# train
training_args = transformers.TrainingArguments(
    per_device_train_batch_size = 4,
    gradient_accumulation_steps = 8,
    warmup_steps = 100,
    num_train_epochs = 1,
    learning_rate = 5e-4,
    bf16 = True,
    logging_steps = 1,
    optim = "paged_adamw_32bit",
    weight_decay = 0.0,
    lr_scheduler_type = "cosine",
    output_dir = "outputs",
    report_to=[]
)

trainer = pyreft.ReftTrainerForCausalLM(model=reft_model, tokenizer=tokenizer, args=training_args, **data_module)

_ = trainer.train()

訓(xùn)練完成后,將干預(yù)塊保存到reft_to_share目錄中。

reft_model.save(
    save_directory="./reft_to_share", 
)

6.發(fā)布與推理

模型微調(diào)訓(xùn)練完成后要進(jìn)行推理。需要加載基本模型,并通過(guò)合并干預(yù)塊來(lái)準(zhǔn)備reft模型。然后將reft模型轉(zhuǎn)移到cuda。

import torch, transformers, pyreft
device = "cuda"

model_name_or_path = "meta-llama/Meta-Llama-3-8B"
model = transformers.AutoModelForCausalLM.from_pretrained(
    model_name_or_path, torch_dtype=torch.bfloat16, device_map=device)

reft_model = pyreft.ReftModel.load(
    "Syed-Hasan-8503/Llama-3-openhermes-reft", model, from_huggingface_hub=True
)

reft_model.set_device("cuda")

接著進(jìn)行推理測(cè)試:

instruction = "A rectangular garden has a length of 25 feet and a width of 15 feet. If you want to build a fence around the entire garden, how many feet of fencing will you need?"

# tokenize and prepare the input
prompt = prompt_no_input_template % instruction
prompt = tokenizer(prompt, return_tensors="pt").to(device)

base_unit_location = prompt["input_ids"].shape[-1] - 1  # last position
_, reft_response = reft_model.generate(
    prompt, unit_locations={"sources->base": (None, [[[base_unit_location]]])},
    intervene_on_prompt=True, max_new_tokens=512, do_sample=True, 
    eos_token_id=tokenizer.eos_token_id, early_stopping=True
)
print(tokenizer.decode(reft_response[0], skip_special_tokens=True))

三、litgpt

源代碼:https://github.com/Lightning-AI/litgpt

LitGPT是一個(gè)可以用于微調(diào)預(yù)訓(xùn)練模型的命令行工具,支持20多個(gè)LLM的評(píng)估、部署。它為世界上最強(qiáng)大的開源大型語(yǔ)言模型(LLM)提供了高度優(yōu)化的訓(xùn)練配方。

1.安裝

pip install 'litgpt[all]'

2.評(píng)估測(cè)試

選擇一個(gè)模型并執(zhí)行:下載、對(duì)話、微調(diào)、預(yù)訓(xùn)練以及部署等。

# ligpt [action] [model]
litgpt  download  meta-llama/Meta-Llama-3-8B-Instruct
litgpt  chat      meta-llama/Meta-Llama-3-8B-Instruct
litgpt  finetune  meta-llama/Meta-Llama-3-8B-Instruct
litgpt  pretrain  meta-llama/Meta-Llama-3-8B-Instruct
litgpt  serve     meta-llama/Meta-Llama-3-8B-Instruct

例如:使用微軟的phi-2進(jìn)行對(duì)話評(píng)估。

# 1) Download a pretrained model
litgpt download --repo_id microsoft/phi-2

# 2) Chat with the model
litgpt chat \
  --checkpoint_dir checkpoints/microsoft/phi-2

>> Prompt: What do Llamas eat?

3.微調(diào)模型

下面是在phi-2基礎(chǔ)上進(jìn)行微調(diào)的命令。

# 1) Download a pretrained model
litgpt download --repo_id microsoft/phi-2

# 2) Finetune the model
curl -L https://huggingface.co/datasets/ksaw008/finance_alpaca/resolve/main/finance_alpaca.json -o my_custom_dataset.json

litgpt finetune \
  --checkpoint_dir checkpoints/microsoft/phi-2 \
  --data JSON \
  --data.json_path my_custom_dataset.json \
  --data.val_split_fraction 0.1 \
  --out_dir out/custom-model

# 3) Chat with the model
litgpt chat \
  --checkpoint_dir out/custom-model/final

除此外,還可以基于自己的數(shù)據(jù)進(jìn)行訓(xùn)練。詳細(xì)參考GitHub。

4.部署

通過(guò)下面的部署命令,啟動(dòng)模型服務(wù)。

# locate the checkpoint to your finetuned or pretrained model and call the `serve` command:

litgpt serve --checkpoint_dir path/to/your/checkpoint/microsoft/phi-2



# Alternative: if you haven't finetuned, download any checkpoint to deploy it:

litgpt download --repo_id microsoft/phi-2

litgpt serve --checkpoint_dir checkpoints/microsoft/phi-2

通過(guò)Http API訪問(wèn)服務(wù)。

# Use the server (in a separate session)
import requests, json
response = requests.post(
     "http://127.0.0.1:8000/predict",
     json={"prompt": "Fix typos in the following sentence: Exampel input"}
)
print(response.json()["output"])

四、LLaMA-Factory

源代碼:https://github.com/hiyouga/LLaMA-Factory/

LLaMA-Factory 是一個(gè)開源項(xiàng)目,它提供了一套全面的工具和腳本,用于微調(diào)、部署和基準(zhǔn)測(cè)試LLaMA模型。

LLaMA-Factory 提供以下功能,使得我們可以輕松地使用LLaMA模型:

  • 數(shù)據(jù)預(yù)處理和標(biāo)記化的腳本
  • 用于微調(diào) LLaMA 模型的訓(xùn)練流程
  • 使用經(jīng)過(guò)訓(xùn)練的模型生成文本的推理腳本
  • 評(píng)估模型性能的基準(zhǔn)測(cè)試工具
  • 用于交互式測(cè)試的 Gradio Web UI

使用LLaMA-Factory 進(jìn)行微調(diào)的步驟如下:

1.數(shù)據(jù)準(zhǔn)備

LLaMA-Factory要求訓(xùn)練數(shù)據(jù)的格式如下:

[
  {
    "instruction": "What is the capital of France?",
    "input": "",
    "output": "Paris is the capital of France."
  },
  ...
]

每個(gè) JSON 對(duì)象代表一個(gè)訓(xùn)練示例,其中包含以下字段:

  • instruction:任務(wù)指令或提示
  • input:任務(wù)的附加上下文(可以為空)
  • output:目標(biāo)完成或響應(yīng)

2.下載安裝依賴包

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -r requirements.txt

3.執(zhí)行微調(diào)

支持使用Python進(jìn)行微調(diào)也支持圖形化界面的方式。

下面是執(zhí)行python腳本進(jìn)行微調(diào):

python finetune.py \
  --model_name llama-7b \
  --data_path data/alpaca_data_tokenized.json \
  --output_dir output/llama-7b-alpaca \
  --num_train_epochs 3 \
  --batch_size 128 \
  --learning_rate 2e-5 \
  --fp16

該腳本將加載預(yù)訓(xùn)練的LLaMA模型,準(zhǔn)備訓(xùn)練數(shù)據(jù)集,并使用指定的超參數(shù)運(yùn)行微調(diào)腳步。微調(diào)后的模型檢查點(diǎn)將保存在 中output_dir。

主要參數(shù)設(shè)置如下:

  • model_name:要微調(diào)的基礎(chǔ) LLaMA 模型,例如llama-7b
  • data_path:標(biāo)記數(shù)據(jù)集的路徑
  • output_dir:保存微調(diào)模型的目錄
  • num_train_epochs:訓(xùn)練周期數(shù)
  • batch_size:訓(xùn)練的批次大小
  • learning_rate:優(yōu)化器的學(xué)習(xí)率
  • fp16:使用 FP16 混合精度來(lái)減少內(nèi)存使用量

接著使用微調(diào)后的結(jié)果進(jìn)行推理測(cè)試:

python generate.py \
  --model_path output/llama-7b-alpaca \
  --prompt "What is the capital of France?"

當(dāng)然,微調(diào)過(guò)程也可以在可視化界面上進(jìn)行。首先需要啟動(dòng)GUI界面。

python web_ui.py

4.基準(zhǔn)測(cè)試

LLaMA-Factory 包含了基于各種評(píng)估數(shù)據(jù)集進(jìn)行基準(zhǔn)測(cè)試的腳本:

benchmark.py

例如:

python benchmark.py \
  --model_path output/llama-7b-alpaca \
  --benchmark_datasets alpaca,hellaswag

這個(gè)Python命令將加載經(jīng)過(guò)微調(diào)的模型并評(píng)估其在指定方面的表現(xiàn)。

benchmark_datasets參數(shù)指明使用哪些數(shù)據(jù)集進(jìn)行評(píng)估。評(píng)估報(bào)告包括:準(zhǔn)確度、困惑度和 F1分?jǐn)?shù)等指標(biāo)。

還可以使用DatasetBuilder實(shí)現(xiàn)一個(gè)類并將其注冊(cè)到基準(zhǔn)腳本來(lái)添加您自己的評(píng)估數(shù)據(jù)集。

如何在Ollama中安裝微調(diào)后的Llama3模型?

Ollama 是一個(gè)開源的大模型管理工具,它提供了豐富的功能,包括模型的訓(xùn)練、部署、監(jiān)控等。通過(guò)Ollama,可以輕松地管理本地的大模型,提高模型的訓(xùn)練速度和部署效率。Ollama支持多種機(jī)器學(xué)習(xí)框架,如TensorFlow、PyTorch等,因此,我們可以根據(jù)需要選擇合適的框架進(jìn)行模型訓(xùn)練。

在使用LLaMA-Factory進(jìn)行微調(diào)之后,會(huì)生成LoRA文件,如何在Ollama中運(yùn)行l(wèi)lama3和我們訓(xùn)練出來(lái)的LoRA呢?

步驟如下:

1.運(yùn)行Ollama

直接安裝或者通過(guò)Docker安裝運(yùn)行Ollama

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

2.GGML格式轉(zhuǎn)換

按照 Ollama modelfile ADAPTER 的說(shuō)明,Ollama 支持 ggml 格式的 LoRA,所以我們需要把微調(diào)生成的 LoRA 轉(zhuǎn)換成ggml格式。為此,我們需要使用到 Llama.cpp 的格式轉(zhuǎn)換腳本:“conver-lora-to-ggml.py”。

例如:

./conver-lora-to-ggml.py /output/llama3_cn_01 llama

執(zhí)行完命令后,將在 /output/llama3_cn_01 下生成 ggml-adapter-model.bin 文件。這個(gè)文件就是 Ollama 所需要的ggml格式LoRA文件。

3.在Ollama中創(chuàng)建自定義Llama3模型

使用 ollama 的 modelfile 來(lái)創(chuàng)建自定義llama3模型。需要?jiǎng)?chuàng)建一個(gè)modefile文件。

我們創(chuàng)建一個(gè)llama3.modelfile,其內(nèi)容如下:

# set the base model
FROM llama3:8b

# set custom parameter values
PARAMETER temperature 1
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
PARAMETER stop <|reserved_special_token

# set the model template
TEMPLATE """
{{ if .System }}<|
start_header_id
|>system<|
end_header_id
|>
{{ .System }}<|
eot_id
|>{{ end }}{{ if .Prompt }}<|
start_header_id
|>user<|
end_header_id
|>
{{ .Prompt }}<|
eot_id
|>{{ end }}<|
start_header_id
|>assistant<|
end_header_id
|>
{{ .Response }}<|
eot_id
|>
"""

# set the system message
SYSTEM You are llama3 from Meta, customized and hosted @ HY's Blog (https://blog.yanghong.dev).

# set Chinese lora support
ADAPTER /root/.ollama/models/lora/ggml-adapter-model.bin

接著使用Ollama命令以及modelfile來(lái)創(chuàng)建自定義模型:

ollama create llama3:c01 -f llama3.modelfile

查看模型列表:

ollama list

運(yùn)行模型:

ollama run llama3:c01
責(zé)任編輯:趙寧寧 來(lái)源: andflow
相關(guān)推薦

2024-05-16 09:20:29

OllamaLlama3框架

2024-03-04 08:40:44

Llama3AI谷歌

2024-05-27 09:00:00

2009-08-03 17:47:23

PHP中保持SESSI

2012-09-11 09:16:52

Hadoop

2017-10-16 14:40:50

數(shù)據(jù)庫(kù)MySQL工具

2024-04-28 06:56:45

Llama 3大規(guī)模人工智能

2024-07-16 09:41:01

2010-04-19 14:37:14

Oracle監(jiān)控

2024-09-02 08:45:00

模型生成

2011-03-21 13:41:20

數(shù)據(jù)庫(kù)開發(fā)規(guī)范

2023-03-09 17:54:04

2023-09-04 16:55:18

2024-07-10 14:35:19

2022-03-07 07:33:24

Spring自定義機(jī)制線程池

2023-03-13 09:07:02

2022-01-21 10:58:39

JavaScriptGolangPython

2024-03-15 09:00:00

2020-09-19 18:03:42

Docker

2009-06-22 15:36:00

如何學(xué)好java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

无码人妻精品一区二区三区蜜桃91| 国产伦理在线观看| h网站视频在线观看| 极品尤物av久久免费看| 欧美日韩国产成人高清视频| 大乳护士喂奶hd| 日日av拍夜夜添久久免费| 国产精品国产精品国产专区不片 | 日本妇女毛茸茸| 欧美精品密入口播放| 在线免费亚洲电影| 免费观看亚洲视频| 国产香蕉在线| 丁香婷婷深情五月亚洲| 国产精品久久久久久久久久免费 | v片在线观看| www.色综合.com| 成人春色激情网| 中文字幕精品无码一区二区| 欧美成人日本| 中文字幕精品av| 精品人妻一区二区三区日产乱码卜| 亚洲国产一区二区久久| 色偷偷久久一区二区三区| 欧美少妇一区二区三区| 都市激情一区| 2021国产精品久久精品| 国产高清在线精品一区二区三区| 亚洲网站在线免费观看| 久热精品视频| 97视频国产在线| 免费无遮挡无码永久在线观看视频 | 东方伊人免费在线观看| 牛牛影视久久网| 欧美www视频| 亚洲精品综合在线观看| 日本肉肉一区| 色偷偷88欧美精品久久久| 国产原创popny丨九色| 日本在线视频网址| 亚洲欧美日韩在线播放| 亚洲永久激情精品| 国产经典自拍视频在线观看| 91视频91自| 精品一区久久久久久| www黄色网址| 国产精品一区二区三区四区| 国产主播欧美精品| 亚洲字幕av一区二区三区四区| 三级亚洲高清视频| 日本精品视频网站| 人人爽人人爽人人片av| 亚洲欧美日本国产专区一区| 性欧美暴力猛交69hd| 日本在线小视频| 99精品国产在热久久| 久久久噜噜噜久噜久久| 国产第100页| 亚洲精品社区| 2019中文字幕在线观看| 欧美啪啪小视频| 久久久久久夜| 国产精品高潮呻吟久久av野狼| 在线视频一区二区三区四区| 日韩专区欧美专区| 国产福利精品av综合导导航| 国产黄网在线观看| 男人的天堂亚洲一区| 国产免费一区视频观看免费| 91丨九色丨蝌蚪丨对白| 国产麻豆精品一区二区| 亚洲a在线观看| 丰满少妇被猛烈进入| 99精品视频中文字幕| 欧美乱偷一区二区三区在线| 国产高清视频在线播放| 国产精品福利一区| 成人短视频在线观看免费| 91超碰在线免费| 在线视频中文字幕一区二区| 日本国产一级片| 亚洲性视频在线| 亚洲免费视频观看| ass极品国模人体欣赏| 亚洲激情五月| 97在线观看视频国产| 加勒比在线一区| 精品影院一区二区久久久| 成人蜜桃视频| 欧美孕妇孕交| 成人欧美一区二区三区白人| 国产在线视频综合| 自拍偷自拍亚洲精品被多人伦好爽| 在线观看欧美黄色| 中文字幕欧美视频| 久久不见久久见中文字幕免费| 最近更新的2019中文字幕| 久久久久亚洲av无码专区体验| 国产欧美丝祙| 成人在线国产精品| 完全免费av在线播放| 日本高清不卡aⅴ免费网站| www.51色.com| 久久不见久久见中文字幕免费 | 日本不卡一区二区三区在线观看| jizz性欧美10| 色综合久久天天| 潘金莲一级淫片aaaaa| 国产精品手机在线播放| 色综合91久久精品中文字幕| 免费一级a毛片| 成人午夜电影网站| 在线国产99| 欧美成人ⅴideosxxxxx| 欧美videofree性高清杂交| 国产精品久久免费观看| 国产欧美另类| 成人免费视频网站| 好了av在线| 欧美性xxxxxx少妇| 色天使在线视频| 狠狠噜噜久久| 91av免费看| 日韩毛片久久久| 日本国产一区二区| 无码人妻aⅴ一区二区三区| 欧美日本一区二区视频在线观看 | 国产手机av在线| 国产清纯在线一区二区www| 国产毛片视频网站| 亚洲乱码一区| 欧美激情视频在线| 国产精品主播一区二区| 国产精品天美传媒沈樵| 国产综合免费视频| 成人精品毛片| 欧美国产日韩在线| 午夜美女福利视频| 亚洲蜜臀av乱码久久精品| 伊人国产在线视频| 欧美一级精品片在线看| 国产91精品久| 日韩av免费观影| 天天影视色香欲综合网老头| 国产一级免费片| 国户精品久久久久久久久久久不卡| 亚洲自拍偷拍区| v片在线观看| 91精品蜜臀在线一区尤物| 久久国产高清视频| 九色综合国产一区二区三区| 亚洲一区3d动漫同人无遮挡| 欧美特黄色片| 久久久精品视频成人| 国产一区二区三区三州| 成人免费在线视频观看| 久久无码人妻一区二区三区| 欧美激情1区2区| 99在线高清视频在线播放| 波多野结衣在线观看| 亚洲第一免费播放区| 欧美三日本三级少妇99| 91在线视频18| 中文字幕人成不卡一区| 欧美精品亚洲精品| 色综合天天色| 超碰91人人草人人干| 国产suv一区二区| 亚洲成av人片一区二区三区| 欧美亚一区二区三区| 日韩中文字幕不卡| 欧美性受xxxx黑人猛交88| 成人午夜三级| 人体精品一二三区| 91欧美在线视频| 日韩一级高清毛片| 日韩乱码在线观看| 国产欧美一区二区精品性色超碰| 天天干天天玩天天操| 欧美88av| 欧美在线一二三区| 国产精品欧美一区二区三区不卡| 欧美激情网站在线观看| 欧美色视频免费| 欧美顶级少妇做爰| 国产亚洲精久久久久久无码77777| 91麻豆成人久久精品二区三区| 亚洲最大综合网| 国产一区二区三区自拍| 欧美亚洲精品日韩| 欧美视频二区欧美影视| 欧美在线视频一区| 超碰在线caoporn| 日韩精品欧美激情| 国产免费高清视频| 日韩欧美中文字幕在线播放| 亚洲综合视频网站| 久久久久久久久蜜桃| 色姑娘综合天天| 首页综合国产亚洲丝袜| 青青视频免费在线观看| 啪啪亚洲精品| 成人羞羞视频免费| 国产福利亚洲| 69av成年福利视频| 91香蕉在线观看| 亚洲性日韩精品一区二区| 性色av蜜臀av| 欧美日韩二区三区| 久久99精品波多结衣一区| 亚洲精品中文在线| 东京热无码av男人的天堂| 91亚洲精华国产精华精华液| 日本网站在线看| 日本伊人精品一区二区三区观看方式| 国产精品久久久久久久久电影网| 色琪琪久久se色| 久久综合一区| 久久91在线| 成人在线观看av| 成人污污视频| 成人国内精品久久久久一区| 激情开心成人网| 97婷婷涩涩精品一区| 三级福利片在线观看| zzijzzij亚洲日本成熟少妇| 国产精品无码2021在线观看| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 黄色片网站在线观看| 亚洲日本成人网| 午夜小视频在线播放| 精品国产免费一区二区三区香蕉| 亚洲中文一区二区三区| 欧美日韩一区成人| 欧美视频xxxx| 欧美亚洲综合网| 69亚洲精品久久久蜜桃小说| 精品久久久视频| 国产成人精品a视频一区| 亚洲一区二区3| 劲爆欧美第一页| 亚洲乱码日产精品bd| 日韩欧美综合视频| 18欧美亚洲精品| 欧美第一页在线观看| 亚洲免费看黄网站| 欧美黄色免费看| 亚洲一区二区精品3399| 一区二区三区免费高清视频 | 99色这里只有精品| 伊人久久久大香线蕉综合直播| www.xxx麻豆| 野花国产精品入口| 欧美色图另类小说| 久久精品人人| 午夜久久久精品| 久久 天天综合| 超碰人人cao| 成人午夜电影久久影院| 欧美性xxxx图片| 久久久亚洲精品石原莉奈| 真实乱视频国产免费观看| 国产清纯白嫩初高生在线观看91| 久草福利资源在线| 亚洲乱码中文字幕综合| 精品无码av在线| 色综合婷婷久久| 男人天堂视频在线| 69堂精品视频| 欧美 日韩 人妻 高清 中文| 亚洲摸下面视频| 91xxx在线观看| 精品国内自产拍在线观看| 日韩三级电影视频| 97视频在线观看免费| 成人国产激情在线| 亚洲最大的网站| 欧美日韩一区二区三区四区不卡| 深夜福利成人| 91综合视频| 国产一区二区三区小说| 久久综合九色| 99国产精品免费视频| 久久婷婷色综合| 国产成人久久久久| 欧美日韩人人澡狠狠躁视频| 成人免费一区二区三区| 日韩欧美国产电影| 黄色在线网站| 精品中文字幕在线2019| 成人一区福利| 超碰97人人人人人蜜桃| 欧美热在线视频精品999| 欧美a级黄色大片| 久久亚洲国产精品一区二区| 亚欧精品在线视频| 久久精品亚洲精品国产欧美kt∨ | 黄色性生活一级片| 中文字幕一区二区三区av | 欧美亚洲图片小说| 黄色成人一级片| www.日韩.com| 神马电影网我不卡| 国产精品xxx在线观看www| 美女少妇全过程你懂的久久| 国产精品免费看久久久无码| 亚洲精品孕妇| av地址在线观看| 中文字幕一区日韩精品欧美| 二区视频在线观看| 欧美xxxxx牲另类人与| 日本免费视频在线观看| 日本免费久久高清视频| 国产66精品| 久久久久久久免费视频| 男女激情视频一区| 精品无码人妻一区| 亚洲国产一区二区在线播放| 国产情侣一区二区| 这里只有精品久久| 三级在线观看视频| 国产超碰91| 欧美在线二区| 在线免费观看av网| 国产精品你懂的在线欣赏| 精品人妻一区二区三区免费看| 精品伦理精品一区| 黄视频在线观看网站| 国产精品爽爽ⅴa在线观看| 蜜桃成人av| 女性隐私黄www网站视频| 99re亚洲国产精品| 日韩人妻无码一区二区三区99| 日韩欧美色综合网站| 二区三区在线观看| 国产视频999| 色综合蜜月久久综合网| 一区二区三区免费播放| 久久精品综合网| 一级做a爰片久久毛片| 精品亚洲国产成av人片传媒 | 欧美视频免费在线| 欧美熟妇另类久久久久久不卡 | 亚洲色图50p| 日韩中文影院| 色综合电影网| 久久99在线观看| 国产成人av免费在线观看| 7777精品伊人久久久大香线蕉完整版 | 日韩一区在线视频| vam成人资源在线观看| 在线视频不卡一区二区| 韩国一区二区视频| 天天看片中文字幕| 精品国产91洋老外米糕| 久草在线资源福利站| 欧美在线一区二区三区四区| 免费成人性网站| 免费三级在线观看| 精品久久久久香蕉网| 樱花草涩涩www在线播放| 日韩av一级大片| 国内久久精品视频| 中文字幕一区二区三区手机版| 精品一区二区三区四区在线| 成人久久网站| 久久人妻无码一区二区| 9人人澡人人爽人人精品| 国产美女激情视频| 亚洲欧美国产精品久久久久久久| 日韩三区在线| 免费久久久久久| 成人18视频在线播放| 中文字幕手机在线视频| 久久精品99无色码中文字幕| 一区二区三区视频播放| 成人在线免费观看av| 国产精品免费人成网站| 亚洲欧美国产高清va在线播放| 欧美亚洲成人网| 我不卡影院28| 亚洲 欧美 日韩在线| 在线观看亚洲a| 日本中文字幕中出在线| 日本午夜精品电影| 精品一区二区三区日韩| 91国产丝袜播放在线| 日韩在线免费视频| 大桥未久女教师av一区二区| 免费看a级黄色片| 洋洋成人永久网站入口| 国产一二三区在线| 国产超碰91| 久久99精品国产91久久来源| 国产成人亚洲欧洲在线| 日韩一级裸体免费视频| 亚洲美女15p| 18禁一区二区三区| 欧洲中文字幕精品| 超碰99在线|