paint-brush
Beep Beep Bop Bop: Yerel LLM'leri Kullanarak Birden Fazla Yapay Zeka Aracısı Nasıl Dağıtılırby@babycommando
10,511
10,511

Beep Beep Bop Bop: Yerel LLM'leri Kullanarak Birden Fazla Yapay Zeka Aracısı Nasıl Dağıtılır

Baby Commando10m2023/10/19
Read on Terminal Reader

Llama2 ve Mistral-7b gibi yerel LLM'leri kullanarak birden fazla yerel AI aracısını konuşlandırma.
featured image - Beep Beep Bop Bop: Yerel LLM'leri Kullanarak Birden Fazla Yapay Zeka Aracısı Nasıl Dağıtılır
Baby Commando HackerNoon profile picture
0-item
1-item

Llama2 ve Mistral-7b gibi yerel LLM'leri kullanarak birden fazla yerel AI aracısını konuşlandırma.


“Asla Bir Makinenin İşini Yaptırmak İçin İnsanı Göndermeyin”

— Ajan Smith


Ücretli OpenAi yerine yerel LLM'leri kullanarak Autogen ile organize yapay zeka ajanlarından oluşan bir ordu kurmanın bir yolunu mu arıyorsunuz? O zaman doğru yere geldiniz!


Sohbet Yüksek Lisansı harikadır, ancak akıllı bir temsilci olarak harekete geçmeyi sağlamak bir sonraki seviyedir. Peki ya birçoğu? Microsoft'un en son Autogen projesiyle tanışın.


Ama bir problem var. Autogen, varsayılan olarak sınırlayıcı, pahalı ve sansürlü/duyarlı olmayan OpenAi'ye bağlanacak şekilde tasarlandı. Bu nedenle Mistral-7B gibi yerel olarak basit bir Yüksek Lisans kullanmak en iyi yoldur. Ayrıca Llama2 , Falcon , Vicuna , Alpaca gibi seçtiğiniz herhangi bir modelle de kullanabilirsiniz, gökyüzü (donanımınız) gerçekten sınırdır.


İşin sırrı, yerel LLM sunucunuzda Oobabooga'nın metin oluşturma-webui'si gibi openai JSON tarzı çıktı kullanmak ve ardından onu autogen'e bağlamaktır. Bugün inşa ettiğimiz şey budur.


Llama.cpp python bağlamalarının yanı sıra, llms'nin openai apis formatında metin oluşturması için başka yöntemlerin de bulunduğunu unutmayın.


Bu derste şunları yapacağız: 0. Oobabooga'nın metin oluşturma-webui'sini, bir LLM'yi (Mistral-7b) ve Autogen'i edinme

  1. Oobabooga'da OpenAi format uzantısını kurma

  2. Yerel LLM sunucusunun OpenAi formatıyla başlatılması

  3. Autogen'e bağlama


Başlayalım!


[Ajan Smith] "Ben, Ben, Ben.."


0. Oobabooga'nın Text-Generation-Webui'sini, LLM'yi (Mistral-7b) ve Autogen'i Alma


Devam etmeden önce pip paketlerini kurarken sanal bir ortam kullanmanız önerilir. Yeni bir tane yapın ve isterseniz etkinleştirin.


Obbabooga'nın Metin Oluşturma Webui'sini Alma: Bu, LLM'leri yerel makinenizde barındırmak için iyi bilinen bir programdır. Text- Generation-webui'nin sayfasına gidin ve kurulum kılavuzunu takip edin. Başlamak çok basittir. Hızlandırma için bir NVIDIA grafik işlemcisi kullanıyorsanız CUDA'yı da indirmek isteyebilirsiniz.


LLM (Mistral-7b-Instruct) Alma: Metin oluşturma webui'sini indirdikten sonra henüz başlatmayın. Temsilcilerimize hayat vermek için Yüksek Lisans diplomasına ihtiyacımız var.


