uniflow
menyediakan antarmuka LLM terpadu untuk mengekstrak dan mengubah serta dokumen mentah.
Uniflow mengatasi dua tantangan utama dalam menyiapkan data pelatihan LLM untuk ilmuwan ML:
Oleh karena itu, kami membangun Uniflow, antarmuka LLM terpadu untuk mengekstraksi dan mengubah serta dokumen mentah.
Uniflow bertujuan untuk membantu setiap ilmuwan data menghasilkan kumpulan data pelatihan mereka sendiri yang dilindungi privasi dan siap digunakan untuk penyempurnaan LLM, dan karenanya menjadikan penyempurnaan LLM lebih mudah diakses oleh semua orang:rocket:.
Periksa solusi langsung Uniflow:
Menginstal uniflow
membutuhkan waktu sekitar 5-10 menit jika Anda mengikuti 3 langkah di bawah ini:
Buat lingkungan conda di terminal Anda menggunakan:
conda create -n uniflow python=3.10 -y
conda activate uniflow # some OS requires `source activate uniflow`
Instal pytorch yang kompatibel berdasarkan OS Anda.
nvcc -V
. pip3 install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu121 # cu121 means cuda 12.1
pip3 install torch
Instal uniflow
:
pip3 install uniflow
(Opsional) Jika Anda menjalankan salah satu alur OpenAI
berikut, Anda harus menyiapkan kunci API OpenAI Anda. Untuk melakukannya, buat file .env
di folder root uniflow Anda. Kemudian tambahkan baris berikut ke file .env
:
OPENAI_API_KEY=YOUR_API_KEY
(Opsional) Jika Anda menjalankan HuggingfaceModelFlow
, Anda juga perlu menginstal pustaka transformers
, accelerate
, bitsandbytes
, scipy
:
pip3 install transformers accelerate bitsandbytes scipy
(Opsional) Jika Anda menjalankan LMQGModelFlow
, Anda juga perlu menginstal pustaka lmqg
dan spacy
:
pip3 install lmqg spacy
Selamat Anda telah menyelesaikan instalasi!
Jika Anda tertarik untuk berkontribusi kepada kami, berikut adalah pengaturan pengembangan awal.
conda create -n uniflow python=3.10 -y
conda activate uniflow
cd uniflow
pip3 install poetry
poetry install --no-root
Jika Anda menggunakan EC2, Anda dapat meluncurkan instans GPU dengan konfigurasi berikut:
g4dn.xlarge
(jika Anda ingin menjalankan LLM terlatih dengan parameter 7B) Jika Anda menjalankan salah satu alur OpenAI
berikut, Anda harus menyiapkan kunci API OpenAI Anda.
Untuk melakukannya, buat file .env
di folder root uniflow Anda. Kemudian tambahkan baris berikut ke file .env
:
OPENAI_API_KEY=YOUR_API_KEY
Untuk menggunakan uniflow
, ikuti tiga langkah utama:
Pilih Config
Ini menentukan LLM dan berbagai parameter yang dapat dikonfigurasi.
Bangun Prompts
Anda
Bangun konteks yang ingin Anda gunakan untuk meminta model Anda. Anda dapat mengonfigurasi instruksi dan contoh khusus menggunakan kelas PromptTemplate
.
Jalankan Flow
Anda
Jalankan alur pada data masukan Anda dan hasilkan keluaran dari LLM Anda.
Catatan: Saat ini kami juga sedang membangun alur
Preprocessing
untuk membantu memproses data dari berbagai sumber, sepertihtml
,Markdown
, dan banyak lagi.
Config
menentukan LLM mana yang digunakan dan bagaimana data masukan diserialisasi dan dideserialisasi. Ia juga memiliki parameter yang khusus untuk LLM.
Berikut adalah tabel berbagai konfigurasi yang telah ditentukan sebelumnya yang dapat Anda gunakan dan LLM terkaitnya:
Konfigurasi | LLM |
---|---|
Konfigurasi | gpt-3.5-turbo-1106 |
BukaAIConfig | gpt-3.5-turbo-1106 |
Konfigurasi Wajah Memeluk | mistralai/Mistral-7B-Instruct-v0.1 |
Konfigurasi LMQG | lmqg/t5-base-squad-qg-ae |
Anda dapat menjalankan setiap konfigurasi dengan default, atau Anda dapat meneruskan parameter khusus, seperti temperature
atau batch_size
ke konfigurasi untuk kasus penggunaan Anda. Lihat bagian konfigurasi kustom lanjutan untuk detail selengkapnya.
Secara default, uniflow
diatur untuk menghasilkan pertanyaan dan jawaban berdasarkan Context
yang Anda berikan. Untuk melakukannya, uniflow memiliki instruksi default dan contoh singkat yang digunakan untuk memandu LLM.
Berikut adalah instruksi default:
Generate one question and its corresponding answer based on the last context in the last example. Follow the format of the examples below to include context, question, and answer in the response
Berikut adalah contoh beberapa gambar default:
context="The quick brown fox jumps over the lazy brown dog.",
question="What is the color of the fox?",
answer="brown."
context="The quick brown fox jumps over the lazy black dog.",
question="What is the color of the dog?",
answer="black."
Untuk menjalankan instruksi dan contoh default ini, yang perlu Anda lakukan hanyalah meneruskan daftar objek Context
ke alur. uniflow
kemudian akan menghasilkan prompt khusus dengan instruksi dan beberapa contoh contoh untuk setiap objek Context
untuk dikirim ke LLM. Lihat bagian Menjalankan alur untuk detail selengkapnya.
Kelas Context
digunakan untuk meneruskan konteks prompt LLM. Context
terdiri dari properti context
, yang merupakan string teks.
Untuk menjalankan uniflow
dengan instruksi default dan beberapa contoh contoh, Anda dapat meneruskan daftar objek Context
ke alur. Misalnya:
from uniflow.op.prompt import Context
data = [
Context(
context="The quick brown fox jumps over the lazy brown dog.",
),
...
]
client.run(data)
Untuk gambaran umum lebih rinci tentang menjalankan alur, lihat bagian Menjalankan alur.
Jika Anda ingin menjalankan dengan instruksi prompt khusus atau contoh beberapa contoh, Anda dapat menggunakan objek PromptTemplate
. Ini memiliki properti instruction
dan example
.
Milik | Jenis | Keterangan |
---|---|---|
instruction | str | Instruksi terperinci untuk LLM |
examples | Daftar[Konteks] | Contoh beberapa contoh. |
Anda dapat menimpa default mana pun sesuai kebutuhan.
Untuk melihat contoh cara menggunakan PromptTemplate
untuk menjalankan uniflow
dengan instruction
khusus, contoh beberapa contoh, dan bidang Context
khusus untuk menghasilkan ringkasan, lihat buku catatan openai_pdf_source_10k_summary
Setelah Anda memutuskan Config
dan strategi prompt, Anda dapat menjalankan alur pada data masukan.
Impor objek Client
, Config
, dan Context
uniflow
.
from uniflow.flow.client import TransformClient
from uniflow.flow.config import TransformOpenAIConfig, OpenAIModelConfig
from uniflow.op.prompt import Context
Proses awal data Anda menjadi beberapa bagian untuk diteruskan ke aliran. Di masa mendatang, kami akan memiliki alur Preprocessing
untuk membantu langkah ini, namun untuk saat ini Anda dapat menggunakan pustaka pilihan Anda, seperti pypdf, untuk mengelompokkan data Anda.
raw_input_context = ["It was a sunny day and the sky color is blue.", "My name is bobby and I am a talent software engineer working on AI/ML."]
Buat daftar objek Context
untuk meneruskan data Anda ke dalam alur.
data = [
Context(context=c)
for c in raw_input_context
]
[Opsional] Jika Anda ingin menggunakan instruksi dan/atau contoh yang disesuaikan, buatlah PromptTemplate
.
from uniflow.op.prompt import PromptTemplate
guided_prompt = PromptTemplate(
instruction="Generate a one sentence summary based on the last context below. Follow the format of the examples below to include context and summary in the response",
few_shot_prompt=[
Context(
context="When you're operating on the maker's schedule, meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in. Plus you have to remember to go to the meeting. That's no problem for someone on the manager's schedule. There's always something coming on the next hour; the only question is what. But when someone on the maker's schedule has a meeting, they have to think about it.",
summary="Meetings disrupt the productivity of those following a maker's schedule, dividing their time into impractical segments, while those on a manager's schedule are accustomed to a continuous flow of tasks.",
),
],
)
Buat objek Config
untuk diteruskan ke objek Client
.
config = TransformOpenAIConfig(
prompt_template=guided_prompt,
model_config=OpenAIModelConfig(
response_format={"type": "json_object"}
),
)
client = TransformClient(config)
Gunakan objek client
untuk menjalankan aliran pada data masukan.
output = client.run(data)
Memproses data keluaran. Secara default, keluaran LLM akan berupa daftar dict keluaran, satu untuk setiap Context
yang diteruskan ke aliran. Setiap dict memiliki properti response
yang memiliki respons LLM, serta kesalahan apa pun. Misalnya output[0]['output'][0]
akan terlihat seperti ini:
{
'response': [{'context': 'It was a sunny day and the sky color is blue.',
'question': 'What was the color of the sky?',
'answer': 'blue.'}],
'error': 'No errors.'
}
Untuk contoh lainnya, lihat folder contoh.
Anda juga dapat mengonfigurasi alur dengan meneruskan konfigurasi atau argumen khusus ke objek Config
jika Anda ingin menyesuaikan lebih lanjut parameter tertentu seperti model LLM, jumlah thread, suhu, dan lainnya.
Setiap konfigurasi memiliki parameter berikut:
Parameter | Jenis | Keterangan |
---|---|---|
prompt_template | PromptTemplate | Templat yang akan digunakan untuk prompt terpandu. |
num_threads | ke dalam | Jumlah thread yang akan digunakan untuk alur. |
model_config | ModelConfig | Konfigurasi yang akan diteruskan ke model. |
Anda dapat mengonfigurasi model_config
lebih lanjut dengan meneruskan salah satu Model Configs
dengan parameter khusus.
Model Config adalah konfigurasi yang diteruskan ke objek Config
dasar dan menentukan model LLM mana yang digunakan dan memiliki parameter yang spesifik untuk model LLM.
Konfigurasi dasar disebut ModelConfig
dan memiliki parameter berikut:
Parameter | Jenis | Bawaan | Keterangan |
---|---|---|---|
model_name | str | gpt-3.5-turbo-1106 | situs OpenAI |
OpenAIModelConfig
mewarisi dari ModelConfig
dan memiliki parameter tambahan berikut:
Parameter | Jenis | Bawaan | Keterangan |
---|---|---|---|
num_calls | ke dalam | 1 | Jumlah panggilan yang dilakukan ke OpenAI API. |
temperature | mengambang | 1.5 | Suhu yang digunakan untuk OpenAI API. |
response_format | Dikte[str, str] | {"ketik": "teks"} | Format respons yang digunakan untuk OpenAI API. Bisa berupa "teks" atau "json" |
HuggingfaceModelConfig
mewarisi dari ModelConfig
, tetapi mengganti parameter model_name
untuk menggunakan model mistralai/Mistral-7B-Instruct-v0.1
secara default.
Parameter | Jenis | Bawaan | Keterangan |
---|---|---|---|
model_name | str | mistralai/Mistral-7B-Instruksikan-v0.1 | Situs Memeluk Wajah |
batch_size | ke dalam | 1 | Ukuran batch yang akan digunakan untuk Hugging Face API. |
LMQGModelConfig
mewarisi dari ModelConfig
, tetapi mengganti parameter model_name
untuk menggunakan model lmqg/t5-base-squad-qg-ae
secara default.
Parameter | Jenis | Bawaan | Keterangan |
---|---|---|---|
model_name | str | lmqg/t5-base-squad-qg-ae | Situs Memeluk Wajah |
batch_size | ke dalam | 1 | Ukuran batch yang akan digunakan untuk LMQG API. |
Berikut adalah contoh cara meneruskan konfigurasi khusus ke objek Client
:
from uniflow.flow.client import TransformClient
from uniflow.flow.config import TransformOpenAIConfig, OpenAIModelConfig
from uniflow.op.prompt import Context
contexts = ["It was a sunny day and the sky color is blue.", "My name is bobby and I am a talent software engineer working on AI/ML."]
data = [
Context(
context=c
)
for c in contexts
]
config = OpenAIConfig(
num_threads=2,
model_config=OpenAIModelConfig(
model_name="gpt-4",
num_calls=2,
temperature=0.5,
),
)
client = TransformClient(config)
output = client.run(data)
Seperti yang Anda lihat, kami meneruskan parameter khusus ke OpenAIModelConfig
ke konfigurasi OpenAIConfig
sesuai dengan kebutuhan kami.