Mixtral-8x7B kini tersedia di Amazon SageMaker JumpStart | Layanan Web Amazon

Mixtral-8x7B kini tersedia di Amazon SageMaker JumpStart | Layanan Web Amazon

Node Sumber: 3033174

Hari ini, kami dengan gembira mengumumkan bahwa Campuran-8x7B model bahasa besar (LLM), yang dikembangkan oleh Mistral AI, tersedia untuk pelanggan melalui Mulai Lompatan Amazon SageMaker untuk diterapkan dengan satu klik untuk menjalankan inferensi. Mixtral-8x7B LLM adalah campuran model pakar yang telah dilatih sebelumnya, berdasarkan tulang punggung 7 miliar parameter dengan delapan pakar per lapisan feed-forward. Anda dapat mencoba model ini dengan SageMaker JumpStart, hub pembelajaran mesin (ML) yang menyediakan akses ke algoritme dan model sehingga Anda dapat memulai ML dengan cepat. Dalam postingan ini, kami membahas cara menemukan dan menerapkan model Mixtral-8x7B.

Apa itu Mixtral-8x7B

Mixtral-8x7B adalah model dasar yang dikembangkan oleh Mistral AI, mendukung teks bahasa Inggris, Prancis, Jerman, Italia, dan Spanyol, dengan kemampuan pembuatan kode. Ini mendukung berbagai kasus penggunaan seperti peringkasan teks, klasifikasi, penyelesaian teks, dan penyelesaian kode. Ini berperilaku baik dalam mode obrolan. Untuk mendemonstrasikan model yang dapat disesuaikan secara langsung, Mistral AI juga telah merilis model instruksi Mixtral-8x7B untuk kasus penggunaan obrolan, yang disempurnakan menggunakan berbagai kumpulan data percakapan yang tersedia untuk umum. Model mixtral memiliki panjang konteks yang besar hingga 32,000 token.

Mixtral-8x7B memberikan peningkatan kinerja yang signifikan dibandingkan model canggih sebelumnya. Campuran arsitektur pakar yang sedikit memungkinkannya mencapai hasil kinerja yang lebih baik pada 9 dari 12 tolok ukur pemrosesan bahasa alami (NLP) yang diuji oleh AI Mistral. Mixtral menyamai atau melampaui performa model hingga 10 kali lipat ukurannya. Dengan hanya memanfaatkan sebagian kecil parameter per token, ia mencapai kecepatan inferensi yang lebih cepat dan biaya komputasi yang lebih rendah dibandingkan model padat dengan ukuran setara—misalnya, dengan total 46.7 miliar parameter tetapi hanya 12.9 miliar yang digunakan per token. Kombinasi kinerja tinggi, dukungan multibahasa, dan efisiensi komputasi menjadikan Mixtral-8x7B pilihan yang menarik untuk aplikasi NLP.

Model ini tersedia di bawah lisensi Apache 2.0 yang permisif, untuk digunakan tanpa batasan.

Apa itu SageMaker JumpStart

Dengan SageMaker JumpStart, praktisi ML dapat memilih dari daftar model alas bedak berperforma terbaik yang terus bertambah. Praktisi ML dapat menerapkan model dasar ke model khusus Amazon SageMaker contoh dalam lingkungan jaringan yang terisolasi, dan sesuaikan model menggunakan SageMaker untuk pelatihan dan penerapan model.

Anda sekarang dapat menemukan dan menerapkan Mixtral-8x7B hanya dengan beberapa klik Studio Amazon SageMaker atau secara terprogram melalui SageMaker Python SDK, memungkinkan Anda memperoleh performa model dan kontrol MLOps dengan fitur SageMaker seperti Pipa Amazon SageMaker, Debugger Amazon SageMaker, atau log kontainer. Model ini diterapkan di lingkungan aman AWS dan di bawah kendali VPC Anda, membantu memastikan keamanan data.

Temukan model

Anda dapat mengakses model fondasi Mixtral-8x7B melalui SageMaker JumpStart di UI SageMaker Studio dan SageMaker Python SDK. Di bagian ini, kita akan membahas cara menemukan model di SageMaker Studio.

SageMaker Studio adalah lingkungan pengembangan terintegrasi (IDE) yang menyediakan antarmuka visual berbasis web tunggal tempat Anda dapat mengakses alat yang dibuat khusus untuk melakukan semua langkah pengembangan ML, mulai dari menyiapkan data hingga membangun, melatih, dan menerapkan model ML Anda. Untuk detail selengkapnya tentang cara memulai dan menyiapkan SageMaker Studio, lihat Studio Amazon SageMaker.

Di SageMaker Studio, Anda dapat mengakses SageMaker JumpStart dengan memilih Tingkatkan di panel navigasi.

