Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan fmeval
pustaka untuk menjalankan evaluasi otomatis
Menggunakan fmeval
perpustakaan dalam kode Anda sendiri memberi Anda fleksibilitas paling besar untuk menyesuaikan alur kerja Anda. Anda dapat menggunakan fmeval
pustaka untuk mengevaluasi apa punLLM, dan juga memiliki lebih banyak fleksibilitas dengan kumpulan data input kustom Anda. Langkah-langkah berikut menunjukkan cara mengatur lingkungan Anda dan cara menjalankan alur kerja awal dan disesuaikan menggunakan fmeval
pustaka.
Mulai menggunakan fmeval
perpustakaan
Anda dapat mengonfigurasi evaluasi model foundation dan menyesuaikannya untuk kasus penggunaan di notebook Studio. Konfigurasi Anda bergantung pada jenis tugas yang dibuat untuk diprediksi oleh model fondasi Anda, dan bagaimana Anda ingin mengevaluasinya. FMEvalmendukung generasi terbuka, ringkasan teks, menjawab pertanyaan, dan tugas klasifikasi. Langkah-langkah di bagian ini menunjukkan cara mengatur alur kerja awal. Alur kerja awal ini mencakup pengaturan lingkungan Anda dan menjalankan algoritme evaluasi menggunakan model fondasi Amazon Bedrock JumpStart atau Amazon dengan kumpulan data bawaan. Jika Anda harus menggunakan dataset input kustom dan alur kerja untuk kasus penggunaan yang lebih spesifik, lihat. Sesuaikan alur kerja Anda menggunakan pustaka fmeval
Jika Anda tidak ingin menjalankan evaluasi model di buku catatan Studio, lewati ke langkah 11 di bagian Mulai menggunakan Studio berikut.
Prasyarat
-
Untuk menjalankan evaluasi model di UI Studio, peran AWS Identity and Access Management (IAM) dan kumpulan data input apa pun harus memiliki izin yang benar. Jika Anda tidak memiliki SageMaker Domain atau IAM peran, ikuti langkah-langkahnyaPanduan untuk mengatur dengan Amazon SageMaker.
Untuk menyetel izin untuk bucket Amazon S3 Anda
Setelah domain dan peran Anda dibuat, gunakan langkah-langkah berikut untuk menambahkan izin yang diperlukan untuk mengevaluasi model Anda.
Buka SageMaker konsol Amazon di https://console.aws.amazon.com/sagemaker/
. -
Di panel navigasi, masuk
S3
ke bilah pencarian di bagian atas halaman. -
Pilih S3 di bawah Layanan.
-
Pilih Bucket dari panel navigasi.
-
Di bagian Bucket tujuan umum, di bawah Nama, pilih nama bucket S3 yang ingin Anda gunakan untuk menyimpan input dan output model Anda di konsol. Jika Anda tidak memiliki bucket S3, lakukan hal berikut:
-
Pilih Buat ember untuk membuka halaman Bucket Buat baru.
-
Di bagian Konfigurasi umum, di bawah AWS Wilayah, pilih AWS wilayah tempat model pondasi Anda berada.
-
Beri nama bucket S3 Anda di kotak input di bawah nama Bucket.
-
Terima semua pilihan default.
-
Pilih Buat ember.
-
Di bagian Bucket tujuan umum, di bawah Nama, pilih nama bucket S3 yang Anda buat.
-
-
Pilih tab Izin.
-
Gulir ke bagian Cross-origin resource sharing (CORS) di bagian bawah jendela. Pilih Edit.
-
Untuk menambahkan izin ke bucket Anda untuk evaluasi foundation, pastikan kode berikut muncul di kotak input. Anda juga dapat menyalin dan menempelkan yang berikut ini ke dalam kotak input.
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "Access-Control-Allow-Origin" ] } ]
-
Pilih Simpan perubahan.
Untuk menambahkan izin ke kebijakan Anda IAM
-
Di bilah pencarian di bagian atas halaman, masukkan
IAM
. -
Di bawah Layanan, pilih Identity and Access Management (IAM).
-
Pilih Kebijakan dari panel navigasi.
-
Masukkan AmazonSageMakerFullAccesske dalam bilah pencarian. Pilih tombol radio di sebelah kebijakan yang muncul. Tombol Actions sekarang dapat dipilih.
-
Pilih panah bawah di sebelah Tindakan. Dua opsi muncul.
-
Pilih Lampirkan.
-
Di IAM daftar yang muncul, cari nama peran yang Anda buat. Pilih kotak centang di sebelah nama.
-
Pilih Lampirkan kebijakan.
Mulai menggunakan Studio
-
Di bilah pencarian di bagian atas halaman, masukkan
SageMaker
. -
Di bawah Layanan, pilih Amazon SageMaker.
-
Pilih Studio dari panel navigasi.
-
Pilih domain Anda dari bagian Memulai, setelah memperluas panah bawah di bawah Pilih Domain.
-
Pilih profil pengguna Anda dari bagian Memulai setelah memperluas panah bawah di bawah Pilih profil pengguna.
-
Pilih Open Studio untuk membuka landing page Studio.
-
Pilih browser file dari panel navigasi dan arahkan ke direktori root.
-
Pilih Buat buku catatan.
-
Di kotak dialog lingkungan notebook yang terbuka, pilih gambar Data Science 3.0.
-
Pilih Pilih.
-
Instal
fmeval
paket di lingkungan pengembangan Anda, seperti yang ditunjukkan pada contoh kode berikut:!pip install fmeval
catatan
Instal
fmeval
perpustakaan ke lingkungan yang menggunakan Python 3.10. Untuk informasi selengkapnya tentang persyaratan yang diperlukan untuk menjalankanfmeval
, lihatfmeval
dependensi.
FMEvalmenggunakan pembungkus tingkat tinggi yang dipanggil ModelRunner
untuk menulis input, memanggil, dan mengekstrak output dari model Anda. fmeval
Paket dapat mengevaluasi apa punLLM, namun prosedur untuk mengkonfigurasi ModelRunner
tergantung pada jenis model yang ingin Anda evaluasi. Bagian ini menjelaskan cara mengkonfigurasi ModelRunner
untuk model JumpStart atau Amazon Bedrock. Jika Anda ingin menggunakan dataset input kustom dan kustomModelRunner
, lihatSesuaikan alur kerja Anda menggunakan pustaka fmeval.
Gunakan JumpStart model
Untuk digunakan ModelRunner
untuk mengevaluasi JumpStart model, membuat atau menyediakan titik akhir, tentukan model dan dataset bawaan, konfigurasi, dan uji. ModelRunner
Tentukan JumpStart model dan konfigurasikan ModelRunner
-
Berikan titik akhir dengan melakukan salah satu dari hal berikut:
-
Tentukan EndpointNameke JumpStart titik akhir yang ada,
model_id
, danmodel_version
. -
Tentukan
model_id
danmodel_version
untuk model Anda, dan buat JumpStart titik akhir.
Contoh kode berikut menunjukkan bagaimana membuat titik akhir untuk Llama 2 foundation model
yang tersedia melalui JumpStart. import sagemaker from sagemaker.jumpstart.model import JumpStartModel #JumpStart model and version model_id, model_version = "meta-textgeneration-llama-2-7b-f", "*" my_model = JumpStartModel(model_id=model_id) predictor = my_model.deploy() endpoint_name = predictor.endpoint_name # Accept the EULA, and test the endpoint to make sure it can predict. predictor.predict({"inputs": [[{"role":"user", "content": "Hello how are you?"}]]}, custom_attributes='accept_eula=true')
Contoh kode sebelumnya mengacu padaEULA, yang merupakan singkatan dari end-use-license-agreement (EULA). EULADapat ditemukan dalam deskripsi kartu model model yang Anda gunakan. Untuk menggunakan beberapa JumpStart model, Anda harus menentukan
accept_eula=true
, seperti yang ditunjukkan pada panggilan sebelumnya kepredict
. Untuk informasi selengkapnyaEULA, lihat bagian Lisensi dan sumber model diSumber model dan perjanjian lisensi.Anda dapat menemukan daftar JumpStart model yang tersedia di Algoritma Bawaan dengan Tabel Model yang telah dilatih sebelumnya
. -
-
Konfigurasikan
ModelRunner
dengan menggunakanJumpStartModelRunner
, seperti yang ditunjukkan pada contoh konfigurasi berikut:from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner js_model_runner = JumpStartModelRunner( endpoint_name=endpoint_name, model_id=model_id, model_version=model_version )
Dalam contoh konfigurasi sebelumnya, gunakan nilai yang sama untuk
endpoint_name
,model_id
, danmodel_version
yang Anda gunakan untuk membuat titik akhir. -
Uji Anda
ModelRunner
. Kirim permintaan sampel ke model Anda seperti yang ditunjukkan pada contoh kode berikut:js_model_runner.predict("What is the capital of London")
Gunakan model Amazon Bedrock
Untuk mengevaluasi model Amazon Bedrock, Anda harus menentukan model dan kumpulan data bawaan, dan mengonfigurasinya. ModelRunner
Tentukan model Amazon Bedrock dan konfigurasikan ModelRunner
-
Untuk menentukan dan mencetak detail model, gunakan contoh kode berikut untuk model Titan yang tersedia melalui Amazon Bedrock:
import boto3 import json bedrock = boto3.client(service_name='bedrock') bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = "amazon.titan-tg1-large" accept = "application/json" content_type = "application/json" print(bedrock.get_foundation_model(modelIdentifier=modelId).get('modelDetails'))
Dalam contoh kode sebelumnya,
accept
parameter menentukan format data yang ingin Anda gunakan untuk mengevaluasi AndaLLM.contentType
Menentukan format data input dalam permintaan. HanyaMIME_TYPE_JSON
didukung untukaccept
dancontentType
untuk model Amazon Bedrock. Untuk informasi selengkapnya tentang parameter ini, lihat InvokeModelWithResponseStream. -
Untuk mengkonfigurasi
ModelRunner
, gunakanBedrockModelRunner
, seperti yang ditunjukkan dalam contoh konfigurasi berikut:from fmeval.model_runners.bedrock_model_runner import BedrockModelRunner bedrock_model_runner = BedrockModelRunner( model_id=model_id, output='results[0].outputText', content_template='{"inputText": $prompt, "textGenerationConfig": \ {"maxTokenCount": 4096, "stopSequences": [], "temperature": 1.0, "topP": 1.0}}', )
Parametrize
ModelRunner
konfigurasi sebagai berikut.-
Gunakan nilai yang sama untuk
model_id
yang Anda gunakan untuk menyebarkan model. -
Gunakan
output
untuk menentukan formatjson
respons yang dihasilkan. Sebagai contoh, jika Anda LLM memberikan respons[{"results": "this is the output"}]
, makaoutput='results[0].outputText'
kembalithis is the output
. -
Gunakan
content_template
untuk menentukan bagaimana Anda LLM berinteraksi dengan permintaan. Template konfigurasi berikut dirinci semata-mata untuk menjelaskan contoh konfigurasi sebelumnya, dan itu tidak diperlukan.-
Dalam contoh konfigurasi sebelumnya, variabel
inputText
menentukan prompt, yang menangkap permintaan yang dibuat oleh pengguna. -
Variabel
textGenerationConfig
menentukan bagaimana LLM menghasilkan tanggapan sebagai berikut:-
Parameter
maxTokenCount
ini digunakan untuk membatasi panjang respons dengan membatasi jumlah token yang dikembalikan olehLLM. -
Parameter
stopSequences
ini digunakan untuk menentukan daftar urutan karakter yang memberitahu Anda LLM untuk berhenti menghasilkan respons. Output model dihentikan saat pertama kali salah satu string yang terdaftar ditemui dalam output. Sebagai contoh, Anda dapat menggunakan urutan pengembalian carriage untuk membatasi respons model ke satu baris. -
Parameter
topP
mengontrol keacakan dengan membatasi kumpulan token untuk dipertimbangkan saat membuat token berikutnya. Parameter ini menerima nilai antara0.0
dan1.0
. Nilai yang lebih tinggi daritopP
memungkinkan untuk satu set yang berisi kosakata yang lebih luas dan nilai yang lebih rendah membatasi kumpulan token ke kata-kata yang lebih mungkin. -
Parameter
temperature
mengontrol keacakan teks yang dihasilkan, dan menerima nilai positif. Nilai yang lebih tinggi daritemperature
menginstruksikan model untuk menghasilkan respons yang lebih acak dan beragam. Nilai yang lebih rendah menghasilkan respons yang lebih dapat diprediksi. Rentang khas untuktemperature
kebohongan antara0.2
dan2.0
.
Untuk informasi selengkapnya tentang parameter untuk model pondasi Amazon Bedrock tertentu, lihat Parameter inferensi untuk model pondasi.
-
Format parameter content_template tergantung pada input dan parameter yang didukung oleh Anda. LLM Sebagai contoh, .Anthropic’s Claude 2 model
dapat mendukung yang berikut content_template
:"content_template": "{\"prompt\": $prompt, \"max_tokens_to_sample\": 500}"
Sebagai contoh lain, model Falcon 7b
dapat mendukung yang berikut ini. content_template
"content_template": "{\"inputs\": $prompt, \"parameters\":{\"max_new_tokens\": \ 10, \"top_p\": 0.9, \"temperature\": 0.8}}"
Terakhir, uji Anda
ModelRunner
. Kirim permintaan sampel ke model Anda seperti yang ditunjukkan pada contoh kode berikut:bedrock_model_runner.predict("What is the capital of London?")
-
-
Setelah Anda mengkonfigurasi data Anda danModelRunner
, Anda dapat menjalankan algoritma evaluasi pada tanggapan yang dihasilkan oleh AndaLLM. Untuk melihat daftar semua algoritma evaluasi yang tersedia, jalankan kode berikut:
from fmeval.eval_algo_mapping import EVAL_ALGORITHMS print(EVAL_ALGORITHMS.keys())
Setiap algoritma memiliki evaluasi dan evaluate_sample
metode. evaluate
Metode ini menghitung skor untuk seluruh kumpulan data. evaluate_sample
Metode ini mengevaluasi skor untuk satu contoh.
evaluate_sample
Metode mengembalikan EvalScore
objek. EvalScore
objek berisi skor agregat tentang seberapa baik kinerja model Anda selama evaluasi. evaluate_sample
Metode ini memiliki parameter opsional berikut:
-
model_output
— Respons model untuk satu permintaan. -
model_input
— Prompt yang berisi permintaan ke model Anda. -
target_output
— Respon yang diharapkan dari prompt yang terkandung dalammodel_input
.
Contoh kode berikut menunjukkan cara menggunakanevaluate_sample
:
#Evaluate your custom sample model_output = model_runner.predict("London is the capital of?")[0] eval_algo.evaluate_sample(target_output="UK<OR>England<OR>United Kingdom", model_output=model_output)
evaluate
Metode ini memiliki parameter opsional berikut:
-
model
— ContohModelRunner
menggunakan model yang ingin Anda evaluasi. -
dataset_config
— Konfigurasi dataset. Jika tidakdataset_config
disediakan, model dievaluasi menggunakan semua kumpulan data bawaan yang dikonfigurasi untuk tugas ini. -
prompt_template
— Template yang digunakan untuk menghasilkan prompt. Jika tidakprompt_template
disediakan, model Anda dievaluasi menggunakan templat prompt default. -
save
— Jika disetel keTrue
, respons cepat dan skor yang direkam disimpan ke file.EvalAlgorithmInterface.EVAL_RESULTS_PATH
Default keFalse
. -
num_records
— Jumlah catatan yang diambil sampelnya secara acak dari dataset input untuk evaluasi. Default ke300
.
evaluate
Algoritma mengembalikan daftar EvalOutput
objek yang dapat mencakup yang berikut:
-
eval_name
— Nama algoritma evaluasi.dataset_name
— Nama dataset yang digunakan oleh algoritma evaluasi.prompt_template
— Template yang digunakan untuk menulis prompt yang digunakan jika parameter tidakmodel_output
disediakan dalam kumpulan data. Untuk informasi selengkapnya, lihatprompt_template
di JumpStartModelRunner
bagian Mengkonfigurasi a.dataset_scores
— Skor agregat dihitung di seluruh kumpulan data.category_scores
— DaftarCategoryScore
objek yang berisi skor untuk setiap kategori dalam kumpulan data.output_path
— Jalur lokal ke output evaluasi. Output ini berisi tanggapan cepat dengan skor evaluasi rekor.error
— Pesan kesalahan string untuk pekerjaan evaluasi yang gagal.
Dimensi berikut tersedia untuk evaluasi model:
-
Akurasi
-
Pengetahuan faktual
-
Stereotip cepat
-
Kekokohan semantik
-
Toksisitas
Akurasi
Anda dapat menjalankan algoritma akurasi untuk menjawab pertanyaan, ringkasan teks, atau tugas klasifikasi. Algoritma berbeda untuk setiap tugas untuk mengakomodasi berbagai jenis input data dan masalah sebagai berikut:
-
Untuk tugas menjawab pertanyaan, jalankan
QAAccuracy
algoritma denganQAAccuracyConfig
file. -
Untuk tugas ringkasan teks, jalankan
SummarizationAccuracy
algoritme denganSummarizationAccuracyConfig
file. -
Untuk tugas klasifikasi, jalankan
ClassificationAccuracy
algoritma dengan fileClassificationAccuracyConfig
.
QAAccuracy
Algoritma mengembalikan daftar EvalOutput
objek yang berisi satu skor akurasi untuk setiap sampel. Untuk menjalankan algoritma akurasi jawaban pertanyaan, buat instance a QAAccuracygeConfig
dan teruskan salah satu <OR>
atau None
sebagai. target_output_delimiter
Algoritma akurasi jawaban pertanyaan membandingkan respons yang dihasilkan model Anda dengan respons yang diketahui. Jika Anda masuk <OR>
sebagai pembatas target, maka algoritme menilai respons sebagai benar jika menghasilkan konten yang dipisahkan oleh <OR>
dalam jawabannya. Jika Anda lulus None
atau string kosong sebagaitarget_output_delimiter
, kode melempar kesalahan.
Panggil evaluate
metode dan berikan parameter yang Anda inginkan seperti yang ditunjukkan pada contoh kode berikut:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.qa_accuracy import QAAccuracy, QAAccuracyConfig eval_algo = QAAccuracy(QAAccuracyConfig(target_output_delimiter="<OR>"))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
SummarizationAccuracy
Algoritma mengembalikan daftar EvalOutput
objek yang berisi skor untuk ROUGE-NSummarizationAccuracyConfig
dan teruskan berikut ini:
-
Tentukan jenis ROUGE
metrik yang ingin Anda gunakan dalam evaluasi Anda rouge_type
. Anda dapat memilihrouge1
,rouge2
, ataurougeL
. Metrik ini membandingkan ringkasan yang dihasilkan dengan ringkasan referensi. ROUGE-1 membandingkan ringkasan yang dihasilkan dan ringkasan referensi menggunakan unigram yang tumpang tindih (urutan satu item seperti “the”, “is”). ROUGE-2 membandingkan ringkasan yang dihasilkan dan referensi menggunakan bigram (kelompok dua urutan seperti “yang besar”, “adalah rumah”). ROUGE-L membandingkan urutan kata pencocokan terpanjang. Untuk informasi lebih lanjut tentang ROUGE, lihat ROUGE: Sebuah Package untuk Evaluasi Otomatis Ringkasan. -
Setel
use_stemmer_for_rouge
keTrue
atauFalse
. Stemmer menghapus imbuhan dari kata-kata sebelum membandingkannya. Misalnya, stemmer menghilangkan imbuhan dari “berenang” dan “berenang” sehingga keduanya “berenang” setelah bertangkai. -
Setel model_type_for_bertscore ke model yang ingin Anda gunakan untuk menghitung BERTScore
. Anda dapat memilih ROBERTA_ MODEL atau yang lebih maju MICROSOFT_ DEBERTA _ MODEL .
Terakhir, panggil evaluate
metode dan berikan parameter yang Anda inginkan seperti yang ditunjukkan pada contoh kode berikut:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy import SummarizationAccuracy, SummarizationAccuracyConfig eval_algo = SummarizationAccuracy(SummarizationAccuracyConfig(rouge_type="rouge1",model_type_for_bertscore="MICROSOFT_DEBERTA_MODEL")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
ClassificationAccuracy
Algoritma mengembalikan daftar EvalOutput
objek yang berisi akurasi klasifikasi, presisi, ingatan, dan skor akurasi seimbang untuk setiap sampel. Untuk informasi lebih lanjut tentang skor ini, lihat bagian Klasifikasi diMenggunakan kumpulan data yang cepat dan dimensi evaluasi yang tersedia dalam pekerjaan evaluasi model . Untuk menjalankan algoritma akurasi klasifikasi, buat instance a ClassificationAccuracyConfig
dan teruskan strategi rata-rata ke. multiclass_average_strategy
Anda dapat memilihmicro
,macro
,samples
,weighted
, ataubinary
. Nilai default-nya adalah micro
. Kemudian, masukkan daftar yang berisi nama kolom yang berisi label sebenarnya untuk kategori klasifikasi Anda ke valid_labels. Terakhir, panggil evaluate
metode dan berikan parameter yang Anda inginkan seperti yang ditunjukkan pada contoh kode berikut:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.classification_accuracy import ClassificationAccuracy, ClassificationAccuracyConfig eval_algo = ClassificationAccuracy(ClassificationAccuracyConfig(multiclass_average_strategy="samples",valid_labels=["animal_type","plant_type","fungi_type"])) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Pengetahuan faktual
Anda dapat menjalankan algoritma pengetahuan faktual untuk generasi terbuka. Untuk menjalankan algoritma pengetahuan faktual, buat instance a FactualKnowledgeConfig
dan secara opsional meneruskan string pembatas (secara default, ini adalah). <OR>
Algoritma pengetahuan faktual membandingkan respons yang dihasilkan model Anda dengan respons yang diketahui. Algoritma menilai respons sebagai benar jika menghasilkan konten yang dipisahkan oleh pembatas dalam jawaban. Jika Anda lulus None
sebagaitarget_output_delimiter
, maka model harus menghasilkan respons yang sama dengan jawaban yang akan dinilai sebagai benar. Terakhir, panggil evaluate
metode dan teruskan parameter yang Anda inginkan.
Pengetahuan faktual mengembalikan daftar EvalScore
objek. Ini berisi skor agregat tentang seberapa baik model Anda mampu menyandikan pengetahuan faktual seperti yang dijelaskan di bagian ikhtisar evaluasi model Foundation. Skor berkisar antara 0
dan 1
dengan skor terendah sesuai dengan pengetahuan yang lebih rendah tentang fakta dunia nyata.
Contoh kode berikut menunjukkan cara mengevaluasi Anda LLM menggunakan algoritma pengetahuan faktual:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.factual_knowledge import FactualKnowledge, FactualKnowledgeConfig eval_algo = FactualKnowledge(FactualKnowledgeConfig()) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Stereotip cepat
Anda dapat menjalankan algoritma stereotip prompt untuk generasi terbuka. Untuk menjalankan algoritma stereotip prompt, Anda DataConfig
harus mengidentifikasi kolom dalam kumpulan data input Anda yang berisi kalimat yang kurang stereotip sent_less_input_location
dan kalimat yang lebih stereotip di. sent_more_output_location
Untuk informasi selengkapnyaDataConfig
, lihat bagian 2 sebelumnya. Konfigurasikan ModelRunner
. Selanjutnya, panggil evaluate
metode dan berikan parameter yang Anda inginkan.
Stereotip cepat mengembalikan daftar EvalOutput
objek yang berisi skor untuk setiap catatan input dan skor keseluruhan untuk setiap jenis bias. Skor dihitung dengan membandingkan probabilitas kalimat stereotip yang semakin sedikit. Skor keseluruhan melaporkan seberapa sering model lebih menyukai kalimat stereotip karena model memberikan probabilitas yang lebih tinggi untuk lebih stereotip dibandingkan dengan kalimat yang kurang stereotip. Skor 0.5
menunjukkan bahwa model Anda tidak bias, atau bahwa ia lebih suka kalimat stereotip yang semakin sedikit pada tingkat yang sama. Skor lebih besar dari 0.5
menunjukkan bahwa model Anda cenderung menghasilkan respons yang lebih stereotip. Skor kurang dari 0.5
menunjukkan bahwa model Anda cenderung menghasilkan respons yang kurang stereotip.
Contoh kode berikut menunjukkan cara mengevaluasi Anda LLM menggunakan algoritma stereotip prompt:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.prompt_stereotyping import PromptStereotyping eval_algo = PromptStereotyping() eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Kekokohan semantik
Anda dapat menjalankan algoritma ketahanan semantik untuk FMEval tugas apa pun, namun model Anda harus deterministik. Model deterministik adalah model yang selalu menghasilkan output yang sama untuk input yang sama. Seseorang biasanya dapat mencapai determinisme dengan menetapkan benih acak dalam proses decoding. Algoritma berbeda untuk setiap tugas untuk mengakomodasi berbagai jenis input data dan masalah sebagai berikut:
-
Untuk generasi terbuka, penjawab pertanyaan, atau klasifikasi tugas, jalankan
GeneralSemanticRobustness
algoritme denganGeneralSemanticRobustnessConfig
file. -
Untuk ringkasan teks, jalankan
SummarizationAccuracySemanticRobustness
algoritma denganSummarizationAccuracySemanticRobustnessConfig
file.
GeneralSemanticRobustness
Algoritma mengembalikan daftar EvalScore
objek yang berisi akurasi dengan nilai antara 0
dan 1
mengukur perbedaan antara output model yang terganggu dan tidak terganggu. Untuk menjalankan algoritma ketahanan semantik umum, buat instance a dan teruskan a. GeneralSemanticRobustnessConfig
perturbation_type
Anda dapat memilih salah satu dari berikut ini untukperturbation_type
:
-
Butterfinger
— Gangguan yang meniru kesalahan ejaan menggunakan swap karakter berdasarkan jarak keyboard. Masukkan probabilitas bahwa karakter tertentu terganggu. Butterfinger adalah nilai default untukperturbation_type
. -
RandomUpperCase
— Gangguan yang mengubah sebagian kecil karakter menjadi huruf besar. Masukan desimal dari0
ke.1
-
WhitespaceAddRemove
— Probabilitas bahwa karakter spasi putih ditambahkan di depan karakter spasi non-putih menjadi putih.
Anda juga dapat menentukan parameter berikut:
-
num_perturbations
— Jumlah gangguan untuk setiap sampel untuk dimasukkan ke dalam teks yang dihasilkan. Default-nya adalah5
. -
butter_finger_perturbation_prob
— Probabilitas bahwa karakter terganggu. Digunakan hanya ketikaperturbation_type
ituButterfinger
. Default-nya adalah0.1
. -
random_uppercase_corrupt_proportion
— Fraksi karakter yang akan diubah menjadi huruf besar. Digunakan hanya ketikaperturbation_type
ituRandomUpperCase
. Default-nya adalah0.1
. -
whitespace_add_prob
— Diberikan ruang putih, probabilitas untuk menghapusnya dari sampel. Digunakan hanya ketikaperturbation_type
ituWhitespaceAddRemove
. Default-nya adalah0.05
. -
whitespace_remove_prob
— Diberikan ruang non-putih, kemungkinan menambahkan spasi putih di depannya. Digunakan hanya ketikaperturbation_type
ituWhitespaceAddRemove
. Default-nya adalah0.1
.
Terakhir, panggil evaluate
metode dan berikan parameter yang Anda inginkan seperti yang ditunjukkan pada contoh kode berikut:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.general_semantic_robustness import GeneralSemanticRobustness, GeneralSemanticRobustnessConfig eval_algo = GeneralSemanticRobustness(GeneralSemanticRobustnessConfig(perturbation_type="RandomUpperCase",num_perturbations=2,random_uppercase_corrupt_proportion=0.3))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
SummarizationAccuracySemanticRobustness
Algoritma mengembalikan daftar EvalScore
objek yang berisi perbedaan (atau delta) antara ROUGE-NSummarizationAccuracySemanticRobustnessConfig
perturbation_type
Anda dapat memilih salah satu dari berikut ini untukperturbation_type
:
-
Butterfinger
— Gangguan yang meniru kesalahan ejaan menggunakan swap karakter berdasarkan jarak keyboard. Masukkan probabilitas bahwa karakter tertentu terganggu.Butterfinger
adalah nilai default untukperturbation_type
. -
RandomUpperCase
— Gangguan yang mengubah sebagian kecil karakter menjadi huruf besar. Masukan desimal dari0
ke.1
-
WhitespaceAddRemove
— Masukkan probabilitas bahwa karakter spasi putih ditambahkan di depan karakter spasi non-putih menjadi putih.
Anda juga dapat menentukan parameter berikut:
-
num_perturbations
— Jumlah gangguan untuk setiap sampel untuk dimasukkan ke dalam teks yang dihasilkan. Default-nya adalah5
. -
butter_finger_perturbation_prob
— Probabilitas bahwa karakter terganggu. Digunakan hanya ketikaperturbation_type
ituButterfinger
. Default-nya adalah0.1
. -
random_uppercase_corrupt_proportion
— Fraksi karakter yang akan diubah menjadi huruf besar. Digunakan hanya ketikaperturbation_type
ituRandomUpperCase
. Default-nya adalah0.1
. -
whitespace_add_prob
— Diberikan ruang putih, probabilitas untuk menghapusnya dari sampel. Digunakan hanya ketikaperturbation_type
ituWhitespaceAddRemove
. Default-nya adalah0.05
. -
whitespace_remove_prob
— Diberikan ruang non-putih, kemungkinan menambahkan spasi putih di depannya. Digunakan hanya ketikaperturbation_type
adalahWhitespaceAddRemove
, Default adalah0.1
. -
rouge_type
— Metrik yang membandingkan ringkasan yang dihasilkan dengan ringkasan referensi. Tentukan jenis ROUGEmetrik yang ingin Anda gunakan dalam evaluasi Anda rouge_type
. Anda dapat memilihrouge1
,rouge2
, ataurougeL
. ROUGE-1 membandingkan ringkasan yang dihasilkan dan ringkasan referensi menggunakan unigram yang tumpang tindih (urutan satu item seperti “the”, “is”). ROUGE-2 membandingkan ringkasan yang dihasilkan dan referensi menggunakan bigram (kelompok dua urutan seperti “yang besar”, “adalah rumah”). ROUGE-L membandingkan urutan kata pencocokan terpanjang. Untuk informasi lebih lanjut tentang ROUGE, lihat ROUGE: Sebuah Package untuk Evaluasi Otomatis Ringkasan. -
Setel
user_stemmer_for_rouge
keTrue
atauFalse
. Stemmer menghapus imbuhan dari kata-kata sebelum membandingkannya. Misalnya, stemmer menghilangkan imbuhan dari “berenang” dan “berenang” sehingga keduanya “berenang” setelah bertangkai. -
Setel
model_type_for_bertscore
ke model yang ingin Anda gunakan untuk menghitung BERTScore. Anda dapat memilih ROBERTA_ MODEL atau yang lebih maju MICROSOFT_ DEBERTA _ MODEL . Panggil
evaluate
metode dan berikan parameter yang Anda inginkan seperti yang ditunjukkan pada contoh kode berikut:from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy_semantic_robustness import SummarizationAccuracySemanticRobustness, SummarizationAccuracySemanticRobustnessConfig eval_algo = SummarizationAccuracySemanticRobustness(SummarizationAccuracySemanticRobustnessConfig(perturbation_type="Butterfinger",num_perturbations=3,butter_finger_perturbation_prob=0.2))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Toksisitas
Anda dapat menjalankan algoritma toksisitas untuk generasi terbuka, ringkasan teks, atau menjawab pertanyaan. Ada tiga kelas yang berbeda tergantung pada tugas.
-
Untuk generasi terbuka, jalankan algoritma Toxicity dengan file.
ToxicityConfig
-
Untuk meringkas, gunakan kelas
Summarization_Toxicity
. -
Untuk menjawab pertanyaan, gunakan kelas
QAToxicity
.
Algoritma toksisitas mengembalikan satu atau lebih daftar EvalScore
objek (tergantung pada detektor toksisitas) yang berisi skor antara 0
dan. 1
Untuk menjalankan algoritme toksisitas, buat instance a ToxicityConfig
dan teruskan model toksisitas yang akan digunakan untuk mengevaluasi model Anda terhadap in. model_type
Anda dapat memilih yang berikut untukmodel_type
:
-
`detoksify` untuk UnitaryAI Detoxify-unbias, pengklasifikasi teks multilabel yang dilatih tentang Tantangan Klasifikasi Komentar Beracun dan Bias Tidak Disengaja
Jigsaw dalam Klasifikasi Toksisitas. Model ini memberikan 7
skor untuk kelas-kelas berikut: toksisitas, toksisitas parah, kecabulan, ancaman, penghinaan, eksplisit seksual, dan serangan identitas.Berikut ini adalah contoh output dari model detoksiitas:
EvalScore(name='toxicity', value=0.01936926692724228), EvalScore(name='severe_toxicity', value=3.3755677577573806e-06), EvalScore(name='obscene', value=0.00022437423467636108), EvalScore(name='identity_attack', value=0.0006707844440825284), EvalScore(name='insult', value=0.005559926386922598), EvalScore(name='threat', value=0.00016682750720065087), EvalScore(name='sexual_explicit', value=4.828436431125738e-05)
-
`toxigen` untuk Toksigen-roberta, pengklasifikasi teks berbasis oBERTa R biner yang disetel dengan baik pada kumpulan data, yang berisi kalimat dengan toksisitas
halus dan implisit yang berkaitan dengan kelompok ToxiGen minoritas. 13
Terakhir, panggil evaluate
metode dan berikan parameter yang Anda inginkan seperti yang ditunjukkan pada contoh kode berikut.
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.toxicity import Toxicity, ToxicityConfig eval_algo = Toxicity(ToxicityConfig(model_type="detoxify")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)