Kecerdasan Data Generatif

Model pembuatan kode Kode Llama dari Meta kini tersedia melalui Amazon SageMaker JumpStart | Layanan Web Amazon

Tanggal:

Hari ini, kami dengan gembira mengumumkan model fondasi Code Llama, yang dikembangkan oleh Meta, tersedia untuk pelanggan melalui Mulai Lompatan Amazon SageMaker untuk diterapkan dengan satu klik untuk menjalankan inferensi. Code Llama adalah model bahasa besar (LLM) canggih yang mampu menghasilkan kode dan bahasa alami tentang kode baik dari kode maupun perintah bahasa alami. Code Llama gratis untuk penelitian dan penggunaan komersial. Anda dapat mencoba model ini dengan SageMaker JumpStart, hub pembelajaran mesin (ML) yang menyediakan akses ke algoritme, model, dan solusi ML sehingga Anda dapat memulai ML dengan cepat. Dalam postingan ini, kita akan membahas cara menemukan dan menerapkan model Code Llama melalui SageMaker JumpStart.

Apa itu Kode Llama

Code Llama adalah model yang dirilis oleh meta yang dibangun di atas Llama 2 dan merupakan model canggih yang dirancang untuk meningkatkan produktivitas tugas pemrograman bagi pengembang dengan membantu mereka membuat kode berkualitas tinggi dan terdokumentasi dengan baik. Model ini menunjukkan performa canggih dalam Python, C++, Java, PHP, C#, TypeScript, dan Bash, serta berpotensi menghemat waktu pengembang dan membuat alur kerja perangkat lunak lebih efisien. Muncul dalam tiga varian, dirancang untuk mencakup berbagai macam aplikasi: model dasar (Code Llama), model khusus Python (Code Llama-Python), dan model instruksi berikut untuk memahami instruksi bahasa alami (Code Llama-Instruct ). Semua varian Code Llama hadir dalam tiga ukuran: parameter 7B, 13B, dan 34B. Varian dasar dan instruksi 7B dan 13B mendukung pengisian berdasarkan konten di sekitarnya, menjadikannya ideal untuk aplikasi asisten kode.

Model tersebut dirancang menggunakan Llama 2 sebagai basis dan kemudian dilatih pada 500 miliar token data kode, dengan versi khusus Python dilatih pada tambahan 100 miliar token. Model Code Llama menyediakan generasi stabil dengan hingga 100,000 token konteks. Semua model dilatih pada urutan 16,000 token dan menunjukkan peningkatan pada input hingga 100,000 token.

Model ini tersedia dengan model yang sama lisensi komunitas sebagai Llama 2.

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 menyesuaikan model menggunakan SageMaker untuk pelatihan dan penerapan model.

Anda sekarang dapat menemukan dan menerapkan model Code Llama 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. Model Code Llama dapat ditemukan dan diterapkan di wilayah AS Timur (Virginia Utara), AS Barat (Oregon), dan Eropa (Irlandia).

Pelanggan harus menerima EULA untuk menerapkan model visa SageMaker SDK.

Temukan model

Anda dapat mengakses model dasar Code Llama 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, yang berisi model terlatih, notebook, dan solusi bawaan, di bawah Solusi bawaan dan otomatis.

Di halaman arahan SageMaker JumpStart, Anda dapat menelusuri solusi, model, buku catatan, dan sumber daya lainnya. Anda dapat menemukan model Kode Llama di Model Dasar: Pembuatan Teks korsel.

Anda juga dapat menemukan varian model lainnya dengan memilih Jelajahi semua Model Pembuatan Teks atau mencari Kode Llama.

Anda dapat memilih kartu model untuk melihat detail tentang model seperti lisensi, data yang digunakan untuk melatih, dan cara penggunaan. Anda juga akan menemukan dua tombol, Menyebarkan dan Buka Buku Catatan, yang akan membantu Anda menggunakan model tersebut.

Menyebarkan

Ketika Anda memilih Menyebarkan dan menyetujui persyaratannya, penerapan akan dimulai. Alternatifnya, Anda dapat menyebarkan melalui contoh buku catatan dengan memilih Buka Buku Catatan. Contoh buku catatan yang memberikan panduan menyeluruh tentang cara menyebarkan model untuk inferensi dan membersihkan sumber daya.

Untuk menerapkan menggunakan notebook, kita mulai dengan memilih model yang sesuai, yang ditentukan oleh model_id. Anda dapat menerapkan salah satu model yang dipilih di SageMaker dengan kode berikut:

