Flan-T5 menawarkan performa luar biasa untuk berbagai aplikasi NLP, bahkan dibandingkan dengan model bahasa yang sangat besar. Coba sekarang di Paperspace, didukung oleh IPU

Penulis: Harry Mellor, Insinyur AI di Graphcore

Dalam dunia model bahasa AI, tidak ada solusi yang bisa diterapkan untuk semua orang.

Pengguna komersial semakin menyadari bahwa Model Bahasa Ultra-Besar, meskipun mampu secara luas, merupakan kemampuan AI yang berlebihan untuk banyak aplikasi.

Nilai sen (atau dolar) biasanya turun ketika mereka menerima tagihan yang sangat besar dari pemilik model kepemilikan, atau penyedia komputasi awan pilihan mereka. Dengan asumsi mereka bahkan dapat mengamankan ketersediaan GPU untuk sistem A100 dan H100 yang diperlukan untuk menjalankan model tingkat lanjut.

Sebaliknya, banyak yang mencari alternatif sumber terbuka yang lebih efisien dibandingkan GPT-3/4.

Fla T5

Pada bulan Desember 2022, Google menerbitkan Model Bahasa yang Diselesaikan dengan Instruksi Penskalaan di mana mereka melakukan penyesuaian ekstensif untuk kumpulan tugas yang luas di berbagai model (PaLM, T5, U-PaLM).

Bagian dari publikasi ini adalah peluncuran pos pemeriksaan Flan-T5, “yang mencapai kinerja beberapa tembakan yang kuat” dengan jumlah parameter yang relatif sederhana “bahkan dibandingkan dengan model yang jauh lebih besar” seperti anggota keluarga GPT terbesar.

Di blog ini, kami akan menunjukkan bagaimana Anda dapat menggunakan Flan-T5 yang berjalan pada Paperspace Gradient Notebook, yang didukung oleh IPU Graphcore. Flan-T5-Large dapat dijalankan pada IPU-POD4, menggunakan uji coba gratis enam jam Paperspace, sedangkan Flan-T5-XL dapat dijalankan pada IPU-POD16 berbayar.

Kami akan melihat berbagai beban kerja NLP yang umum dan mempertimbangkan hal berikut:

  • Seberapa bagus sebenarnya Flan-T5?
  • Bagaimana cara menjalankan Flan-T5 di IPU?
  • Untuk apa saya menggunakan Flan-T5?
  • Mengapa saya harus pindah ke Flan-T5-XL?

Seberapa bagus sebenarnya Flan-T5?

Mari kita mulai dengan melihat beberapa angka kinerja dari makalah yang ditulis Google:

Hasil ini sungguh mencengangkan. Perhatikan itu:

  • Flan-T5 berkinerja ~2x lebih baik daripada T5 di MMLU, BBH & MGSM
  • Di TyDiQA kita bahkan melihat munculnya kemampuan baru
  • Flan-T5-Large lebih baik dari semua varian T5 sebelumnya (bahkan XXL)

Ini menjadikan Flan-T5 sebagai monster yang sama sekali berbeda dari T5 yang mungkin Anda kenal. Sekarang mari kita lihat bagaimana Flan-T5-Large dan Flan-T5-XL dibandingkan dengan model lain dalam benchmark MMLU:

Memperhatikan bahwa Flan-T5 telah mengadakan MMLU dari pelatihan, tabel ini menunjukkan bahwa:

  • Flan-T5-Large dan Flan-T5-XL (masing-masing dengan parameter 0,8B dan 3B) memiliki kinerja serupa dengan model lain dengan parameter yang jauh lebih banyak, misalnya GPT-3 (parameter 175B) dan Galactica (parameter 120B).
  • GPT-3 perlu disempurnakan untuk tugas benchmark agar dapat mengalahkan Flan-T5-XL.
  • Flan-T5 mengungguli versi lebih kecil dari LLM terbaru seperti PaLM dan LLaMA (sementara juga berkali-kali lebih kecil).

Bagaimana cara menjalankan Flan-T5 di IPU?

Karena pos pemeriksaan Flan-T5 tersedia di Hugging Face, Anda dapat menggunakan integrasi Hugging Face Graphcore (🤗 Optimum Graphcore) untuk menjalankan Flan-T5 dengan mudah dengan pipeline inferensi standar.

Jika Anda sudah memiliki aplikasi berbasis Hugging Face yang ingin Anda coba di IPU, caranya sesederhana:

- from transformers import pipeline 
+ from optimum.graphcore import pipeline 
 