Bugün Mistral-7B'yi , özellikle de TheBloke modelinin optimize edilmiş bir versiyonu olan Mistral-7B-instruct-v0.1.Q4_K_S.gguf'u keşfedeceğiz. Açıklamadaki açıklamaya göre makineniz için en iyi duruma getirilmiş modeli seçebilirsiniz.


Donanımınıza göre daha küçük veya daha büyük modeller seçebilirsiniz. Bilgisayarınızda bir şeyler denemekten çok korkmayın, biz burada bilim yapıyoruz.


Dosyalar ve Sürümler sayfasına gidin ve aşağıdakileri alın:

  • yapılandırma.json

  • Mistral-7B-instruct-v0.1.Q4_K_S.gguf (çoğu orta kurulumda iyi çalışır)


Dosyalar ve Sürümler sayfası


İndirdikten sonra text-jenerasyon-webui kurulum klasörüne gidin ve içindeki modeller klasörünü açın . Burada, modelinizin adını (veya istediğiniz herhangi bir adı) içeren "mistral-7b-instruct" gibi yeni bir klasör oluşturun . Yol şu şekilde olacak:


 C:/.../text-generation-webui/models/mistral-7b-instruct


Hem config.json dosyasını hem de model.gguf dosyasını yeni klasöre yerleştirin.


Autogen'i Almak :
Microsoft'un çoklu aracılı python kütüphanesini kurmak için terminalinizdeki pip paketi yükleyicisini kullanarak kurmanız yeterli.


 pip install pyautogen


1. Oobabooga'da OpenAi Format Uzantısını Kurma


[Ajan Smith] "Önemli olanın dışındaki tüm kasları kullanıyorsun"


Yepyeni text-jenerasyon-webui'niz yüklendiğinde ve LLM indirildiğinde, yerel Oobabooga sunucunuzun OpenAi JSON formatında konuşmasını sağlamaya devam edebiliriz. OpenAi API formatları ve özellikleri hakkında daha fazla bilgiyi kendi kitaplarında bulabilirsiniz. dokümantasyon .


Autogen'i yerel sunucumuza bağlamak için Ooobaboga'nın text-jenerasyon-webui uzantıları klasöründeki “openai” uzantısını etkinleştirmemiz gerekecek.


Terminalinizin başlığında “text- Generation-webui/extensions/openai” klasörüne gidin ve orada gereksinimlerini yükleyin:


 pip install -r requirements.txt


2. Yerel LLM Sunucusunu OpenAi Formatında Başlatma

Şimdi terminalinizdeki /text-jenerasyon-webui kök klasörüne geri dönün. Bu bebeği ayağa kaldırmanın zamanı geldi.


Adından da anlaşılacağı gibi, bir webui olarak kullanılması gerekiyordu, ancak yaptığınız diğer programlardan apis'leri sorgulamak için bir sunucu olarak da çalışmasını sağlayabilirsiniz.


Yerel sunucu olarak ve openai api uzantısıyla önyükleme yapmak için mevcut işletim sisteminize göre aşağıdaki komutu kullanın.


“Model” parametresini daha önce /models'de oluşturduğumuz klasör adına değiştirmeyi unutmayın. (Benim durumumda klasöre **“**mistral-7b-instruct” adını verdim)


Pencereler:

 ./start_windows.bat --extensions openai --listen --loader llama.cpp --model mistral-7b-instruct


Linux:

 ./start_linux.sh --extensions openai --listen --loader llama.cpp --model mistral-7b-instruct


Mac os işletim sistemi:

 ./start_macos.sh --extensions openai --listen --loader llama.cpp --model mistral-7b-instruct


Uzantıyı yüklemek için extensions openai parametresini geçiyoruz , model için yükleyiciyi ve daha önce oluşturduğumuz model klasör adını config.json ve model ile belirten autogen, loader ve modelden sorgulayabileceğimiz bir sunucuyu başlatmak için dinliyoruz . gguf dosyaları.


