۳۰ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

Llama Chat و Code Llama در کدنویسی خوب هستند

Llama 2 Chat می تواند کد پایتون را به خوبی تولید کند و توضیح دهد. مدل‌های تنظیم‌شده Code Llama قابلیت‌های بهتری را برای تولید کد ارائه می‌دهند.

Llama 2 Chat می تواند کد پایتون را به خوبی تولید کند و توضیح دهد. مدل‌های تنظیم‌شده Code Llama قابلیت‌های بهتری را برای تولید کد ارائه می‌دهند.

وقتی با Poe، یک جمع‌آورنده ربات چت از Quora. من مدل رایگان تقریبا منبع باز Llama 2 70B Chat را که اخیراً منتشر شده از Meta انتخاب کردم و به آن دستور دادم “یک برنامه پایتون برای خراش دادن وب سایت ایجاد کنید. شامل تست‌هایی برای python.org و infoworld .com.” این یک نسخه کوتاه‌تر از درخواستی است که برای آزمایش CodeWhisperer، Bard، و Copilot X در ماه ژوئن استفاده کردم. هیچ یک از این سه مدل برنامه کاری تولید نکردند.

با کمال تعجب، Llama 2 70B Chat این آزمایش را انجام داد:

تولید کد لاما 01

ربات چند سوال بعدی را پیشنهاد داد:

Tell me more.
Can you explain how the BeautifulSoup library works for parsing HTML content?
Are there any other libraries or tools commonly used for web scraping in Python?
What are some best practices for web scraping to ensure compliance with website terms of service?

کد ایجاد شده برای من خوب به نظر می رسید، بنابراین آن را در Visual Studio Code کپی کردم، آن را ذخیره کردم و آن را اجرا کردم. عالی اجرا شد:

% /usr/local/bin/python3 /Users/martinheller/Code/Llama/scrapesite.py
martinheller@Martins-M1-MBP Code % /usr/local/bin/python3 /Users/martinheller/Code/Llama/scrapesite.py
Title: Welcome to Python.org
Link: #content
Link: #python-network
Link: /
Link: https://www.python.org/psf/
Link: https://docs.python.org
Link: https://pypi.org/
Link: /jobs/
Link: /community-landing/
Link: #top
Link: /
Link: https://psfmember.org/civicrm/contribute/transact?reset=1&id=2
Link: #site-map
Link: #
Link: javascript:;
Link: javascript:;
Link: javascript:;
Link: #
Link: https://www.facebook.com/pythonlang?fref=ts
Link: https://twitter.com/ThePSF
Link: /community/irc/
Link: /about/
Link: /about/apps/
Link: /about/quotes/
Link: /about/gettingstarted/
Link: /about/help/
Link: http://brochure.getpython.info/
Link: /downloads/
Link: /downloads/
Link: /downloads/source/
Link: /downloads/windows/
Link: /downloads/macos/
Link: /download/other/
Link: https://docs.python.org/3/license.html
Link: /download/alternatives
Link: /doc/
…

مقایسه کد تولید شده توسط Llama با کد تولید شده توسط CodeWhisperer، تفاوت عمده این است که Llama از مدل html.parser برای سوپ زیبا استفاده کرد که کارآمد بود، در حالی که CodeWhisperer از lxml استفاده کرد. مدل ، که خفه شد.

توضیح کد لاما ۲

من همچنین از Llama 2 70B Chat خواستم تا همان برنامه نمونه ای را که به CodeWhisperer، Bard، و Copilot X داده بودم توضیح دهد. CodeWhisperer در حال حاضر پنجره چت ندارد، بنابراین توضیحات کد را انجام نمی دهد، اما Bard در این کار بسیار عالی کار کرد و Copilot X کار خوبی انجام داد.

تولید کد لاما 02

تولید کد لاما 03

تولید کد لاما 04

توضیح لاما (در بالا نشان داده شده است) به همان اندازه خوب یا احتمالاً بهتر از آنچه بارد ایجاد کرد است. من به طور کامل نمی‌دانم چرا Llama در مورد ۱۲ متوقف شد، اما گمان می‌کنم که ممکن است به یک حد مجاز رسیده باشد، مگر اینکه به طور تصادفی دکمه “توقف” را در Poe بزنم و متوجه نشدم.

برای اطلاعات بیشتر درباره Llama 2 به طور کلی، از جمله بحث در مورد نقض احتمالی حق نسخه برداری و اینکه آیا آن منبع باز است یا نه، به «Llama 2 چیست؟ مدل زبان بزرگ متا توضیح داده شد.”

کد نویسی با کد لاما