- text_generator = pipeline("text2text-generation", model="google/flan-t5-large") 
+ text_generator = pipeline("text2text-generation", model="google/flan-t5-large", ipu_config="Graphcore/t5-large-ipu") 

text_generator("Please solve the following equation: x^2 - 9 = 0") 
[{'generated_text': '3'}]

Sekarang mari kita tentukan generator teks kita sendiri untuk digunakan di sisa buku catatan ini. Pertama, pastikan lingkungan virtual Python Anda memiliki versi terbaru 🤗 Optimum Graphcore yang terinstal:

%pip install "optimum-graphcore>=0.6.1, <0.7.0" 

Lokasi direktori cache dapat dikonfigurasi melalui variabel lingkungan atau langsung di notebook:

import os 
executable_cache_dir=os.getenv("POPLAR_EXECUTABLE_CACHE_DIR", "./exe_cache/") 
num_available_ipus=int(os.getenv("NUM_AVAILABLE_IPU", 4)) 

Selanjutnya, mari impor pipeline dari optimum.graphcore dan buat pipeline Flan-T5 untuk jumlah IPU yang sesuai:

from optimum.graphcore import pipeline 
 
size = {4: "large", 16: "xl"} 
flan_t5 = pipeline( 
    "text2text-generation", 
    model=f"google/flan-t5-{size[num_available_ipus]}", 
    ipu_config=f"Graphcore/t5-{size[num_available_ipus]}-ipu", 
    max_input_length=896, 
    ipu_config=ipu_config, 
) 
flan_t5.model.ipu_config.executable_cache_dir = executable_cache_dir 

Sekarang, mari kita ajukan beberapa pertanyaan acak:

questions = [ 
    "Solve the following equation for x: x^2 - 9 = 0", 
    "At what temperature does nitrogen freeze?", 
    "In order to reduce symptoms of asthma such as tightness in the chest, wheezing, and difficulty breathing, what do you recommend?", 
    "Which country is home to the tallest mountain in the world?" 
] 
for out in flan_t5(questions): 
    print(out) 
Graph compilation: 100%|██████████| 100/100 [05:20<00:00] 
Graph compilation: 100%|██████████| 100/100 [02:56<00:00] 
 
 
{'generated_text': '3'} 
{'generated_text': '-32 °C'} 
{'generated_text': 'ibuprofen'} 
{'generated_text': 'nepal'} 

Perhatikan bahwa beberapa jawaban ini mungkin salah, pengambilan informasi dari model itu sendiri bukanlah tujuan Flan-T5. Namun, jika Anda menggunakan Flan-T5-XL kecil kemungkinannya untuk salah (kembalilah ke notebook ini dengan IPU-POD16 untuk melihat perbedaannya!)

Untuk apa saya menggunakan Flan-T5?

Flan-T5 telah disesuaikan pada ribuan tugas berbeda di ratusan kumpulan data. Jadi apa pun tugas Anda, ada baiknya melihat apakah Flan-T5 dapat memenuhi kebutuhan Anda. Di sini kami akan menunjukkan beberapa hal yang umum:

Analisis Sentimen

sentiment_analysis = ( 
    "Review: It gets too hot, the battery only can last 4 hours. Sentiment: Negative\n" 
    "Review: Nice looking phone. Sentiment: Positive\n" 
    "Review: Sometimes it freezes and you have to close all the open pages and then reopen where you were. Sentiment: Negative\n" 
    "Review: Wasn't that impressed, went back to my old phone. Sentiment:" 
) 

flan_t5(sentiment_analysis)[0]["generated_text"] 
Negative

Pengakuan Entitas Bernama Tingkat Lanjut

Cuplikan berikut diadaptasi dari halaman Wikipedia terkait masing-masing perusahaan yang disebutkan.

advanced_ner = """Microsoft Corporation is a company that makes computer software and video games. Bill Gates and Paul Allen founded the company in 1975 
[Company]: Microsoft, [Founded]: 1975, [Founders]: Bill Gates, Paul Allen 
 
Amazon.com, Inc., known as Amazon , is an American online business and cloud computing company. It was founded on July 5, 1994 by Jeff Bezos 
[Company]: Amazon, [Founded]: 1994, [Founders]: Jeff Bezos 
 
Apple Inc. is a multinational company that makes personal computers, mobile devices, and software. Apple was started in 1976 by Steve Jobs and Steve Wozniak.""" 

flan_t5(advanced_ner)[0]["generated_text"]
[Company]: Apple, [Founded]: 1976, [Founders]: Steve Jobs, Steve Wozniak

Menjawab Pertanyaan

Cuplikan berikut berasal dari kumpulan data skuad.