Dari halaman arahan SageMaker JumpStart, Anda dapat mencari “Mixtral” di kotak pencarian. Anda akan melihat hasil pencarian yang menunjukkan Mixtral 8x7B dan Mixtral 8x7B Instruct.

Anda dapat memilih kartu model untuk melihat detail tentang model seperti lisensi, data yang digunakan untuk melatih, dan cara penggunaan. Anda juga akan menemukan Menyebarkan tombol, yang dapat Anda gunakan untuk menyebarkan model dan membuat titik akhir.

Terapkan model

Penerapan dimulai saat Anda memilih Menyebarkan. Setelah penerapan selesai, titik akhir Anda telah dibuat. Anda dapat menguji titik akhir dengan meneruskan sampel payload permintaan inferensi atau memilih opsi pengujian menggunakan SDK. Saat Anda memilih opsi untuk menggunakan SDK, Anda akan melihat kode contoh yang dapat Anda gunakan di editor buku catatan pilihan Anda di SageMaker Studio.

Untuk menerapkan menggunakan SDK, kita mulai dengan memilih model Mixtral-8x7B, yang ditentukan oleh model_id with value huggingface-llm-mixtral-8x7b. Anda dapat menerapkan salah satu model yang dipilih di SageMaker dengan kode berikut. Demikian pula, Anda dapat menerapkan instruksi Mixtral-8x7B menggunakan ID modelnya sendiri:

from sagemaker.jumpstart.model import JumpStartModel

model = JumpStartModel(model_id="huggingface-llm-mixtral-8x7b")
predictor = model.deploy()

Ini menyebarkan model pada SageMaker dengan konfigurasi default, termasuk jenis instans default dan konfigurasi VPC default. Anda dapat mengubah konfigurasi ini dengan menentukan nilai non-default di JumpStartModel.

Setelah diterapkan, Anda dapat menjalankan inferensi terhadap titik akhir yang diterapkan melalui prediktor SageMaker:

payload = {"inputs": "Hello!"} 
predictor.predict(payload)

Contoh petunjuknya

Anda dapat berinteraksi dengan model Mixtral-8x7B seperti model pembuatan teks standar lainnya, yang mana model tersebut memproses urutan masukan dan mengeluarkan prediksi kata berikutnya dalam urutan tersebut. Di bagian ini, kami memberikan contoh petunjuknya.

Pembuatan kode

Dengan menggunakan contoh sebelumnya, kita dapat menggunakan perintah pembuatan kode seperti berikut:

# Code generation
payload = {
    "inputs": "Write a program to compute factorial in python:",
    "parameters": {
        "max_new_tokens": 200,
    },
}
predictor.predict(payload)

Anda mendapatkan output berikut:

Input Text: Write a program to compute factorial in python:
Generated Text:
Factorial of a number is the product of all the integers from 1 to that number.

For example, factorial of 5 is 1*2*3*4*5 = 120.

Factorial of 0 is 1.

Factorial of a negative number is not defined.

The factorial of a number can be written as n!.

For example, 5! = 120.

## Write a program to compute factorial in python

```
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)

print(factorial(5))
```

Output:

```
120
```

## Explanation:

In the above program, we have defined a function called factorial which takes a single argument n.

If n is equal to 0, then we return 1.

Otherwise, we return n multiplied by the factorial of n-1.

We then call the factorial function with the argument 5 and print the result.

The output of the program is 120, which is the factorial of 5.

## How to compute factorial in python

In the above program, we have used a recursive function to compute the factorial of a number.

A recursive function is a function that calls itself.

In this case, the factorial function calls itself with the argument n-1.

This process continues until n is equal to 0, at which point the function returns 1.

The factorial of a number can also be computed using a loop.

For example, the following program uses a for loop to compute the factorial of a number:

