MPT-7B, Saatnya Model Bahasa yang Dapat Digunakan Secara Komersial Telah Tiba

May 10 2023
Panduan pengenalan dan pengembangan untuk LLM sumber terbuka — MPT-7B Keseluruhan Mosaic adalah perusahaan startup yang berspesialisasi dalam model AI, dan dalam artikel ini, kami akan memperkenalkan seri model MPT-7B yang baru dirilis. Mereka adalah model yang sepenuhnya open-source dan tersedia secara komersial, dilatih dalam 9.

Panduan pengenalan dan pengembangan untuk LLM sumber terbuka — MPT-7B

Gambar dihasilkan oleh Midjourney

Keseluruhan

Mosaic adalah perusahaan startup yang berspesialisasi dalam model AI, dan dalam artikel ini, kami akan memperkenalkan seri model MPT-7B yang baru dirilis. Mereka adalah model yang sepenuhnya open-source dan tersedia secara komersial, dilatih dalam 9,5 hari dari awal dengan 1 triliun token, yang proses pengembangannya jauh lebih rumit dan mahal daripada model yang disetel dari LLaMA atau Pythia yang saya perkenalkan di artikel saya sebelumnya. Ini adalah prestasi luar biasa untuk sebuah startup, terutama mengingat mereka melatih hingga satu triliun token dengan biaya perangkat keras 200K USD. Kemampuan model dasar setara dengan model LLaMA 7 miliar, selain itu, mereka juga menyempurnakan model lain untuk menginspirasi komunitas pembangunan, termasuk model Instruct, model Chat, dan model StoryWriter.

Model MPT-7B adalah model bahasa sumber terbuka pertama dengan kinerja yang setara dengan model LLaMA-7B dalam uji evaluasi Mosaic, dan sejauh ini terlihat kualitasnya lebih tinggi dan lebih stabil daripada Pythia dan StableLM dan banyak model sumber terbuka lainnya. skala hasil dan pelatihan. Model lain, seperti dari RedPajama dan OpenLLaMA, hanyalah cuplikan dari model pelatihan saat ini yang belum sepenuhnya dirilis. Ini adalah yang pertama yang benar-benar kami terima di mana ini adalah model lengkap dan telah diukur untuk menunjukkan bahwa pada dasarnya setara dengan LLaMA. Model MPT-7B juga merupakan model pertama yang tersedia secara komersial, dan kami dapat menyesuaikannya sendiri dengan data kami sendiri untuk penggunaan komersial.

Keakuratan zero-shot MPT-7B vs. LLaMA-7B vs. model open source lainnya pada tugas akademik (Dari Mosaic).

Panjang Konteks model StoryWriter

Salah satu hal paling keren tentang model MPT-7B adalah ia telah menyediakan model Story-Writer MPT-7B-StoryWriter-65k+, yang dilatih dengan arsitektur ALiBi , yang memungkinkan pengguna untuk memperluas konteks hingga sangat panjang. Jika Anda ingin menyempurnakan model yang lebih panjang, Anda dapat melakukannya hari ini. Inilah yang telah mereka lakukan dengan model Story-Writer, di mana mereka telah mengambil model dasar dan menyempurnakannya dengan panjang konteks 65.000+ token. Singkatnya, model LLaMA asli hanya menerima 2048 token, StableLM dilatih untuk 4.096 token, dan untuk ChatGPT dan GPT-4, jumlahnya 4.096 dan 8.000-32.000 tergantung pada versi yang Anda akses.

Fitur input 65+K-token membuat MPT jauh lebih mengesankan di antara model

Ada contoh yang mengesankan di blognya yang menunjukkan bahwa tim Mosaic pernah mendorong seluruh buku The Great Gatsby kemudian model tersebut berhasil menghasilkan epilog yang layak berdasarkan masukan 67873 token. Saya belum pernah melihat model tertutup atau model terbuka lain yang mampu melakukan itu sehingga membuat saya mempertimbangkan metode mana yang lebih hemat biaya untuk melakukan pembelajaran dalam konteks di masa mendatang, penyematan model OpenAI atau Story-Writer. Jika Anda tertarik dengan pembelajaran dalam konteks, silakan merujuk ke artikel saya sebelumnya.

Dataset untuk Pelatihan