context = 'Super Bowl 50 was an American football game to determine the champion of the National Football League (NFL) for the 2015 season. The American Football Conference (AFC) champion Denver Broncos defeated the National Football Conference (NFC) champion Carolina Panthers 24-10 to earn their third Super Bowl title. The game was played on February 7, 2016, at Levi\'s Stadium in the San Francisco Bay Area at Santa Clara, California. As this was the 50th Super Bowl, the league emphasized the "golden anniversary" with various gold-themed initiatives, as well as temporarily suspending the tradition of naming each Super Bowl game with Roman numerals (under which the game would have been known as "Super Bowl L"), so that the logo could prominently feature the Arabic numerals 50.'
question = "Which NFL team represented the AFC at Super Bowl 50?"
# The correct answer is Denver Broncos
flan_t5(f"{context} {question}")[0]['generated_text']
Denver Broncos

Klasifikasi Niat

intent_classification = """[Text]: I really need to get a gym membership, I'm exhausted. 
[Intent]: get gym membership 
 
[Text]: What do I need to make a carbonara? 
[Intent]: cook carbonara 
 
[Text]: I need all these documents sorted and filed by Monday. 
[Intent]:""" 

flan_t5([intent_classification])[0]["generated_text"]
file documents

Peringkasan

Cuplikan berikut berasal dari kumpulan data xsum.

summarization=""" 
Document: Firstsource Solutions said new staff will be based at its Cardiff Bay site which already employs about 800 people. 
The 300 new jobs include sales and customer service roles working in both inbound and outbound departments. 
The company's sales vice president Kathryn Chivers said: "Firstsource Solutions is delighted to be able to continue to bring new employment to Cardiff." 
Summary: Hundreds of new jobs have been announced for a Cardiff call centre. 
 
Document: The visitors raced into a three-goal first-half lead at Hampden. 
Weatherson opened the scoring with an unstoppable 15th-minute free-kick, and he made it 2-0 in the 27th minute. 
Matt Flynn made it 3-0 six minutes later with a fine finish. 
Queen's pulled a consolation goal back in stoppage time through John Carter. 
Summary: Peter Weatherson netted a brace as Annan recorded only their second win in eight matches. 
 
Document: Officers searched properties in the Waterfront Park and Colonsay View areas of the city on Wednesday. 
Detectives said three firearms, ammunition and a five-figure sum of money were recovered. 
A 26-year-old man who was arrested and charged appeared at Edinburgh Sheriff Court on Thursday. 
Summary: 
""" 
flan_t5(summarization)[0]["generated_text"]
A man has been arrested after a firearm was found in a property in Edinburgh.

Klasifikasi Teks

text_classification_1 = """A return ticket is better value than a single. 
topic: travel cost 

You can start from the basic stitches, and go from there. 
topic: learning knitting 

The desk which I bought yesterday is very big. 
topic: furniture size 

George Washington was president of the United States from 1789 to 1797. 
topic:""" 

flan_t5(text_classification_1)[0]["generated_text"]
George Washington presidency
text_classification_2 = """FLAN-T5 was released in the paper Scaling Instruction-Finetuned Language Models - it is an enhanced version of T5 that has been finetuned in a mixture of tasks. 
keywords: released, enhanced, finetuned 

The IPU, or Intelligence Processing Unit, is a highly flexible, easy-to-use parallel processor designed from the ground up for AI workloads. 
keywords: processor, AI 

Paperspace is the platform for AI developers. providing the speed and scale needed to take AI models from concept to production. 
keywords:""" 

flan_t5(text_classification_2)[0]["generated_text"]
paperspace, AI, scale

Mengapa saya harus pindah ke Flan-T5-XL?

Seperti yang kita lihat sebelumnya, jika melihat hasil makalah, Flan-T5-XL kira-kira 40% (rata-rata) lebih baik dibandingkan Flan-T5-Large dalam tugas validasinya. Oleh karena itu, ketika memutuskan apakah Flan-T5-XL sepadan dengan biayanya, tanyakan pada diri Anda pertanyaan-pertanyaan berikut:

  • Apakah data saya memerlukan pemahaman linguistik yang lebih baik agar tugas dapat dilakukan?
  • Apakah tugas saya terlalu rumit untuk model sekecil Flan-T5-Large dan terlalu mudah untuk model sebesar GPT-3?
  • Apakah tugas saya memerlukan urutan keluaran yang lebih panjang sehingga Flan-T5-XL perlu dihasilkan?

Untuk mendemonstrasikannya, sekarang mari kita lihat contoh tugas yang jawaban seluruh pertanyaan di atas adalah ya. Katakanlah Anda memiliki AI layanan pelanggan yang Anda gunakan untuk menjawab pertanyaan dasar guna mengurangi beban kerja personel layanan pelanggan Anda. Ini membutuhkan:

  • Kemampuan linguistik yang kuat untuk mengurai dan menghasilkan potongan teks berukuran sedang.
  • Sebuah LLM yang mampu belajar dengan baik dari konteks, namun tidak seluruh sejarah manusia tertanam dalam parameternya.
  • Kemampuan untuk menghasilkan respons dalam beberapa kalimat, tetapi tidak lebih lama dari ini.

Melihat kode di bawah, kita melihat beberapa konteks tentang Graphcore yang diberikan dalam masukan, serta dasar untuk respons percakapan dari model. Seperti yang dapat Anda lihat dari contoh, Flan-T5-XL mampu memahami informasi yang diberikan dalam konteksnya dan memberikan jawaban yang berguna dan alami atas pertanyaan yang diajukan.

from IPython.display import clear_output 
 
class ChatBot: 
    def __init__(self, model, context) -> None: 
        self.model = model 
        self.initial_context = context 
        self.context = self.initial_context 
        self.user, self.persona = [x.split(":")[0] for x in context.split("\n")[-2:]] 
 
    def ask(self, question): 
        question += "." if question[-1] not in [".", "?", "!"] else "" 
        x = f"{self.context}\n{self.user}: {question}\n{self.persona}: " 
        # print(f"\n{x}\n") 
        y = self.model(x) 
        response = y[0]["generated_text"] 
        self.context = f"{x}{response}" 
        return response 
 
    def session(self): 
        print("Starting session", flush=True) 
        prompt = input() 
        while prompt != "": 
            if prompt == "reset": 
                clear_output() 
                print("Starting session", flush=True) 
                self.context = self.initial_context 
                prompt = input() 
            print(f"{self.user.title()}: {prompt}", flush=True) 
            answer = self.ask(prompt) 
            print(f"{self.persona.title()}: {answer}", flush=True) 
            prompt = input() 
        print("Ending session", flush=True)
context = f"""This is a conversation between a [customer] and a [virtual assistant]. 
The [virtual assistant] works at Graphcore. Here is some informaton about Graphcore: 
- Graphcore is located in Bristol. 
- Graphcore invented the intelligence processing unit (IPU). It is purpose built for AI applications. 
- The currently available IPU models are: Classic IPU, Bow IPU, C600. 
- IPUs are available on: Paperspace, Gcore Cloud and Graphcloud. 
 
[virtual assistant]: Hello, welcome to Graphcore, how can I help you today? 
[customer]: I'd like to ask some questions about your company. 
[virtual assistant]: Ok, I can help you with that.""" 
chatbot = ChatBot(flan_t5, context) 
chatbot.session()
Starting session 
[Customer]: What is an IPU? 
[Virtual Assistant]: The Intelligence Processing Unit (IPU) is a computer chip that is used to process artificial intelligence. 
[Customer]: Who makes it? 
[Virtual Assistant]: Graphcore is the manufacturer of the IPU. 
[Customer]: Can I use them? 
[Virtual Assistant]: Yes, I'm sure you can. 
[Customer]: Where? 
[Virtual Assistant]: The IPU is available on Paperspace, Gcore and Graphcloud. 
Ending session
flan_t5.model.detachFromDevice() 

Kesimpulan

Singkatnya, jawaban atas pertanyaan yang kami ajukan di bagian pendahuluan adalah:

Seberapa bagus sebenarnya Flan-T5?

J: Dua kali lebih baik dari T5 dan setara dengan GPT-3 menurut tolok ukur MMLU.

Bagaimana cara menjalankan Flan-T5 di IPU?

A: Ubah satu impor dan tambahkan satu argumen kata kunci ke contoh saluran Anda.

Untuk apa saya menggunakan Flan-T5?

J: Mengingat banyaknya variasi tugas yang dapat disesuaikan, hampir semua hal.

Mengapa saya harus pindah ke Flan-T5-XL?

J: Untuk peningkatan kinerja sekitar 40% dibandingkan Flan-T5-Large, memungkinkan tugas yang lebih berat.

Jika Anda ingin mempelajari lebih lanjut tentang bagaimana kami membuat T5 berfungsi dengan baik di Float16, lihat blog teknis kami tentang subjek tersebut.

Anda juga dapat mencoba variasi T5 lainnya pada IPU:

Jika Anda ingin terus menjelajahi NLP di IPU, lihatlah blog Penyempurnaan GPT-J kami dan buku catatan terkait.