```
def factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result

Permintaan analisis sentimen

Anda dapat melakukan analisis sentimen menggunakan perintah seperti berikut dengan Mixtral 8x7B:

payload = {
"inputs": """
Tweet: "I hate it when my phone battery dies."
Sentiment: Negative

Tweet: "My day has been :+1:"
Sentiment: Positive

Tweet: "This is the link to the article"
Sentiment: Neutral

Tweet: "This new music video was incredibile"
Sentiment:""",
"parameters": {
"max_new_tokens": 2,
},
}
predictor.predict(payload)

Anda mendapatkan output berikut:

Input Text: Tweet: "I hate it when my phone battery dies."
Sentiment: Negative
###
Tweet: "My day has been :+1:"
Sentiment: Positive
###
Tweet: "This is the link to the article"
Sentiment: Neutral
###
Tweet: "This new music video was incredibile"
Sentiment:
Generated Text:  Positive

Petunjuk menjawab pertanyaan

Anda dapat menggunakan prompt menjawab pertanyaan seperti berikut dengan Mixtral-8x7B:

# Question answering
payload = {
    "inputs": "Could you remind me when was the C programming language invented?",
    "parameters": {
        "max_new_tokens": 100,
    },
}
query_endpoint(payload)

Anda mendapatkan output berikut:

Input Text: Could you remind me when was the C programming language invented?
Generated Text:

C was invented in 1972 by Dennis Ritchie at Bell Labs.

C is a general-purpose programming language. It was invented to write the UNIX operating system.

C is a structured programming language. It is a middle-level language. It is a procedural language.

C is a compiled language. It is a portable language.

C is a case-sensitive language. It is a free-form language

Instruksi Mixtral-8x7B

Versi Mixtral-8x7B yang disesuaikan dengan instruksi menerima instruksi yang diformat di mana peran percakapan harus dimulai dengan perintah pengguna dan bergantian antara instruksi pengguna dan asisten (jawaban model). Format instruksi harus dipatuhi dengan ketat, jika tidak, model akan menghasilkan keluaran yang kurang optimal. Templat yang digunakan untuk membuat prompt untuk model Instruct didefinisikan sebagai berikut:

<s> [INST] Instruction [/INST] Model answer</s> [INST] Follow-up instruction [/INST]]

Perhatikan bahwa <s> dan </s> adalah token khusus untuk awal string (BOS) dan akhir string (EOS), sedangkan [INST] dan [/INST] adalah string biasa.

Kode berikut menunjukkan bagaimana Anda dapat memformat prompt dalam format instruksi:

from typing import Dict, List

def format_instructions(instructions: List[Dict[str, str]]) -> List[str]:
    """Format instructions where conversation roles must alternate user/assistant/user/assistant/..."""
    prompt: List[str] = []
    for user, answer in zip(instructions[::2], instructions[1::2]):
        prompt.extend(["<s>", "[INST] ", (user["content"]).strip(), " [/INST] ", (answer["content"]).strip(), "</s>"])
    prompt.extend(["<s>", "[INST] ", (instructions[-1]["content"]).strip(), " [/INST] ","</s>"])
    return "".join(prompt)


def print_instructions(prompt: str, response: str) -> None:
    bold, unbold = '33[1m', '33[0m'
    print(f"{bold}> Input{unbold}n{prompt}nn{bold}> Output{unbold}n{response[0]['generated_text']}n")

Pengambilan pengetahuan

Anda dapat menggunakan kode berikut untuk prompt pengambilan pengetahuan:

instructions = [{"role": "user", "content": "what is the recipe of mayonnaise?"}]
prompt = format_instructions(instructions)
payload = {
"inputs": prompt,
"parameters": {"max_new_tokens": 315, "do_sample": True}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

Anda mendapatkan output berikut:

> Input
<s>[INST] what is the recipe of mayonnaise? [/INST]</s>

> Output
Here is a simple recipe for homemade mayonnaise:

Ingredients:

* 1 egg yolk
* 1 tablespoon of mustard (Dijon is a good choice)
* 1 cup of oil (canola or vegetable oil work well)
* 1-2 tablespoons of white vinegar or lemon juice
* Salt to taste

Instructions:

1. In a medium bowl, whisk together the egg yolk and mustard. It is important that these ingredients are at room temperature.
2. Start adding the oil drop by drop, whisking continuously. This step is crucial to ensure that the mayonnaise emulsifies and does not separate.
3. Once you have added about a quarter of the oil and the mixture has thickened, you can start adding the oil in a thin stream, still whisking constantly.
4. When all the oil has been incorporated and the mayonnaise is thick, whisk in the vinegar or lemon juice and salt to taste.
5. If the mayonnaise is too thick, you can thin it with a little water.
6. Store the mayonnaise in the refrigerator and use within a few days.

Note: It is important to use pasteurized eggs or egg yolks when making homemade mayonnaise to reduce the risk of foodborne illness.

Pengkodean

Model Mixtral dapat menunjukkan kekuatan yang dijadikan tolok ukur untuk tugas pengkodean, seperti yang ditunjukkan dalam kode berikut:

instructions = [
{
"role": "user",
"content": "In Bash, how do I list all text files in the current directory (excluding subdirectories) that have been modified in the last month?",
}
]
prompt = format_instructions(instructions)
payload = {
"inputs": prompt,
"parameters": {"max_new_tokens": 256, "do_sample": True, "temperature": 0.2}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

Anda mendapatkan output berikut:

> Input
<s>[INST] In Bash, how do I list all text files in the current directory (excluding subdirectories) that have been modified in the last month? [/INST]</s>
> Output
ef{0.15cm} To list all text files in the current directory that have been modified in the last month, you can use a combination of the `find` and `grep` commands in Bash. Here's the command you're looking for:

```bash
find . -maxdepth 1 -type f -name "*.txt" -mtime -30
```

Let's break down this command:

- `find .` starts a search in the current directory.
- `-maxdepth 1` limits the search to the current directory only (excluding subdirectories).
- `-type f` specifies that you're looking for files.
- `-name "*.txt"` filters the results to only include files with a `.txt` extension.
- `-mtime -30` filters the results to only include files modified within the last 30 days.

This command will output the paths of all text files in the current directory that have been modified in the last month.

Matematika dan penalaran

Model mixtral juga melaporkan keunggulan dalam akurasi matematika:

instructions = [
{
"role": "user",
"content": "I bought an ice cream for 6 kids. Each cone was $1.25 and I paid with a $10 bill. How many dollars did I get back? Explain first before answering.",
}
]
prompt = format_instructions(instructions)
payload = {
"inputs": prompt,
"parameters": {"max_new_tokens": 600, "do_sample": True, "temperature": 0.2}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

Model mixtral dapat memberikan pemahaman seperti yang ditunjukkan pada keluaran berikut dengan logika matematika:

> Input
<s>[INST] I bought an ice cream for 6 kids. Each cone was $1.25 and I paid with a $10 bill. How many dollars did I get back? Explain first before answering. [/INST] </s>
> Output
First, let's calculate the total cost of the ice cream cones. Since each cone costs $1.25 and you bought 6 cones, the total cost would be:

Total cost = Cost per cone * Number of cones
Total cost = $1.25 * 6
Total cost = $7.50

Next, subtract the total cost from the amount you paid with the $10 bill to find out how much change you got back:

Change = Amount paid - Total cost
Change = $10 - $7.50
Change = $2.50

So, you got $2.50 back.

Membersihkan

Setelah Anda selesai menjalankan buku catatan, hapus semua sumber daya yang Anda buat dalam proses sehingga penagihan Anda dihentikan. Gunakan kode berikut:

predictor.delete_model()
predictor.delete_endpoint()

Kesimpulan

Dalam postingan ini, kami menunjukkan kepada Anda cara memulai Mixtral-8x7B di SageMaker Studio dan menerapkan model untuk inferensi. Karena model dasar telah dilatih sebelumnya, model tersebut dapat membantu menurunkan biaya pelatihan dan infrastruktur serta memungkinkan penyesuaian untuk kasus penggunaan Anda. Kunjungi SageMaker JumpStart di SageMaker Studio sekarang untuk memulai.

Sumber


Tentang penulis

Rakhna Chadha adalah Arsitek Solusi Utama AI/ML dalam Akun Strategis di AWS. Rachna adalah seorang optimis yang percaya bahwa penggunaan AI secara etis dan bertanggung jawab dapat meningkatkan masyarakat di masa depan dan membawa kemakmuran ekonomi dan sosial. Di waktu luangnya, Rachna suka menghabiskan waktu bersama keluarganya, mendaki gunung, dan mendengarkan musik.

Dr.Kyle Ulrich adalah Ilmuwan Terapan dengan Algoritme bawaan Amazon SageMaker tim. Minat penelitiannya meliputi algoritme pembelajaran mesin yang dapat diskalakan, visi komputer, deret waktu, non-parametrik Bayesian, dan proses Gaussian. PhD-nya dari Duke University dan dia telah menerbitkan makalah di NeurIPS, Cell, dan Neuron.

Christopher Whitten adalah pengembang perangkat lunak di tim JumpStart. Dia membantu menskalakan pemilihan model dan mengintegrasikan model dengan layanan SageMaker lainnya. Chris bersemangat untuk mempercepat keberadaan AI di berbagai domain bisnis.

Dr.Fabio Nonato de Paula adalah Manajer Senior, Spesialis GenAI SA, yang membantu penyedia model dan pelanggan menskalakan AI generatif di AWS. Fabio memiliki hasrat untuk mendemokratisasi akses terhadap teknologi AI generatif. Di luar pekerjaan, Anda bisa menemukan Fabio mengendarai sepeda motornya di perbukitan Lembah Sonoma atau membaca ComiXology.

Dr Ashish Khetan adalah Ilmuwan Terapan Senior dengan algoritme bawaan Amazon SageMaker dan membantu mengembangkan algoritme pembelajaran mesin. Ia mendapatkan gelar PhD dari University of Illinois Urbana-Champaign. Dia adalah peneliti aktif dalam pembelajaran mesin dan inferensi statistik, dan telah menerbitkan banyak makalah di konferensi NeurIPS, ICML, ICLR, JMLR, ACL, dan EMNLP.

Karl Albertsen memimpin produk, teknik, dan sains untuk Algoritma Amazon SageMaker dan JumpStart, pusat pembelajaran mesin SageMaker. Dia bersemangat menerapkan pembelajaran mesin untuk membuka nilai bisnis.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS