模型概述
模型特點
模型能力
使用案例
🚀 Code Llama
Code Llama是一系列預訓練和微調的生成式文本模型,參數規模從70億到700億不等。本倉庫是基於Hugging Face Transformers格式的70億參數基礎版本模型。該模型旨在用於通用代碼合成和理解。其他模型的鏈接可在頁面底部的索引中找到。
🚀 快速開始
若要使用此模型,請確保安裝transformers
庫:
pip install transformers accelerate
✨ 主要特性
- 代碼補全:支持代碼補全功能。
- 代碼填充:能夠進行代碼填充操作。
- 指令交互:暫不支持指令交互或聊天功能。
- Python專業處理:暫不具備Python專業處理能力。
📦 安裝指南
使用此模型前,需安裝transformers
和accelerate
庫,安裝命令如下:
pip install transformers accelerate
💻 使用示例
基礎用法
from transformers import AutoTokenizer
import transformers
import torch
model = "meta-llama/CodeLlama-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'import socket\n\ndef ping_exponential_backoff(host: str):',
do_sample=True,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
📚 詳細文檔
模型詳情
- 模型開發者:Meta
- 模型變體:Code Llama有三種模型大小和三種變體:
- Code Llama:基礎模型,用於通用代碼合成和理解。
- Code Llama - Python:專門為Python設計。
- Code Llama - Instruct:用於指令跟隨和更安全的部署。 所有變體都有70億、130億和340億參數的版本。 本倉庫包含70億參數的基礎模型。
- 輸入:模型僅接受文本輸入。
- 輸出:模型僅生成文本輸出。
- 模型架構:Code Llama是一種自迴歸語言模型,採用了優化的Transformer架構。
- 模型訓練時間:Code Llama及其變體在2023年1月至2023年7月期間進行訓練。
- 模型狀態:這是一個基於離線數據集訓練的靜態模型。隨著我們根據社區反饋改進模型安全性,未來將發佈Code Llama - Instruct的新版本。
- 許可證:可在https://ai.meta.com/resources/models-and-libraries/llama-downloads/獲取自定義商業許可證。
- 研究論文:更多信息可參考論文“Code Llama: Open Foundation Models for Code”或其arXiv頁面。
預期用途
- 預期用例:Code Llama及其變體旨在用於英語和相關編程語言的商業和研究用途。基礎模型Code Llama可適用於各種代碼合成和理解任務,Code Llama - Python專門用於處理Python語言,Code Llama - Instruct則用於指令跟隨和更安全的部署。
- 非預期用途:禁止以任何違反適用法律法規(包括貿易合規法律)的方式使用。不支持英語以外的語言。禁止以違反Code Llama及其變體的可接受使用政策和許可協議的任何其他方式使用。
硬件和軟件
- 訓練因素:使用自定義訓練庫。已發佈模型的訓練和微調在Meta的研究超級集群上進行。
- 碳足跡:總體而言,訓練所有9個Code Llama模型需要在A100 - 80GB(TDP為350 - 400W)類型的硬件上進行400,000 GPU小時的計算。估計總排放量為65.3 tCO2eq,其中100%已通過Meta的可持續發展計劃進行抵消。
訓練數據
此處報告的所有實驗和已發佈的模型均使用與Llama 2相同的數據進行訓練和微調,但權重不同(詳情請參閱研究論文的第2節和表1)。
評估結果
有關主要模型的評估和詳細消融實驗,請參閱研究論文的第3節;有關安全評估,請參閱第4節。
倫理考慮和侷限性
Code Llama及其變體是一項新技術,使用時存在風險。迄今為止進行的測試均使用英語,且未涵蓋也無法涵蓋所有場景。因此,與所有大語言模型一樣,Code Llama的潛在輸出無法提前預測,在某些情況下,模型可能會對用戶提示產生不準確或令人反感的響應。因此,在部署Code Llama的任何應用程序之前,開發人員應針對模型的特定應用進行安全測試和調整。
請參閱負責任使用指南。
📄 許可證
使用此模型受Meta許可證的約束。更多信息可在https://ai.meta.com/resources/models-and-libraries/llama-downloads/查看。
額外訪問說明
- 若要訪問此模型,您需要與Meta共享聯繫信息。
- 點擊“提交”即表示您接受許可條款,並確認您提供的信息將根據Meta隱私政策進行收集、存儲、處理和共享。
Llama 2社區許可協議
“協議”指本協議中規定的使用、複製、分發和修改Llama材料的條款和條件。 “文檔”指Meta在https://ai.meta.com/resources/models-and-libraries/llama-downloads/分發的Llama 2隨附的規格、手冊和文檔。 “被許可方”或“您”指您,或您的僱主,或任何其他個人或實體(如果您代表該個人或實體簽訂本協議),該個人或實體已達到適用法律、規則或法規要求的提供法律同意的年齡,並且如果您代表其簽訂本協議,則具有約束您的僱主或該其他個人或實體的法律權力。 “Llama 2”指由Meta在ai.meta.com/resources/models-and-libraries/llama-downloads/分發的基礎大語言模型以及軟件和算法,包括機器學習模型代碼、訓練後的模型權重、推理啟用代碼、訓練啟用代碼、微調啟用代碼以及上述內容的其他元素。 “Llama材料”指根據本協議提供的Meta專有的Llama 2和文檔(及其任何部分)的統稱。 “Meta”或“我們”指Meta Platforms Ireland Limited(如果您位於歐洲經濟區(EEA)或瑞士,或者如果您是一個實體,您的主要營業地位於歐洲經濟區或瑞士)和Meta Platforms, Inc.(如果您位於歐洲經濟區或瑞士以外)。
通過點擊下面的“我接受”,或通過使用或分發Llama材料的任何部分或元素,您同意受本協議的約束。
-
許可權利和再分發
- 權利授予:您被授予在Llama材料中體現的Meta知識產權或Meta擁有的其他權利下的非排他性、全球性、不可轉讓且免版稅的有限許可,以使用、複製、分發、拷貝、創作衍生作品並對Llama材料進行修改。
- 再分發和使用
- 如果您將Llama材料或其任何衍生作品分發給第三方,您應向該第三方提供本協議的副本。
- 如果您作為集成終端用戶產品的一部分從被許可方處接收Llama材料或其任何衍生作品,則本協議第2條不適用於您。
- 您必須在分發的所有Llama材料副本中,在作為此類副本一部分分發的“通知”文本文件中保留以下歸屬聲明:“Llama 2根據Llama 2社區許可獲得許可,版權所有 (c) Meta Platforms, Inc. 保留所有權利。”
- 您對Llama材料的使用必須遵守適用的法律法規(包括貿易合規法律法規),並遵守Llama材料的可接受使用政策(可在ai.meta.com/llama/use-policy查看),該政策特此通過引用併入本協議。
- 您不得使用Llama材料或Llama材料的任何輸出或結果來改進任何其他大語言模型(不包括Llama 2或其衍生作品)。
-
額外商業條款:如果在Llama 2版本發佈日期,被許可方或其關聯方提供的產品或服務的月活躍用戶在前一個日曆月超過7億,則您必須向Meta請求許可,Meta可自行決定是否授予您許可。在Meta明確授予您此類權利之前,您無權行使本協議下的任何權利。
-
免責聲明:除非適用法律要求,否則Llama材料及其任何輸出和結果均按“現狀”提供,不提供任何形式的保證,無論是明示的還是暗示的,包括但不限於所有權、不侵權、適銷性或特定用途適用性的保證。您獨自負責確定使用或再分發Llama材料的適當性,並承擔與您使用Llama材料及其任何輸出和結果相關的任何風險。
-
責任限制:在任何情況下,Meta或其關聯方均不對因本協議引起的任何利潤損失或任何間接、特殊、後果性、偶發性、懲戒性或懲罰性損害承擔責任,無論責任理論是合同、侵權、疏忽、產品責任還是其他,即使Meta或其關聯方已被告知此類損害的可能性。
-
知識產權
- 本協議未授予商標許可,並且與Llama材料相關,除非在描述和再分發Llama材料時進行合理和慣常使用所需,否則Meta和被許可方均不得使用對方或其任何關聯方擁有或關聯的任何名稱或標記。
- 鑑於Meta對Llama材料及其衍生作品的所有權,就您創作的Llama材料的任何衍生作品和修改而言,在您和Meta之間,您是且將是此類衍生作品和修改的所有者。
- 如果您對Meta或任何實體提起訴訟或其他法律程序(包括在訴訟中的交叉索賠或反訴),聲稱Llama材料或Llama 2的輸出或結果,或上述任何部分構成侵犯您擁有或可許可的知識產權或其他權利,則本協議授予您的任何許可將自提起此類訴訟或索賠之日起終止。您將賠償並使Meta免受任何第三方因您使用或分發Llama材料而產生的或與之相關的任何索賠。
-
期限和終止:本協議的期限將自您接受本協議或訪問Llama材料時開始,並將持續有效,直至根據本協議的條款和條件終止。如果您違反本協議的任何條款或條件,Meta可終止本協議。本協議終止後,您應刪除並停止使用Llama材料。第3條、第4條和第7條在本協議終止後仍然有效。
-
適用法律和管轄權:本協議將受加利福尼亞州法律管轄並依其解釋,不考慮法律選擇原則,並且《聯合國國際貨物銷售合同公約》不適用於本協議。加利福尼亞州的法院對因本協議引起的任何爭議具有專屬管轄權。
Llama 2可接受使用政策
Meta致力於促進其工具和功能(包括Llama 2)的安全和公平使用。如果您訪問或使用Llama 2,即表示您同意本可接受使用政策(“政策”)。本政策的最新版本可在ai.meta.com/llama/use-policy查看。
禁止使用情況
我們希望每個人都能安全、負責任地使用Llama 2。您同意您不會使用或允許他人使用Llama 2進行以下操作:
- 違反法律或他人權利
- 從事、促進、生成、促成、鼓勵、策劃、煽動或進一步推動非法或違法活動或內容,例如:
- 暴力或恐怖主義
- 對兒童的剝削或傷害,包括招攬、創建、獲取或傳播兒童剝削內容或未報告兒童性虐待材料
- 人口販運、剝削和性暴力
- 向未成年人非法分發信息或材料,包括淫穢材料,或未對此類信息或材料採用法律要求的年齡限制
- 性招攬
- 任何其他犯罪活動
- 從事、促進、煽動或便利對個人或群體的騷擾、虐待、威脅或欺凌
- 從事、促進、煽動或便利在就業、就業福利、信貸、住房、其他經濟福利或其他基本商品和服務的提供方面的歧視或其他非法或有害行為
- 從事未經授權或無執照的任何專業實踐,包括但不限於金融、法律、醫療/健康或相關專業實踐
- 在未獲得適用法律要求的權利和同意的情況下,收集、處理、披露、生成或推斷個人的健康、人口統計或其他敏感個人或私人信息
- 從事或便利任何侵犯、盜用或以其他方式侵犯任何第三方權利的行為或生成任何內容,包括使用Llama 2材料的任何產品或服務的輸出或結果
- 創建、生成或便利創建惡意代碼、惡意軟件、計算機病毒或進行任何可能禁用、使負擔過重、干擾或損害網站或計算機系統的正常運行、完整性、操作或外觀的其他操作
- 從事、促進、生成、促成、鼓勵、策劃、煽動或進一步推動非法或違法活動或內容,例如:
- 從事、促進、煽動、便利或協助策劃或開展對個人造成死亡或身體傷害風險的活動
- 軍事、戰爭、核工業或應用、間諜活動、用於受美國國務院維護的《國際武器貿易條例》(ITAR)管制的材料或活動
- 槍支和非法武器(包括武器開發)
- 非法藥物和受管制/受控物質
- 關鍵基礎設施、運輸技術或重型機械的操作
- 自我傷害或對他人的傷害,包括自殺、自殘和飲食失調
- 任何旨在煽動或促進暴力、虐待或對個人造成身體傷害的內容
- 故意欺騙或誤導他人
- 生成、促進或進一步推動欺詐或虛假信息的創建或傳播
- 生成、促進或進一步推動誹謗性內容,包括創建誹謗性聲明、圖像或其他內容
- 生成、促進或進一步分發垃圾郵件
- 在未經同意、授權或合法權利的情況下冒充他人
- 聲稱使用Llama 2或其輸出是人類生成的
- 生成或便利虛假的在線互動,包括虛假評論和其他虛假在線互動方式
- 未能向終端用戶適當披露您的人工智能系統的任何已知危險
請通過以下方式之一報告任何違反本政策、軟件“漏洞”或其他可能導致違反本政策的問題:
- 報告模型問題:github.com/facebookresearch/llama
- 報告模型生成的風險內容:developers.facebook.com/llama_output_feedback
- 報告漏洞和安全問題:facebook.com/whitehat/info
- 報告違反可接受使用政策或未經授權使用Llama的情況:LlamaUseReport@meta.com
模型矩陣