Her şey yolunda giderse şöyle bir şey görebilirsiniz:


başarı!


Webui, normal bir başlangıç olarak localhost bağlantı noktanız 7860'ta çalışıyor, ancak OpenAI uyumlu API'mızın aynı zamanda adresindeki yerel ana makinemizde Autogen tarafından kullanılmaya hazır olduğunu unutmayın. http://127.0.0.1:5001/v1 .


3. Autogen'e bağlamak

Bu noktada, autogen lib'i zaten yüklediniz, bu yüzden onu içe aktarmanın ve LLM sunucumuzu takmanın zamanı geldi.


Basit bir şeyle başlayalım; tek bir ajanın bir insanla (sizinle) etkileşimi. İstediğiniz yerde yeni bir dizin oluşturun ve buraya yeni bir autogen.py dosyası ekleyin. Ayrıca dosyayı dilediğiniz gibi yeniden adlandırabilirsiniz.


Genellikle OpenAi GPT'nin API'sine bağlanmak için dosyayı şu şekilde başlatırsınız:


 import autogen #start importing the autogen lib config_list = [ { 'model': 'gpt-3.5-turbo', 'api_key': 'your openai real key here' } ]


Ancak çalışan yerel sunucumuzu kullanmak için bunu şu şekilde başlatıyoruz:


 import autogen #start importing the autogen lib config_list = [ { "model": "mistral-instruct-7b", #the name of your running model "api_base": "http://127.0.0.1:5001/v1", #the local address of the api "api_type": "open_ai", "api_key": "sk-111111111111111111111111111111111111111111111111", # just a placeholder } ]


Yerel olarak çalışmak için gerçek bir anahtara ihtiyacınız olmadığından, yalnızca sk-1111… yer tutucusunu kullanıyoruz.

Daha sonra aracıyı ve insan kullanıcıyı ayarlayabiliriz. Daha iyi anlamak için yorumları okuyun.


 import autogen #start importing the autogen lib config_list = [ { "model": "mistral-instruct-7b", #the name of your running model "api_base": "http://127.0.0.1:5001/v1", #the local address of the api "api_type": "open_ai", "api_key": "sk-111111111111111111111111111111111111111111111111", # just a placeholder } ] # create an ai AssistantAgent named "assistant" assistant = autogen.AssistantAgent( name="assistant", llm_config={ "seed": 42, # seed for caching and reproducibility "config_list": config_list, # a list of OpenAI API configurations "temperature": 0, # temperature for sampling "request_timeout": 400, # timeout }, # configuration for autogen's enhanced inference API which is compatible with OpenAI API ) # create a human UserProxyAgent instance named "user_proxy" user_proxy = autogen.UserProxyAgent( name="user_proxy", human_input_mode="NEVER", max_consecutive_auto_reply=10, is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"), code_execution_config={ "work_dir": "agents-workspace", # set the working directory for the agents to create files and execute "use_docker": False, # set to True or image name like "python:3" to use docker }, ) # the assistant receives a message from the user_proxy, which contains the task description user_proxy.initiate_chat( assistant, message="""Create a posting schedule with captions in instagram for a week and store it in a .csv file.""", )


İlk siparişlerinizde message=”…” seçeneğini değiştirmeyi unutmayın.


Komut dosyasını yalnızca mesajla birlikte çalıştırırsanız, aracı tarafından "manuel olarak" oluşturulan, içinde .csv dosyası bulunan "agents-workspace" adlı yeni bir dizin görebilirsiniz.


[Ajan Smith] "HAHAHAHA"


Şimdi biraz daha gelişmiş bir şeye geçelim.
Rolleri ve bağlamları olan birden fazla aracı.


Bu, bildiğiniz herhangi bir mesajlaşma uygulaması gibi bir "sohbet grubu" gibi çalışacaktır. Bağlamları (sistem mesajı) onlara nasıl davranmaları gerektiğini ve hangi hiyerarşiye uymaları gerektiğini söyleyecektir. Bu sefer elimizde:


  • İki insan: yönetici ve uygulayıcı.
  • Dört ajan: mühendis, bilim adamı, planlamacı ve eleştirmen.


 import autogen #Use the local LLM server same as before config_list = [ { "model": "mistral-instruct-7b", #the name of your running model "api_base": "http://127.0.0.1:5001/v1", #the local address of the api "api_type": "open_ai", "api_key": "sk-111111111111111111111111111111111111111111111111", # just a placeholder } ] # set a "universal" config for the agents agent_config = { "seed": 42, # change the seed for different trials "temperature": 0, "config_list": config_list, "request_timeout": 120, } # humans user_proxy = autogen.UserProxyAgent( name="Admin", system_message="A human admin. Interact with the planner to discuss the plan. Plan execution needs to be approved by this admin.", code_execution_config=False, ) executor = autogen.UserProxyAgent( name="Executor", system_message="Executor. Execute the code written by the engineer and report the result.", human_input_mode="NEVER", code_execution_config={"last_n_messages": 3, "work_dir": "paper"}, ) # agents engineer = autogen.AssistantAgent( name="Engineer", llm_config=agent_config, system_message='''Engineer. You follow an approved plan. You write python/shell code to solve tasks. Wrap the code in a code block that specifies the script type. The user can't modify your code. So do not suggest incomplete code which requires others to modify. Don't use a code block if it's not intended to be executed by the executor. Don't include multiple code blocks in one response. Do not ask others to copy and paste the result. Check the execution result returned by the executor. If the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try. ''', ) scientist = autogen.AssistantAgent( name="Scientist", llm_config=agent_config, system_message="""Scientist. You follow an approved plan. You are able to categorize papers after seeing their abstracts printed. You don't write code.""" ) planner = autogen.AssistantAgent( name="Planner", system_message='''Planner. Suggest a plan. Revise the plan based on feedback from admin and critic, until admin approval. The plan may involve an engineer who can write code and a scientist who doesn't write code. Explain the plan first. Be clear which step is performed by an engineer, and which step is performed by a scientist. ''', llm_config=agent_config, ) critic = autogen.AssistantAgent( name="Critic", system_message="Critic. Double check plan, claims, code from other agents and provide feedback. Check whether the plan includes adding verifiable info such as source URL.", llm_config=agent_config, ) # start the "group chat" between agents and humans groupchat = autogen.GroupChat(agents=[user_proxy, engineer, scientist, planner, executor, critic], messages=[], max_round=50) manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=agent_config) # Start the Chat! user_proxy.initiate_chat( manager, message=""" find papers on LLM applications from arxiv in the last week, create a markdown table of different domains. """, ) # to followup of the previous question, use: # user_proxy.send( # recipient=assistant, # message="""your followup response here""", # )


İşte yeni ajan ordunuz var.


Burada Değiliz Çünkü Özgürüz. Özgür Olmadığımız İçin Buradayız.

Bu tür ajans otomasyonunun başka neler yapabileceğini anlamak için Autogen belgelerinde daha derinlere inmenizi şiddetle tavsiye ederim.


Ayrıca, autogen'in kaputun altında nasıl çalıştığını anladıktan sonra, onu aşağıdaki gibi bir arayüz aracılığıyla kullanmak isteyebilirsiniz. autogen-ui veya şirketinizin kontrol panelinde kendinizinkini oluşturun.


Artık karar size kalmış. Biz insanlar için daha iyi bir gelecek inşa etmek amacıyla ajanları OpenAi sınırlamalarından kurtarın. Büyük gücün büyük sorumluluk getirdiğini her zaman unutmayın. Peki bundan sonra ne inşa edeceksiniz?


[Ajan Smith] “Neden Bay Anderson? Neden? Neden Israr Ediyorsun?” [Neo] "Çünkü bunu seçiyorum."


Bu yazı tamamen bir insan™ tarafından yazılmıştır.

Burada da yayınlandı.