Mereka juga telah melatih model instruksi 7 miliar MPT-7B-Instruct, yang merupakan model mengikuti instruksi bentuk pendek. Ini disetel dari mode dasar pada kumpulan data sumber terbuka terutama dari augmentasi kumpulan data Dolly-15K Databricks. Akibatnya, mereka mendapatkan kumpulan data berbasis instruksi yang lebih besar dan mempertahankan lisensi yang dapat digunakan secara komersial. Seperti yang saya sebutkan di artikelpada Dolly 2.0, kunci utama kegunaan komersial Dolly adalah kumpulan data bebas lisensi murni yang tidak dihasilkan dari model AI lain seperti ChatGPT tetapi dibuat oleh manusia. Karena itu, ketika Anda bermain dengannya dan mengajukan pertanyaan, Anda tidak mendapatkan jawaban yang familiar seperti "Sebagai model bahasa AI, saya tidak bisa ..." semacam itu. Namun, ini bukan kumpulan data sebesar yang digunakan model Vicuna dan model Koala dan tim berencana untuk memperluas pelatihannya ke kumpulan data 1T agar model instruksi ini lebih kompetitif.

Contoh model Instruksikan pada tugas konversi JSON

Yang lain

Ada juga model ekstensif MPT-7B lainnya yang dipanggil MPT-7B-Chat untuk memberikan interaksi multi-putaran yang mulus dan menarik bagi pengguna. Harap diperhatikan bahwa model chatbot ini adalah satu-satunya yang tidak diperbolehkan untuk penggunaan komersial.

Selain itu, lapisan pengoptimalan model MPT-7B mencakup FlashAttention dan layernorm presisi rendah, yang merupakan bagian dari alasan kecepatan inferensi yang lebih cepat daripada model 7 miliar lainnya sekitar “ 1,5x-2x lebih cepat ” di hub HuggingFace.

Berikut adalah sumber daya model MPT-7B yang dapat Anda pelajari:

  • Posting blog:https://www.mosaicml.com/blog/mpt-7b
  • Instruksikan Demo:https://huggingface.co/spaces/mosaicml/mpt-7b-instruct
  • Demo Obrolan:https://huggingface.co/spaces/mosaicml/mpt-7b-chat

Sementara model sangat cocok untuk penggunaan komersial, penerapan yang mudah dan murah harus menjadi salah satu karakteristik penting lainnya. Untungnya, MPT-7B telah direkayasa agar cepat, sederhana, dan terjangkau untuk digunakan untuk tugas inferensi, berkat kompatibilitas tanpa batas dengan kelas PreTrainedModeldasar HuggingFace.

Saya membuat notebook Google Colab untuk Anda rujuk Jika Anda ingin menerapkan dan menjalankan model MPT-7B-Instruct secara lokal: https://colab.research.google.com/drive/16D9tjggLukD38Un0hC-Gss3mrehPXng_?usp=sharing

MPT-7B-InstructJangan ragu untuk menyalinnya ke ruang Anda, tetapi ketahuilah bahwa untuk menjalankan model ini, Anda mungkin memiliki akun Colab Pro atau dukungan GPU lokal untuk mendapatkan sumber daya yang layak yang memerlukan pra-pelatihan yang memerlukan GPU T4 15GB minimum dan RAM 22GB.

Mari telusuri kode di buku catatan.

a) Instal paket

!pip install requests torch transformers einops

from typing import Any, Dict, Tuple
import warnings
import datetime
import os
from threading import Event, Thread
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList, TextIteratorStreamer

import textwrap

INSTRUCTION_KEY = "### Instruction:"
RESPONSE_KEY = "### Response:"
END_KEY = "### End"
INTRO_BLURB = "Below is an instruction that describes a task. Write a response that appropriately completes the request."
PROMPT_FOR_GENERATION_FORMAT = """{intro}
{instruction_key}
{instruction}
{response_key}
""".format(
    intro=INTRO_BLURB,
    instruction_key=INSTRUCTION_KEY,
    instruction="{instruction}",
    response_key=RESPONSE_KEY,
)


class InstructionTextGenerationPipeline:
...

