דגמי יצירת קוד קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | שירותי האינטרנט של אמזון

דגמי יצירת קוד קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | שירותי האינטרנט של אמזון

היום, אנו נרגשים להכריז על מודלים של בסיס Code Llama, שפותחו על ידי Meta, זמינים עבור לקוחות באמצעות אמזון SageMaker JumpStart לפרוס בלחיצה אחת להפעלת הסקה. Code Llama הוא מודל שפה גדול (LLM) מתקדם המסוגל ליצור קוד ושפה טבעית לגבי קוד הן מהנחיות קוד והן בשפה טבעית. Code Lama הוא בחינם לשימוש מחקר ומסחרי. אתה יכול לנסות את המודל הזה עם SageMaker JumpStart, רכזת למידת מכונה (ML) המספקת גישה לאלגוריתמים, מודלים ופתרונות ML כדי שתוכל להתחיל במהירות עם ML. בפוסט זה, אנו עוברים דרך כיצד לגלות ולפרוס את מודל Code Llama באמצעות SageMaker JumpStart.

מה זה קוד לאמה

Code Lama הוא דגם ששוחרר על ידי meta זה בנוי על גבי Llama 2 והוא מודל חדיש שנועד לשפר את הפרודוקטיביות של משימות תכנות עבור מפתחים על ידי סיוע להם ליצור קוד איכותי ומתועד היטב. הדגמים מציגים ביצועים עדכניים ב-Python, C++, Java, PHP, C#, TypeScript ו-Bash, ויש להם פוטנציאל לחסוך זמן למפתחים ולהפוך את זרימות העבודה של התוכנה ליעילות יותר. הוא מגיע בשלוש גרסאות, מתוכננות לכסות מגוון רחב של יישומים: המודל הבסיסי (Code Llama), מודל מיוחד של Python (Code Llama-Python), ומודל העוקב אחר הוראות להבנת הוראות שפה טבעית (Code Llama-Instruct) ). כל גרסאות Code Llama מגיעות בשלושה גדלים: פרמטרים 7B, 13B ו-34B. גרסאות הבסיס וההוראות 7B ו-13B תומכות במילוי המבוסס על תוכן שמסביב, מה שהופך אותן לאידיאליות עבור יישומי עוזר קוד.

הדגמים תוכננו תוך שימוש ב-Llama 2 כבסיס ולאחר מכן אומנו על 500 מיליארד אסימונים של נתוני קוד, כאשר הגרסה המיוחדת של Python מאומנת על כמות מצטברת של 100 מיליארד אסימונים. דגמי Code Llama מספקים דורות יציבים עם עד 100,000 אסימוני הקשר. כל הדגמים מאומנים על רצפים של 16,000 אסימונים ומציגים שיפורים בכניסות עם עד 100,000 אסימונים.

הדגם זמין תחת אותו רישיון קהילה בתור לאמה 2.

מה זה SageMaker JumpStart

עם SageMaker JumpStart, מתרגלי ML יכולים לבחור מתוך רשימה הולכת וגדלה של דגמי יסוד עם הביצועים הטובים ביותר. מתרגלי ML יכולים לפרוס מודלים של בסיס למסורים אמזון SageMaker מופעים בתוך סביבה מבודדת רשת והתאמה אישית של מודלים באמצעות SageMaker להדרכה ופריסה של מודלים.

כעת תוכל לגלות ולפרוס דגמי Code Lama בכמה לחיצות פנימה סטודיו SageMaker של אמזון או באופן פרוגרמטי דרך SageMaker Python SDK, מה שמאפשר לך להפיק ביצועי מודל ובקרות MLOps עם תכונות SageMaker כגון צינורות SageMaker של אמזון, באגים של SageMaker באמזון, או יומני מיכל. המודל נפרס בסביבה מאובטחת של AWS ותחת בקרות ה-VPC שלך, ועוזר להבטיח אבטחת נתונים. דגמי Code Llama ניתנים לגילוי וניתן לפרוס אותם באזורי ארה"ב מזרח (נ' וירג'יניה), ארה"ב מערב (אורגון) ואירופה (אירלנד).

לקוחות חייבים לקבל את ה-EULA כדי לפרוס מודל ויזה של SageMaker SDK.

גלה דגמים