چند روز پس از پایان کار من با Llama 2، Meta AI چندین مدل های لاما کد. چند روز پس از آن، در Google Cloud Next 2023، گوگل اعلام کرد که از مدل‌های Code Llama (در میان بسیاری دیگر) در Vertex AI Model Garden. علاوه بر این، Perplexity یکی از مدل‌های Code Llama را به همراه سه اندازه چت Llama 2 به صورت آنلاین در دسترس قرار داد. p>

بنابراین در زمانی که من این مقاله را می نوشتم چندین راه برای اجرای Code Llama وجود داشت. این احتمال وجود دارد که در ماه‌های آینده چندین ویرایشگر کد دیگر و چندین ادغام وجود داشته باشد.

Poe وقتی اولین بار آن را امتحان کردم، هیچ مدل Code Llama را میزبانی نکرد، اما در طول نوشتن این مقاله Quora کد Llama 7B، ۱۳B و ۳۴B را به کارنامه پو اضافه کرد. متأسفانه، هر سه مدل پیغام خطای ترسناک «عدم دسترسی به پو» را به من دادند، که به این معنا تعبیر می‌کنم که نقطه پایانی مدل مشغول است یا هنوز متصل نشده است. روز بعد، پو به روز شد و اجرای مدل Code Llama 34B کار کرد:

مایکروسافت از پایگاه داده Copilot برای Azure SQL رونمایی کرد

تولید کد لاما 05

همانطور که از اسکرین شات می بینید، Code Llama 34B یکی بهتر از Llama 2 بود و برنامه هایی را با استفاده از Beautiful Soup و Scrapy تولید کرد.

Perplexity وب‌سایتی است که میزبان یک Code Llama، و همچنین چندین مدل هوش مصنوعی مولد دیگر از شرکت های مختلف. من مدل Code Llama 34B Instruct را امتحان کردم که برای تولید کد چند نوبتی بهینه شده است، در وظیفه تولید کد Python برای خراش دادن وب سایت:

تولید کد لاما 06

تا آنجا که پیش رفت، این پاسخ بدی نبود. من می دانم که روش requests.get() و bs4 با موتور html.parser برای دو سایتی که برای آزمایش پیشنهاد دادم کار می کنند، و پیدا کردن همه پیوندها و چاپ برچسب های HREF آنها شروع خوبی برای پردازش است. یک بازرسی کد بسیار سریع نشان داد که چیزی واضح وجود ندارد، اما:

تولید کد لاما 07

اکنون این بیشتر شبیه یک ابزار خط فرمان به نظر می رسد، اما عملکرد متفاوت اکنون وجود ندارد. من یک فرم کاربردی را ترجیح می‌دادم، اما هنگام درخواست به جای «عملکرد» گفتم «برنامه»، بنابراین به مدل پاس می‌دهم. از سوی دیگر، برنامه به شکلی که دارد، هنگام کامپایل، توابع تعریف نشده را گزارش می دهد.

تولید کد لاما 08

بازگرداندن JSON واقعاً آن چیزی نبود که در ذهن داشتم، اما برای اهداف آزمایش مدل احتمالاً به اندازه کافی راه رفته‌ام.

Llama 2 و Code Llama در Google Cloud

در Google Cloud Next 2023، Google Cloud اعلام کرد که افزوده‌های جدید به Google Cloud Vertex AI Model Garden شامل Llama 2 و Code Llama از Meta، و یک نوت بوک Colab Enterprise را منتشر کرد که به شما امکان می دهد مدل های Code Llama از پیش آموزش دیده را با vLLM با بهترین توان عملیاتی موجود.

اگر نیاز به استفاده از مدل Llama 2 یا Code Llama برای کمتر از یک روز دارید، می‌توانید این کار را به صورت رایگان انجام دهید، و حتی آن را روی GPU اجرا کنید. از Colab استفاده کنید. اگر بلد باشید، آسان است. اگر این کار را نکردید، عبارت “run code llama on colab” را جستجو کنید و یک صفحه کامل از توضیحات، از جمله تعداد زیادی ویدئوی یوتیوب و پست های وبلاگ در مورد این موضوع را مشاهده خواهید کرد. توجه داشته باشید که اگرچه Colab رایگان است اما با زمان محدود و منابع محدود است، Colab Enterprise هزینه دارد اما محدود نیست.

اگر می خواهید یک وب سایت برای اجرای LLM ایجاد کنید، می توانید از همان کتابخانه vLLM استفاده کنید. همانطور که در نوت بوک Google Cloud Colab برای راه اندازی یک API استفاده می شود. در حالت ایده‌آل، شما آن را روی سروری با یک GPU به اندازه کافی بزرگ برای نگهداری مدلی که می‌خواهید استفاده کنید، راه‌اندازی کنید، اما این کاملاً ضروری نیست: می‌توانید با چیزی مانند مکینتاش M1 یا M2 تا زمانی که آن را داشته باشد، کار کنید. رم کافی برای اجرای مدل شما همچنین می‌توانید از LangChain برای این کار استفاده کنید، به قیمت نوشتن یا کپی کردن چند خط کد.