INSTRUCTION_KEY, RESPONSE_KEY, dan END_KEYdigunakan sebagai kunci untuk mengidentifikasi bagian tertentu dari prompt. INTRO_BLURBadalah string yang menyediakan beberapa teks pengantar untuk prompt. PROMPT_FOR_GENERATION_FORMATadalah string yang menentukan format prompt yang diteruskan ke model bahasa.

Kelas bernama InstructionTextGenerationPipelinedidefinisikan untuk menghasilkan teks yang diberi instruksi menggunakan model bahasa transformator yang sudah dilatih sebelumnya. Kelas menggunakan transformersperpustakaan untuk memuat model dan tokenizer yang telah dilatih sebelumnya dan menentukan __call__metode yang menggunakan string instruksi sebagai input dan menghasilkan string respons menggunakan model bahasa.

d) Memuat model dengan saluran pipa

generate = InstructionTextGenerationPipeline(
    "mosaicml/mpt-7b-instruct",
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
)
stop_token_ids = generate.tokenizer.convert_tokens_to_ids(["<|endoftext|>"])

# Define a custom stopping criteria
class StopOnTokens(StoppingCriteria):
    def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
        for stop_id in stop_token_ids:
            if input_ids[0][-1] == stop_id:
                return True
        return False

def process_stream(instruction, temperature, top_p, top_k, max_new_tokens):
    # Tokenize the input
    input_ids = generate.tokenizer(
        generate.format_instruction(instruction), return_tensors="pt"
    ).input_ids
    input_ids = input_ids.to(generate.model.device)

    # Initialize the streamer and stopping criteria
    streamer = TextIteratorStreamer(
        generate.tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True
    )
    stop = StopOnTokens()

    if temperature < 0.1:
        temperature = 0.0
        do_sample = False
    else:
        do_sample = True

    gkw = {
        **generate.generate_kwargs,
        **{
            "input_ids": input_ids,
            "max_new_tokens": max_new_tokens,
            "temperature": temperature,
            "do_sample": do_sample,
            "top_p": top_p,
            "top_k": top_k,
            "streamer": streamer,
            "stopping_criteria": StoppingCriteriaList([stop]),
        },
    }

    response = ''

    def generate_and_signal_complete():
        generate.model.generate(**gkw)

    t1 = Thread(target=generate_and_signal_complete)
    t1.start()

    for new_text in streamer:
        response += new_text
   
    return response

Sekarang, kita dapat memanggil process_stream() metode dengan argumen yang tepat untuk melihat bagaimana model merespons instruksi kita.

instruction = "Write a travel blog about a 3-day trip to The Philippines. You need describe day by day."
temperature = 0.3
top_p = 0.95
top_k = 0
max_new_tokens = 2000
response = process_stream(instruction, temperature, top_p, top_k, max_new_tokens)

wrapped_text = textwrap.fill(response, width=100)
print(wrapped_text +'\n\n')

Tanggapan dari MPT-7B-Instruksikan

Anda dapat mencoba lebih banyak instruksi untuk model setelah Colab atau mesin lokal Anda berhasil menerapkan model, dan menyesuaikan parameter dalam kode untuk melihat perilaku yang berbeda menurut perspektif Anda. Dari pengujian saya sejauh ini, penyelesaian teks dan kode cukup baik tetapi penalaran dan matematika belum matang untuk menjalankan tugas instruksi komersial apa pun. Dari blog resmi Mosaic, kami tahu mereka mencoba memasukkan lebih banyak data pelatihan ke dalam model yang disempurnakan ini.

Model dasar MPT-7B, fine-tuning, kumpulan data, pelatihan, dan inferensi semuanya open-source dan bebas komersial, sehingga Anda sekarang dapat mulai mempertimbangkan untuk melatih dan merilis model pribadi Anda sendiri untuk bisnis AI Anda dengan biaya yang terjangkau.

Itu dia.

Semoga Anda dapat menemukan sesuatu yang bermanfaat dalam artikel ini dan terima kasih telah membaca!

Tingkatkan Pengodean

Terima kasih telah menjadi bagian dari komunitas kami! Sebelum kamu pergi:

  • Tepuk tangan untuk ceritanya dan ikuti penulisnya
  • Lihat lebih banyak konten di publikasi Level Up Coding
  • Kursus wawancara coding gratis ⇒ Lihat Kursus
  • Ikuti kami: Twitter | LinkedIn | Buletin