אתה יכול לגשת לדגמי בסיס Code Llama דרך SageMaker JumpStart בממשק המשתמש של SageMaker Studio ו- SageMaker Python SDK. בחלק זה נעבור על איך לגלות את הדגמים בסטודיו SageMaker.

SageMaker Studio הוא סביבת פיתוח משולבת (IDE) המספקת ממשק חזותי אחד מבוסס אינטרנט שבו אתה יכול לגשת לכלים ייעודיים לביצוע כל שלבי הפיתוח של ML, מהכנת נתונים ועד לבנייה, הדרכה ופריסה של מודלי ה-ML שלך. לפרטים נוספים כיצד להתחיל ולהגדיר את SageMaker Studio, עיין ב סטודיו SageMaker של אמזון.

ב-SageMaker Studio, תוכל לגשת ל-SageMaker JumpStart, המכיל דגמים מאומנים מראש, מחברות ופתרונות מובנים מראש, תחת פתרונות מובנים ואוטומטיים מראש.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

בדף הנחיתה של SageMaker JumpStart, אתה יכול לחפש פתרונות, דגמים, מחברות ומשאבים אחרים. אתה יכול למצוא דגמי Code Lama ב מודלים של יסוד: יצירת טקסט קרוסלה.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אתה יכול גם למצוא גרסאות דגמים אחרות על ידי בחירה חקור את כל המודלים ליצירת טקסט או חיפוש אחר Code Lama.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

אתה יכול לבחור את כרטיס הדגם כדי להציג פרטים על הדגם כגון רישיון, נתונים המשמשים לאימון ואופן השימוש. תמצאו גם שני כפתורים, לפרוס ו פתח מחברת, שיעזור לך להשתמש במודל.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לפרוס

כשאתה בוחר לפרוס ואשר את התנאים, הפריסה תתחיל. לחלופין, תוכל לפרוס דרך המחברת לדוגמה על ידי בחירה פתח מחברת. המחברת לדוגמה המספקת הדרכה מקצה לקצה כיצד לפרוס את המודל להסקת מסקנות וניקוי משאבים.

כדי לפרוס באמצעות מחברת, אנו מתחילים בבחירת דגם מתאים, שצוין על ידי model_id. אתה יכול לפרוס כל אחד מהדגמים שנבחרו ב- SageMaker עם הקוד הבא:

from sagemaker.jumpstart.model import JumpStartModel model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-7b")
predictor = model.deploy()

זה פורס את המודל ב- SageMaker עם תצורות ברירת מחדל, כולל סוג מופע ברירת מחדל ותצורות ברירת מחדל של VPC. אתה יכול לשנות תצורות אלה על ידי ציון ערכים שאינם ברירת מחדל ב JumpStartModel. לאחר הפריסה, אתה יכול להפעיל הסקה נגד נקודת הקצה שנפרסה דרך מנבא 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")

שימו לב שכברירת מחדל, accept_eula מוגדר false. אתה צריך להגדיר accept_eula=true כדי להפעיל את נקודת הקצה בהצלחה. על ידי כך, אתה מקבל את הסכם רישיון המשתמש ומדיניות השימוש המקובל כפי שהוזכר קודם לכן. אתה יכול גם להורדה הסכם הרישיון.

Custom_attributes המשמשים להעברת EULA הם זוגות מפתח/ערך. המפתח והערך מופרדים ב-= וזוגות מופרדים ב-;. אם המשתמש מעביר את אותו מפתח יותר מפעם אחת, הערך האחרון נשמר ומועבר למטפל הסקריפט (במקרה זה, משמש ללוגיקה מותנית). לדוגמה, אם accept_eula=false; accept_eula=true מועבר לשרת, אם כן accept_eula=true נשמר ומועבר למטפל הסקריפט.

פרמטרי הסקה שולטים בתהליך יצירת הטקסט בנקודת הקצה. בקרת האסימונים החדשים המקסימלית מתייחסת לגודל הפלט שנוצר על ידי המודל. שימו לב שזה לא זהה למספר המילים מכיוון שאוצר המילים של המודל אינו זהה לאוצר המילים בשפה האנגלית, וייתכן שכל אסימון אינו מילה בשפה האנגלית. הטמפרטורה שולטת באקראיות בפלט. טמפרטורה גבוהה יותר גורמת ליציאות יצירתיות והזויות יותר. כל פרמטרי ההסקה הם אופציונליים.