اجرای Llama 2 با Ollama

اگر از Macintosh مبتنی بر Arm به عنوان ایستگاه کاری خود استفاده می کنید، می توانید مدل های Llama را به صورت محلی به عنوان یک ابزار خط فرمان اجرا کنید. شارون ماچلیس ارزشمند توضیح می دهد که چگونه از Ollama استفاده کنید. آسان است، اگرچه اگر حافظه رم کافی برای مدل ندارید، از حافظه مجازی (مانند SSD یا دیسک چرخان) استفاده می‌کند و واقعاً کند اجرا می‌شود. (پشتیبانی از لینوکس و ویندوز برای Olama برنامه ریزی شده است.)

CI/CD پیشرفته: 6 مرحله برای خطوط لوله CI/CD بهتر

من Ollama را با چندین مدل (از بسیاری از مدل هایی که پشتیبانی می کند) در مک بوک پرو M1 خود امتحان کردم که متأسفانه فقط ۸ گیگابایت رم دارد. من با استفاده از Llama 2، ظاهراً یکی از مدل‌های کوچکتر (۷B؟) کار استاندارد تولید کد خراش‌دادن وب پایتون را شروع کردم. نتیجه شبیه چیزی است که من از مدل Llama 2 70B که روی Poe اجرا می‌شود، دریافت کردم، اگرچه ساختار چندان خوبی ندارد. توجه داشته باشید که اولاما مدل را فقط اولین باری که به آن نیاز دارد دانلود می کند.

martinheller@Martins-M1-MBP ~ % ollama run llama2
pulling manifest
pulling 8daa9615cce3... 100% |███████████████| (۳.۸/۳.۸ GB, 51 MB/s)
pulling 8c17c2ebb0ea... 100% |██████████████████| (۷.۰/۷.۰ kB, 39 MB/s)
pulling 7c23fb36d801... 100% |█████████████████| (۴.۸/۴.۸ kB, 5.0 MB/s)
pulling 578a2e81f706... 100% |████████████████████| (۹۵/۹۵ B, 129 kB/s)
pulling e35ab70a78c7... 100% |████████████████████| (۹۰/۹۰ B, 550 kB/s)
pulling 96862bb35d77... 100% |██████████████████| (۴۴۷/۴۴۷ B, 2.8 MB/s)
verifying sha256 digest
writing manifest
success
>>> Generate a Python program to scrape a website. Include tests for python.org and infoworld.com
Sure! Here is an example of how you can use the `requests` and `BeautifulSoup` libraries in Python to scrape a website:
```
import requests
from bs4 import BeautifulSoup

# Example website to scrape
url = "https://www.python.org"

# Send a request to the website and get the HTML response
response = requests.get(url)

# Parse the HTML content using Beautiful Soup
soup = BeautifulSoup(response.content, 'html.parser')

# Find the specific information you want to scrape on the website
title = soup.find('h1', class_='main-title').text
print(title)  # Output: "Python.org"

# Find all the links on the page
links = soup.find_all('a')
for link in links:
    print(link.get('href'))  # Output: ["/python", "/docs", "/learn", etc.]

# Test the code with different websites
url2 = "https://www.infoworld.com"
response2 = requests.get(url2)
soup2 = BeautifulSoup(response2.content, 'html.parser')
title2 = soup2.find('h1', class_='main-title').text
print(title2)  # Output: "Infoworld"

# Find all the links on the page
links2 = soup2.find_all('a')
for link in links2:
    print(link.get('href'))  # Output: ["/news", "/features", "/opinions", etc.]
```
This code sends a request to the specified website, parses the HTML content using Beautiful Soup, and then finds specific information on the page (in this case, the title and all the links). You can modify the `url` variable at the top of the script to specify the website you want to scrape.

For example, if you want to scrape the Python documentation, you can set `url = "https://www.python.org/doc/` and then use the same code as before to find the title and links on the page.

To test the code with different websites, you can modify the `url2` variable at the top of the script to specify a different website. For example, you can set `url2 = "https://www.infoworld.com"` to scrape that website, or any other website you want to test.

Note: Make sure you have the necessary permissions and legal rights to scrape a website. Web scraping can be illegal in some cases, so be sure to check the terms of service for the website you're scraping and respect their rules.

با ایجاد آن خط پایه، من همان دستور را با استفاده از Code Llama امتحان کردم. باز هم، من اندازه مدل را مشخص نکردم، اما به نظر می رسد ۷B است.