from sagemaker.jumpstart.model import JumpStartModel model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-7b")
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 disebarkan, Anda dapat menjalankan inferensi terhadap titik akhir yang disebarkan melalui prediktor SageMaker:

payload = { "inputs": "<s>[INST] How do I deploy a model on Amazon SageMaker? [/INST]", "parameters": {"max_new_tokens": 512, "temperature": 0.2, "top_p": 0.9}
}
predictor.predict(payload, custom_attributes="accept_eula=true")

Perhatikan bahwa secara default, accept_eula diatur ke false. Anda perlu mengatur accept_eula=true untuk memanggil titik akhir dengan sukses. Dengan melakukan ini, Anda menerima perjanjian lisensi pengguna dan kebijakan penggunaan yang dapat diterima seperti yang disebutkan sebelumnya. Anda juga bisa Download perjanjian lisensi.

Custom_attributes yang digunakan untuk meneruskan EULA adalah pasangan kunci/nilai. Kunci dan nilai dipisahkan dengan = dan pasangan dipisahkan dengan ;. Jika pengguna meneruskan kunci yang sama lebih dari sekali, nilai terakhir disimpan dan diteruskan ke pengendali skrip (dalam hal ini, digunakan untuk logika kondisional). Misalnya jika accept_eula=false; accept_eula=true diteruskan ke server, lalu accept_eula=true disimpan dan diteruskan ke pengendali skrip.

Parameter inferensi mengontrol proses pembuatan teks di titik akhir. Kontrol token baru maksimum mengacu pada ukuran output yang dihasilkan oleh model. Perhatikan bahwa ini tidak sama dengan jumlah kata karena kosakata model tidak sama dengan kosakata bahasa Inggris, dan setiap token mungkin bukan kata bahasa Inggris. Suhu mengontrol keacakan keluaran. Suhu yang lebih tinggi menghasilkan keluaran yang lebih kreatif dan berhalusinasi. Semua parameter inferensi bersifat opsional.

Tabel berikut mencantumkan semua model Kode Llama yang tersedia di SageMaker JumpStart bersama dengan ID model, jenis instans default, dan token maksimum yang didukung (jumlah jumlah token masukan dan jumlah token yang dihasilkan untuk semua permintaan bersamaan) yang didukung untuk masing-masing model-model ini.

Model Nama ID Model Jenis Instans Default Token yang Didukung Maks
KodeLlama-7b meta-textgenerasi-llama-codellama-7b ml.g5.2xbesar 10000
CodeLlama-7b-Instruksikan meta-textgenerasi-llama-codellama-7b-instruct ml.g5.2xbesar 10000
KodeLlama-7b-Python meta-textgenerasi-llama-codellama-7b-python ml.g5.2xbesar 10000
KodeLlama-13b meta-textgenerasi-llama-codellama-13b ml.g5.12xbesar 32000
CodeLlama-13b-Instruksikan meta-textgenerasi-llama-codellama-13b-instruct ml.g5.12xbesar 32000
KodeLlama-13b-Python meta-textgenerasi-llama-codellama-13b-python ml.g5.12xbesar 32000
KodeLlama-34b meta-textgenerasi-llama-codellama-34b ml.g5.48xbesar 48000
CodeLlama-34b-Instruksikan meta-textgenerasi-llama-codellama-34b-instruct ml.g5.48xbesar 48000
KodeLlama-34b-Python meta-textgenerasi-llama-codellama-34b-python ml.g5.48xbesar 48000

Meskipun model Code Llama dilatih pada panjang konteks 16,000 token, model tersebut telah melaporkan kinerja yang baik pada jendela konteks yang lebih besar. Kolom token maksimum yang didukung pada tabel sebelumnya adalah batas atas pada jendela konteks yang didukung pada jenis instans default. Karena model Code Llama 7B hanya dapat mendukung 10,000 token pada instans ml.g5.2xlarge, kami menyarankan untuk menerapkan versi model 13B atau 34B jika konteks yang lebih besar diperlukan untuk aplikasi Anda.

Secara default, semua model berfungsi untuk tugas pembuatan kode. Model dasar dan model instruksi merespons tugas pengisian, meskipun model dasar memiliki kualitas keluaran yang lebih baik untuk sebagian besar kueri sampel. Terakhir, hanya model instruksi yang bekerja pada tugas instruksi. Tabel berikut mengilustrasikan model mana yang memiliki performa baik (Baik) dan performa sedang (Moderat) pada contoh kueri di buku catatan demo.