הטבלה הבאה מפרטת את כל דגמי Code Llama הזמינים ב- SageMaker JumpStart יחד עם מזהי המודל, סוגי מופעי ברירת המחדל והאסימונים הנתמכים המקסימליים (סכום של מספר אסימוני הקלט ומספר האסימונים שנוצרו עבור כל הבקשות במקביל) הנתמכים עבור כל אחת מהן. הדגמים הללו.

שם דגם מזהה דגם סוג מופע ברירת מחדל מקסימום אסימונים נתמכים
CodeLlama-7b meta-textgeneration-llama-codellama-7b ml.g5.2xlarge 10000
CodeLlama-7b-Instruct meta-textgeneration-llama-codellama-7b-instruct ml.g5.2xlarge 10000
CodeLlama-7b-Python meta-textgeneration-llama-codellama-7b-python ml.g5.2xlarge 10000
CodeLlama-13b meta-textgeneration-llama-codellama-13b ml.g5.12xlarge 32000
CodeLlama-13b-Instruct meta-textgeneration-llama-codellama-13b-instruct ml.g5.12xlarge 32000
CodeLlama-13b-Python meta-textgeneration-llama-codellama-13b-python ml.g5.12xlarge 32000
CodeLlama-34b meta-textgeneration-llama-codellama-34b ml.g5.48xlarge 48000
CodeLlama-34b-Instruct meta-textgeneration-llama-codellama-34b-instruct ml.g5.48xlarge 48000
CodeLlama-34b-Python meta-textgeneration-llama-codellama-34b-python ml.g5.48xlarge 48000

בעוד שדגמי Code Llama אומנו באורך הקשר של 16,000 אסימונים, הדגמים דיווחו על ביצועים טובים בחלונות הקשר גדולים אף יותר. העמודה המקסימלית הנתמכת בטבלה הקודמת היא הגבול העליון בחלון ההקשר הנתמך בסוג המופע המוגדר כברירת מחדל. מכיוון שמודל Code Llama 7B יכול לתמוך רק ב-10,000 אסימונים במופע ml.g5.2xlarge, אנו ממליצים לפרוס גרסת מודל 13B או 34B אם נדרשים הקשרים גדולים יותר עבור היישום שלך.

כברירת מחדל, כל הדגמים עובדים עבור משימות יצירת קוד. מודל הבסיס וההנחיות מגיבים שניהם למשימות מילוי, אם כי למודל הבסיס היה תפוקה איכותית יותר עבור רוב השאילתות לדוגמה. לבסוף, רק דגמי הוראה עובדים על משימות הוראה. הטבלה הבאה ממחישה לאילו דגמים ביצועים טובים (טובים) וביצועים מתונים (בינוניים) בשאילתות לדוגמה במחברות ההדגמה.

. יצירת קוד מילוי קוד הוראות קוד
CodeLlama-7b טוב טוב N / A
CodeLlama-7b-Instruct טוב לְמַתֵן טוב
CodeLlama-7b-Python טוב N / A N / A
CodeLlama-13b טוב טוב N / A
CodeLlama-13b-Instruct טוב לְמַתֵן טוב
CodeLlama-13b-Python טוב N / A N / A
CodeLlama-34b טוב N / A N / A
CodeLlama-34b-Instruct טוב N / A טוב
CodeLlama-34b-Python טוב N / A N / A

יצירת קוד

הדוגמאות הבאות הופעלו על מודל CodeLlama-34b-Instruct עם פרמטרי עומס "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)

מילוי קוד

מילוי קוד כרוך בהחזרת קוד שנוצר בהתחשב בהקשר הסובב. זה שונה ממשימת יצירת הקוד מכיוון שבנוסף לקטע קוד קידומת, המודל מסופק גם עם סיומת קטע קוד. נעשה שימוש באסימונים מיוחדים במהלך כוונון עדין כדי לסמן את תחילת הקידומת (<PRE>), תחילת הסיומת (<SUF>), ותחילת האמצע (<MID>). רצפי קלט למודל צריכים להיות באחד מהפורמטים הבאים:

  • קידומת-סיומת-אמצע - <PRE> {prefix} <SUF>{suffix} <MID>
  • סיומת-תחילית-אמצע - <PRE> <SUF>{suffix} <MID> {prefix}