martinheller@Martins-M1-MBP ~ % ollama run codellama
pulling manifest
pulling 8268242df6f0... 100% |████████████████████████████████████████████| (۳.۸/۳.۸ GB, 50 MB/s)
pulling 2c8743bdc4ad... 100% |███████████████████████████████████████████████| (۷.۰/۷.۰ kB, 40 MB/s)
pulling 38fa20ee7daa... 100% |███████████████████████████████████████████████| (۴.۸/۴.۸ kB, 28 MB/s)
pulling 578a2e81f706... 100% |█████████████████████████████████████████████████| (۹۵/۹۵ B, 993 kB/s)
pulling 404e21afdc6a... 100% |█████████████████████████████████████████████████| (۳۰/۳۰ B, 187 kB/s)
pulling 86b68a7bb45d... 100% |███████████████████████████████████████████████| (۵۰۷/۵۰۷ B, 4.0 MB/s)
verifying sha256 digest
writing manifest
success
>>> Generate a Python program to scrape a website. Include tests for python.org and infoworld.com
 To write a Python program that scrapes a website, you will need to use a library such as BeautifulSoup or Scrapy. These libraries allow you to navigate and parse the HTML structure of a webpage, and extract specific data from it.
Here is an example of how you might use BeautifulSoup to scrape the Python website at python.org:
```
import requests
from bs4 import BeautifulSoup

# Send a request to the Python website
url = 'https://www.python.org'
response = requests.get(url)

# Parse the HTML content using Beautiful Soup
soup = BeautifulSoup(response.content, 'html.parser')

# Find all links on the page
links = soup.find_all('a')

# Print each link to the console
for link in links:
    print(link.get('href'))
```
To write tests for this program, you can use a testing framework such as unittest or pytest. These frameworks allow you to define test functions that can be run automatically to verify that your code is working correctly.
Here is an example of how you might write tests using the unittest module:
```
import unittest
from bs4 import BeautifulSoup
class TestPythonOrg(unittest.TestCase):
    def setUp(self):
        # Send a request to the Python website
        url = 'https://www.python.org'
        response = requests.get(url)
        # Parse the HTML content using Beautiful Soup
        soup = BeautifulSoup(response.content, 'html.parser')
        self.soup = soup
    def test_title(self):
        title = self.soup.find('title').text
        self.assertEqual(title, 'Python Documentation - Python v3.10')
    def test_description(self):
        description = self.soup.find('meta', {'name': 'description'})['content']
        self.assertIn('The official homepage for the Python Programming Language', description)
    def tearDown(self):
        pass

if __name__ == '__main__':
    unittest.main()
```
This test program sends a request to the Python website, parses the HTML content using Beautiful Soup, and then runs two separate tests: one that verifies that the page title is correct, and another that verifies that the page description contains certain keywords.
You can run this test program by saving it to a file (e.g. `test_python_org.py`), opening a terminal or command prompt, and then running the following command:
```
python test_python_org.py
```
This will run all of the test functions in the program, and print a message indicating whether each test passed or failed.


Llama 2 Chat می تواند کد پایتون را به خوبی تولید و توضیح دهد. نیازی به تنظیم دقیق آن در کارهای تولید کد نیست.

  • کار تولید و توضیح کد را به خوبی انجام می دهد
  • می‌تواند دستورالعمل‌های سیستم را در چند نوبت گفتگو به خاطر بسپارد
  • نوعی منبع باز رایگان
  • محدودیت هایی را بر مجوز رایگان خود اعمال می کند
  • احتمالاً حقوق نسخه‌برداری را در مجموعه آموزشی خود نقض می‌کند

نه مدل تنظیم‌شده کد لاما قابلیت‌های بیشتری را برای تولید کد ارائه می‌دهند و به نظر می‌رسد نسخه‌های اختصاصی پایتون در مورد کلاس‌های پایتون و ماژول‌های آزمایشی و همچنین در مورد پایتون کاربردی اطلاعاتی دارند.

  • مدل های Code Llama برای تولید کد به خوبی تنظیم شده اند
  • مدل های کوچکتر نیز با قابلیت های پر کردن وسط تنظیم شده اند
  • به نظر می‌رسد مدل‌های اختصاصی پایتون درباره پایتون شی‌گرا و چارچوب‌های آزمایشی می‌دانند
  • نوعی منبع باز رایگان
  • توهم همچنان می تواند برای این مدل ها مشکل ساز باشد
  • وقتی آنها از ریل خارج می شوند، اغلب در یک زمینه قابل باور است
  • محدودیت هایی را بر مجوز رایگان خود اعمال می کند