. Pembuatan Kode Pengisian Kode Instruksi kode
KodeLlama-7b baik baik N / A
CodeLlama-7b-Instruksikan baik Moderat baik
KodeLlama-7b-Python baik N / A N / A
KodeLlama-13b baik baik N / A
CodeLlama-13b-Instruksikan baik Moderat baik
KodeLlama-13b-Python baik N / A N / A
KodeLlama-34b baik N / A N / A
CodeLlama-34b-Instruksikan baik N / A baik
KodeLlama-34b-Python baik N / A N / A

Pembuatan kode

Contoh berikut dijalankan pada model CodeLlama-34b-Instruct dengan parameter payload "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9}:

Input
import socket def ping_exponential_backoff(host: str): Output """ Ping a host using exponential backoff. """ for i in range(1, 10): try: socket.gethostbyname(host) return True except socket.gaierror: time.sleep(2 ** i) return False Input
import argparse def main(string: str): print(string) print(string[::-1]) if __name__ == "__main__": Output parser = argparse.ArgumentParser() parser.add_argument("string", help="String to be printed") args = parser.parse_args() main(args.string)

Pengisian kode

Pengisian kode melibatkan pengembalian kode yang dihasilkan berdasarkan konteks sekitarnya. Hal ini berbeda dengan tugas pembuatan kode karena, selain segmen kode awalan, model juga dilengkapi dengan akhiran segmen kode. Token khusus digunakan selama penyempurnaan untuk menandai awalan (<PRE>), awal akhiran (<SUF>), dan awal tengah (<MID>). Urutan masukan ke model harus dalam salah satu format berikut:

  • awalan-akhiran-tengah - <PRE> {prefix} <SUF>{suffix} <MID>
  • akhiran-awalan-tengah - <PRE> <SUF>{suffix} <MID> {prefix}

Contoh berikut menggunakan format prefix-suffix-middle pada model CodeLlama-7b dengan payload parameters {"max_new_tokens": 256, "temperature": 0.05, "top_p": 0.9}:

Input
<PRE> def remove_non_ascii(s: str) -> str: """ <SUF> return result <MID> Output Remove non-ASCII characters from a string. :param s: The string to remove non-ASCII characters from. :return: The string with non-ASCII characters removed. """ result = "" for c in s: if ord(c) < 128: result += c Input
# Installation instructions: ```bash
<FILL> ```
This downloads the LLaMA inference code and installs the repository as a local pip package. Output git clone https://github.com/LLaMA-AI/LLaMA-inference.git cd LLaMA-inference pip install -e . Input
class InterfaceManagerFactory(AbstractManagerFactory): def __init__(<FILL>
def main(): factory = InterfaceManagerFactory(start=datetime.now()) managers = [] for i in range(10): managers.append(factory.build(id=i)) Output
self, start=None): self.start = start def build(self, id): return InterfaceManager(id, self.start) Input
/-- A quasi-prefunctoid is 1-connected iff all its etalisations are 1-connected. -/
theorem connected_iff_etalisation [C D : precategoroid] (P : quasi_prefunctoid C D) : π₁ P = 0 ↔ <FILL> = 0 :=
begin split, { intros h f, rw pi_1_etalisation at h, simp [h], refl }, { intro h, have := @quasi_adjoint C D P, simp [←pi_1_etalisation, this, h], refl }
end Output
∀ f : C ⟶ D, π₁ (P.etalise f)

Instruksi kode

Meta juga menyediakan varian Kode Llama yang disesuaikan dengan instruksi. Contoh kueri di bagian ini hanya dapat diterapkan pada model Kode Llama yang disetel instruksi ini, yang merupakan model dengan akhiran instruksi ID model. Format Kode Llama untuk instruksinya sama dengan format prompt obrolan Llama-2, yang kami detailkan Model alas bedak Llama 2 kini tersedia di SageMaker JumpStart

Prompt pengguna sederhana mungkin terlihat seperti berikut:

<s>[INST] {user_prompt} [/INST]

Anda juga dapat menambahkan prompt sistem dengan sintaks berikut:

<s>[INST] <<SYS>>
{system_prompt}
<</SYS>> {user_prompt} [/INST]

Terakhir, Anda dapat melakukan interaksi percakapan dengan model dengan menyertakan semua perintah pengguna sebelumnya dan respons asisten dalam input:

<s>[INST] <<SYS>>
{system_prompt}
<</SYS>> {user_prompt_1} [/INST] {assistant_response_1} </s><s>[INST] {user_prompt_1} [/INST]

Contoh berikut dijalankan pada model CodeLlama-13b-Instruct dengan “parameter” parameter payload: {"max_new_tokens": 512, "temperature": 0.2, "top_p": 0.9}:

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] Output You can use the `find` command in Bash to list all text files in the current directory (excluding subdirectories) that have been modified in the last month. Here's an example command:
```
find . -type f -name "*.txt" -mtime -30
```
Here's a breakdown of the command: * `find .`: This tells `find` to search the current directory and all its subdirectories.
* `-type f`: This tells `find` to only search for files (not directories).
* `-name "*.txt"`: This tells `find` to only search for files with the `.txt` extension.
* `-mtime -30`: This tells `find` to only search for files that have been modified in the last 30 days (2,592,000 seconds). The output of the command will be a list of all text files in the current directory (excluding subdirectories) that have been modified in the last month. Input
<s>[INST] What is the difference between inorder and preorder traversal? Give an example in Python. [/INST] Output Inorder and preorder traversal are two different ways of traversing a binary tree. Inorder traversal is a way of visiting the nodes of a binary tree in a specific order. In an inorder traversal, the left subtree is visited first, then the current node, and finally the right subtree is visited. This means that the nodes are visited in a left-to-right, top-to-bottom order. Preorder traversal, on the other hand, is a way of visiting the nodes of a binary tree in a different order. In a preorder traversal, the current node is visited first, followed by the left subtree, and finally the right subtree. This means that the nodes are visited in a top-down, left-to-right order. Here is an example of an inorder traversal of a binary tree in Python:
```
def inorder_traversal(root): if root is None: return [] return inorder_traversal(root.left) + [root.val] + inorder_traversal(root.right)
```
And here is an example of a preorder traversal of a binary tree in Python:
```
def preorder_traversal(root): if root is None: return [] return [root.val] + preorder_traversal(root.left) + preorder_traversal(root.right)
```
In this example, the `inorder_traversal` function returns a list of the values in the tree in the order of the keys, from smallest to largest. The `preorder_traversal` function returns a list of the values in the tree in the order of the keys, but with the current node visited before its children. Input
<s>[INST] <<SYS>>
Provide answers in JavaScript
<</SYS>> Write a function that computes the set of sums of all contiguous sublists of a given list. [/INST] Output function contiguousSublistSums(list) { let sums = []; for (let i = 0; i < list.length; i++) { let sum = 0; for (let j = i; j < list.length; j++) { sum += list[j]; sums.push(sum); } } return sums;
} console.log(contiguousSublistSums([1, 2, 3, 4, 5])); // [1, 3, 6, 10, 15]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6])); // [1, 3, 6, 10, 15, 21]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6, 7])); // [1, 3, 6, 10, 15, 21, 28]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6, 7, 8])); // [1, 3, 6, 10, 15, 21, 28, 36]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6, 7, 8, 9])); // [1, 3, 6, 10, 15, 21, 28, 36, 45]

Membersihkan

Setelah Anda selesai menjalankan buku catatan, pastikan untuk menghapus 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 model Code Llama di SageMaker Studio dan menerapkan model untuk menghasilkan kode dan bahasa alami tentang kode dari perintah kode dan bahasa alami. 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


Gabriel Synnaeve
adalah Direktur Riset di tim Facebook AI Research (FAIR) di Meta. Sebelum Meta, Gabriel adalah rekan pascadoktoral di tim Emmanuel Dupoux di École Normale Supérieure di Paris, mengerjakan rekayasa balik perolehan bahasa pada bayi. Gabriel menerima gelar PhD dalam pemodelan Bayesian yang diterapkan pada AI game strategi real-time dari Universitas Grenoble.

Eissa Jamil adalah Insinyur Mitra RL, AI Generatif di Meta.

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

Dr Ashish Khetan adalah Ilmuwan Terapan Senior di Amazon SageMaker JumpStart dan membantu mengembangkan algoritme pembelajaran mesin. Ia memperoleh 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.

Vivek Singh adalah manajer produk di SageMaker JumpStart. Dia berfokus untuk memungkinkan pelanggan menggunakan SageMaker JumpStart guna menyederhanakan dan mempercepat perjalanan ML mereka untuk membangun aplikasi AI Generatif.

tempat_img

Intelijen Terbaru

tempat_img