הדוגמאות הבאות משתמשות בפורמט קידומת-סיומת-אמצע במודל CodeLlama-7b עם מטען 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)

הוראות קוד

Meta סיפקה גם גרסה מכוונת להוראות של Code Lama. שאילתות לדוגמה בסעיף זה יכולות להיות מיושמות רק על דגמי Code Llama המכוונים להוראות, שהם הדגמים עם סיומת הוראות מזהה דגם. פורמט ה- Code Llama להוראות זהה לפורמט הנחיה של Llama-2-chat, אותו אנו מפרטים ב דגמי הבסיס של Llama 2 זמינים כעת ב- SageMaker JumpStart

בקשת משתמש פשוטה עשויה להיראות כך:

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

אתה יכול גם להוסיף בקשת מערכת עם התחביר הבא:

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

לבסוף, תוכל לקיים אינטראקציה שיחה עם המודל על ידי הכללת כל הנחיות המשתמש הקודמות ותגובות העוזר בקלט:

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

דוגמאות אלו הופעלו על מודל CodeLlama-13b-Instruct עם פרמטרי עומס "פרמטרים": {"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]

לנקות את

לאחר שתסיים להפעיל את המחברת, הקפד למחוק את כל המשאבים שיצרת בתהליך כדי שהחיוב שלך יופסק. השתמש בקוד הבא:

predictor.delete_model()
predictor.delete_endpoint()

סיכום

בפוסט זה, הראינו לכם כיצד להתחיל עם מודלים של Code Llama ב-SageMaker Studio ולפרוס את המודל להפקת קוד ושפה טבעית לגבי קוד מהנחיות הן לקוד והן מהשפה הטבעית. מכיוון שדגמי היסודות הוכשרו מראש, הם יכולים לסייע בהורדת עלויות ההדרכה והתשתית ולאפשר התאמה אישית למקרה השימוש שלך. בקר עכשיו ב- SageMaker JumpStart ב- SageMaker Studio כדי להתחיל.

משאבים


על המחברים


דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.גבריאל סינייב
הוא מנהל מחקר בצוות Facebook AI Research (FAIR) ב-Meta. לפני מטה, גבריאל היה פוסט-דוקטורט בצוות של עמנואל דופו ב-École Normale Supérieure בפריז, ועבד על הנדסה לאחור של רכישת שפה אצל תינוקות. גבריאל קיבל את הדוקטורט שלו בדוגמנות בייסיאנית המיושמת למשחקי אסטרטגיה בזמן אמת בינה מלאכותית מאוניברסיטת גרנובל.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.עייסה ג'מיל הוא מהנדס שותפים RL, AI Generative ב- Meta.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר קייל אולריך הוא מדען יישומי בצוות אמזון SageMaker JumpStart. תחומי המחקר שלו כוללים אלגוריתמים של למידת מכונה ניתנים להרחבה, ראייה ממוחשבת, סדרות זמן, אי-פרמטריות בייסיאניות ותהליכי גאוס. הדוקטורט שלו הוא מאוניברסיטת דיוק והוא פרסם מאמרים ב-NeurIPS, Cell, and Neuron.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר אשיש חתן הוא מדען יישומי בכיר עם Amazon SageMaker JumpStart ומסייע בפיתוח אלגוריתמים של למידת מכונה. הוא קיבל את הדוקטורט שלו מאוניברסיטת אילינוי אורבנה-שמפיין. הוא חוקר פעיל בלמידת מכונה והסקה סטטיסטית, ופרסם מאמרים רבים בכנסים NeurIPS, ICML, ICLR, JMLR, ACL ו-EMNLP.

דגמי יצירת קוד לאמה מבית Meta זמינים כעת דרך Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ויווק סינג הוא מנהל מוצר עם SageMaker JumpStart. הוא מתמקד בלאפשר ללקוחות להיכנס ל-SageMaker JumpStart כדי לפשט ולהאיץ את מסע ה-ML שלהם לבניית יישומי AI Generative.

בול זמן:

עוד מ למידת מכונות AWS