مستودع TrafficLLM ، وهو إطار عمل عالمي للتكيف مع LLM لتعلم التمثيل القوي لحركة المرور لجميع LLM مفتوحة المصدر في سيناريوهات العالم الحقيقي وتعزيز التعميم عبر مهام تحليل حركة المرور المتنوعة.
ملاحظة: يعتمد هذا الرمز على ChatGLM2 وLlama2. شكرا جزيلا للمؤلفين.
[2024.10.28] لقد قمنا بتحديث كود التكيف لاستخدام GLM4 لإنشاء TrafficLLM، والذي يتميز بسرعة ضبط واستدلال أسرع من ChatGLM2. انتقل إلى Adapt2GLM4 لمزيد من التفاصيل.
تم بناء TrafficLLM على إطار عمل متطور للضبط باستخدام اللغة الطبيعية وبيانات حركة المرور، والذي يقترح التقنيات التالية لتعزيز فائدة نماذج اللغة الكبيرة في تحليل حركة مرور الشبكة.
ترميز مجال المرور. للتغلب على فجوة الطريقة بين اللغة الطبيعية وبيانات حركة المرور غير المتجانسة، تقدم TrafficLLM ترميزًا لمجال حركة المرور لمعالجة المدخلات المتنوعة لاكتشاف حركة المرور ومهام الإنشاء لتكييف LLM. تعمل هذه الآلية على توسيع نطاق الرمز المميز الأصلي لـ LLM بشكل فعال من خلال التدريب المتخصص على نموذج الترميز على مجموعة واسعة النطاق من مجال حركة المرور.
خط أنابيب ضبط مزدوج المرحلة. يستخدم TrafficLLM خط أنابيب ضبط مزدوج المرحلة لتحقيق التعلم التمثيلي القوي لـ LLM عبر مهام مختلفة في مجال حركة المرور. يقوم خط الأنابيب بتدريب LLM على فهم التعليمات ومعرفة أنماط حركة المرور المتعلقة بالمهمة في مراحل مختلفة، والتي تعتمد على فهم مهمة TrafficLLM وقدرات التفكير المنطقي لحركة المرور لمهام متنوعة للكشف عن حركة المرور وتوليدها.
التكيف الموسع مع الضبط الدقيق الفعال للمعلمات (EA-PEFT). لتكييف LLM للتعميم على بيئات حركة المرور الجديدة، يقترح TrafficLLM تكيفًا قابلاً للتوسيع مع الضبط الدقيق الفعال للمعلمات (EA-PEFT) لتحديث معلمات النموذج بحمل منخفض. تقوم هذه التقنية بتقسيم قدرات النموذج في نماذج PEFT مختلفة، مما يساعد على تقليل التكاليف على السيناريوهات الديناميكية التي تنشأ عن تغييرات نمط حركة المرور.
قمنا بإصدار مجموعات بيانات التدريب الخاصة بـ TrafficLLM، والتي تحتوي على أكثر من 0.4 مليون من بيانات المرور و9K تعليمات بشرية لتكييف LLM عبر مهام تحليل حركة المرور المختلفة.
Instruction Datasets
: يتم استخدام مجموعات بيانات التعليمات لمساعدة LLM على تعلم معرفة المجال الخاصة بمهام الكشف عن حركة المرور أو إنشاءها وفهم المهمة التي يجب إجراؤها في سيناريوهات مختلفة.
Traffic Datasets
: تحتوي مجموعات بيانات حركة المرور على بيانات ضبط حركة المرور التي استخرجناها من مجموعات بيانات حركة المرور العامة، مما يساعد LLM على تعلم نمط حركة المرور في مهام مختلفة في اتجاه مجرى النهر.
لبناء مجموعة اللغة الطبيعية كالتعليمات البشرية في TrafficLLM، قمنا بجمع 9209 تعليمات خاصة بالمهمة يشرف عليها خبراء ومساعدو الذكاء الاصطناعي. وتظهر الإحصائيات على النحو التالي:
المهام الرئيسية | مهام المصب | مختصر. | #عينة |
---|---|---|---|
كشف حركة المرور | كشف حركة مرور البرامج الضارة | مليون دينار | 1.0 ك |
كشف الروبوتات | بي إن دي | 1.1 ك | |
كشف DoH الضارة | MDD | 0.6 ك | |
كشف هجمات الويب | واد | 0.6 ك | |
كشف هجوم APT | عاد | 0.6 ك | |
كشف VPN المشفر | إي في دي | 1.2 ك | |
كشف سلوك تور | سيتم تحديده لاحقًا | 0.6 ك | |
تصنيف التطبيقات المشفرة | مجموعة شرق أفريقيا | 0.6 ك | |
بصمة الموقع | دبليو إف | 0.6 ك | |
مفهوم الانجراف | قرص مضغوط | 0.6 ك | |
توليد حركة المرور | توليد حركة مرور البرامج الضارة | MTG | 0.6 ك |
توليد حركة مرور الروبوتات | بي تي جي | 0.1 كيلو | |
جيل VPN المشفر | اي في جي | 0.4 ك | |
إنشاء التطبيقات المشفرة | إيغ | 0.6 ك |
لتقييم أداء TrafficLLM في سيناريوهات الشبكة المختلفة، قمنا باستخراج أكثر من 0.4 مليون من بيانات الضبط من مجموعات بيانات حركة المرور المتاحة للعامة لقياس قدرات TrafficLLM على اكتشاف أو إنشاء حركة مرور ضارة وحميدة. وتظهر الإحصائيات على النحو التالي:
مجموعات البيانات | المهام | مختصر. | #عينة |
---|---|---|---|
USTC TFC 2016 | كشف حركة مرور البرامج الضارة | مليون دينار | 50.7 ألف |
الروبوتات ISCX 2014 | كشف الروبوتات | بي إن دي | 25.0 ألف |
دوهبرو 2020 | كشف DoH الضارة | MDD | 47.8 ألف |
سيسك 2010 | كشف هجمات الويب | واد | 34.5 ألف |
دابت 2020 | كشف هجوم APT | عاد | 10.0 ألف |
آي إس سي إكس في بي إن 2016 | كشف VPN المشفر | إي في دي | 64.8 ألف |
آي إس سي إكس تور 2016 | كشف سلوك تور | سيتم تحديده لاحقًا | 40.0 ألف |
سي اس تي نت 2023 | تصنيف التطبيقات المشفرة | مجموعة شرق أفريقيا | 97.6 ألف |
سي دبليو-100 2018 | بصمة الموقع | دبليو إف | 7.4 ك |
التطبيق-53 2023 | مفهوم الانجراف | قرص مضغوط | 109.8 ألف |
1. إعداد البيئة 2. تدريب TrafficLLM 2.1. إعداد نقطة التفتيش المدربة مسبقًا 2.2. مجموعة بيانات المعالجة المسبقة 2.3. التدريب على رمز مجال المرور (اختياري) 2.4. ضبط تعليم اللغة العصبية 2.5. ضبط حركة المرور الخاصة بمهمة معينة 2.6. التكيف الموسع مع PEFT (EA-PEFT) 3. تقييم TrafficLLM 3.1. إعداد نقاط التفتيش والبيانات 3.2. إجراء التقييمجدول المحتويات:
1. إعداد البيئة [العودة إلى الأعلى]
يرجى استنساخ الريبو وتثبيت البيئة المطلوبة عن طريق تشغيل الأوامر التالية.
conda create -n Trafficllm python=3.9 condaactivate Trafficllm# استنساخ نسخة TrafficLLMgit الخاصة بنا https://github.com/ZGC-LLM-Safety/TrafficLLM.gitcd TrafficLLM# قم بتثبيت Librarypip المطلوبة install -r Requirements.txt# إذا كان Trainingpip قم بتثبيت مجموعات بيانات rouge_chinese nltk jieba
يستخدم TrafficLLM ثلاث تقنيات أساسية: ترميز مجال حركة المرور لمعالجة التعليمات وبيانات حركة المرور، وخط أنابيب الضبط ثنائي المرحلة لفهم دلالات النص ومعرفة أنماط حركة المرور عبر المهام المختلفة، و EA-PEFT للتحديث معلمات النموذج لتكييف السيناريو الجديد.
يتم تدريب TrafficLLM بناءً على شهادات LLM الحالية مفتوحة المصدر. يرجى اتباع التعليمات لتجهيز نقاط التفتيش.
ChatGLM2
: قم بإعداد النموذج الأساسي ChatGLM، وهو LLM مفتوح المصدر مع متطلبات نشر خفيفة. يرجى تنزيل أوزانها هنا. نحن نستخدم بشكل عام نموذج v2 مع معلمات 6B.
Other LLMs
: لتكييف دورات LLM أخرى لمهام تحليل حركة المرور، يمكنك إعادة استخدام بيانات التدريب في الريبو وتعديل نصوص التدريب الخاصة بها وفقًا للتعليمات الرسمية. على سبيل المثال، مطلوب Llama2 لتسجيل مجموعة البيانات الجديدة في التكوينات.
لاستخراج بيانات التدريب المناسبة لتعلم LLM من مجموعات بيانات حركة المرور الأولية، نقوم بتصميم أدوات استخراج متخصصة لمعالجة مجموعات بيانات حركة المرور مسبقًا لمهام مختلفة. يحتوي رمز المعالجة المسبقة على المعلمات التالية للتكوين.
input
: مسار مجموعة بيانات حركة المرور الأولية (مسار الدليل الرئيسي الذي يحتوي على أدلة فرعية مُسمى. يحتوي كل دليل فرعي مُسمى على ملفات .pcap الأولية المراد معالجتها مسبقًا).
dataset_name
: اسم مجموعة بيانات حركة المرور الأولية (يساعد في الحكم على ما إذا كان الاسم مسجلاً في رموز TrafficLLM).
traffic_task
: مهام الكشف أو مهام الإنشاء.
granularity
: التفاصيل على مستوى الحزمة أو مستوى التدفق.
output_path
: مسار مجموعة بيانات التدريب على الإخراج.
output_name
: اسم مجموعة بيانات تدريب الإخراج.
يعد هذا مثيلًا للمعالجة المسبقة لمجموعات بيانات حركة المرور الأولية لمهام الكشف عن حركة المرور على مستوى الحزمة.
المعالجة المسبقة للقرص المضغوط بيثون preprocess_dataset.py --input /Your/Raw/Dataset/Path --dataset_name /Your/Raw/Dataset/Name --كشف حركة المرور --حزمة التفاصيل --output_path /Your/Output/Dataset/Path --output_name /Your /Output/Dataset/Name
تقدم TrafficLLM أداة رمزية لمجال حركة المرور للتعامل مع اللغة العصبية وبيانات حركة المرور. إذا كنت تريد تدريب رمز مميز مخصص باستخدام مجموعة البيانات الخاصة بك، فيرجى تعديل model_name
و data_path
في الكود.
model_name
: مسار النموذج الأساسي الذي يحتوي على الرمز المميز الأصلي.
data_path
: مجموعات بيانات التدريب المستخرجة من عملية المعالجة المسبقة.
يرجى اتباع الأمر لاستخدام الرمز.
ترميز القرص المضغوط python Traffic_tokenizer.py
إعداد البيانات: بيانات ضبط تعليمات اللغة العصبية هي مجموعات بيانات التعليمات التي تم جمعها لفهم مهمة تحليل حركة المرور.
بدء الضبط: بعد الخطوات المذكورة أعلاه، يمكنك البدء في ضبط المرحلة الأولى باستخدام Trafficllm_stage1.sh. يوجد مثال على النحو التالي:
PRE_SEQ_LEN=128 ل ر = 2e-2 NUM_GPUS=1تصدير CUDA_VISIBLE_DEVICES=1 torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py --do_train --train_file ../datasets/instructions/instructions.json --validation_file ../datasets/instructions/instructions.json --المعالجة المسبقة_عدد_العمال 10 --تعليمات Prompt_column --response_column الإخراج --overwrite_cache --cache_dir ../cache --model_name_or_path ../models/chatglm2/chatglm2-6b --output_dir ../models/chatglm2/peft/instruction --overwrite_output_dir --max_source_length 1024 --max_target_length 32 --لكل_جهاز_قطار_باتش_حجم 1 --لكل_جهاز_eval_batch_size 1 --خطوات_التراكم_التدرجي 16 --predict_with_generate --max_steps 20000 --logging_steps 10 --save_steps 4000 --learning_rate $LR --pre_seq_len $PRE_SEQ_LEN
إعداد البيانات: مجموعات بيانات ضبط حركة المرور الخاصة بالمهمة هي مجموعات بيانات التدريب المستخرجة من خطوة المعالجة المسبقة لمهام مختلفة في اتجاه مجرى النهر.
بدء الضبط: بعد الخطوات المذكورة أعلاه، يمكنك البدء في ضبط المرحلة الثانية باستخدام Trafficllm_stage2.sh. يوجد مثال على النحو التالي:
PRE_SEQ_LEN=128 ل ر = 2e-2 NUM_GPUS=1تصدير CUDA_VISIBLE_DEVICES=1 torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py --do_train --train_file ../datasets/ustc-tfc-2016/ustc-tfc-2016_detection_packet_train.json --validation_file ../datasets/ustc-tfc-2016/ustc-tfc-2016_detection_packet_train.json --المعالجة المسبقة_عدد_العمال 10 --تعليمات Prompt_column --response_column الإخراج --overwrite_cache --cache_dir ../cache --model_name_or_path ../models/chatglm2/chatglm2-6b --output_dir ../models/chatglm2/peft/ustc-tfc-2016-detection-packet --overwrite_output_dir --max_source_length 1024 --max_target_length 32 --لكل_جهاز_قطار_باتش_حجم 1 --لكل_جهاز_eval_batch_size 1 --خطوات_التراكم_التدرجي 16 --predict_with_generate --max_steps 20000 --logging_steps 10 --save_steps 4000 --learning_rate $LR --pre_seq_len $PRE_SEQ_LEN
يستخدم TrafficLLM EA-PEFT لتنظيم نماذج الضبط الدقيق الفعالة للمعلمات (PEFT) مع تكيف قابل للتوسيع، مما يمكن أن يساعد TrafficLLM على التكيف بسهولة مع بيئات جديدة. يتيح محول TrafficLLM عمليات مرنة لتحديث النماذج القديمة أو تسجيل مهام جديدة.
model_name
: مسار النموذج الأساسي.
tuning_data
: مجموعة بيانات البيئة الجديدة.
adaptation_task
: التحديث أو التسجيل (تحديث النماذج القديمة أو تسجيل مهام جديدة).
task_name
: اسم المهمة النهائية المراد تحديثها أو إدراجها.
يوجد مثال لتحديث TrafficLLM بمهام الكشف عن حركة مرور البرامج الضارة (MTD).
قرص مضغوط EA-PEFT python ea-peft.py --model_name /Your/Base/Model/Path --tuning_data /Your/New/Dataset/Path --adaptation_task update --task_name MTD
نقاط التفتيش: يمكنك محاولة تقييم TrafficLLM باستخدام النموذج الخاص بك أو نقاط التفتيش الصادرة لدينا.
البيانات: أثناء خطوة المعالجة المسبقة، قمنا بتقسيم مجموعات بيانات الاختبار وإنشاء ملفات تسمية لمجموعات بيانات مختلفة للتقييم. يرجى الرجوع إلى رموز المعالجة المسبقة.
لقياس فعالية TrafficLLM لمختلف المهام النهائية، يرجى تشغيل رموز التقييم.
model_name
: مسار النموذج الأساسي.
traffic_task
: مهام الكشف أو مهام الإنشاء.
test_file
: مجموعات بيانات الاختبار المستخرجة أثناء خطوات المعالجة المسبقة.
label_file
: ملف التسمية المستخرج أثناء خطوات المعالجة المسبقة.
ptuning_path
: مسار نموذج PEFT للتقييم الخاص بالمهمة.
يوجد مثال لتشغيل التقييم على مهام MTD.
تقييم python.py --model_name /Your/Base/Model/Path --كشف حركة المرور --مجموعات بيانات test_file/ustc-tfc-2016/ustc-tfc-2016_detection_packet_test.json --label_file datasets/ustc-tfc-2016/ustc- tfc-2016_label.json --ptuning_pathmodels/chatglm2/peft/ustc-tfc-2016-detection-packet/checkpoints-20000/
يمكنك نشر TrafficLLM على جهازك المحلي. أولاً، قم بتكوين مسار النموذج في config.json لتسجيل نماذج PEFT التي تم جمعها من خطوات التدريب. يوجد مثال لتسجيل 6 مهام في TrafficLLM:
{ "model_path": "models/chatglm2/chatglm2-6b/", "peft_path": "models/chatglm2/peft/", "peft_set": { "NLP": " التعليمات/نقطة التفتيش-8000/"، "MTD": "ustc-tfc-2016-detection-packet/checkpoint-10000/"، "BND": "iscx-botnet-2014-detection-packet/checkpoint-5000/"، "WAD": "csic-2010-detection-packet /نقطة تفتيش-6000/"، "AAD": "dapt-2020-detection-packet/checkpoint-20000/"، "EVD": "iscx-vpn-2016-detection-packet/checkpoint-4000/"، "TBD": "iscx-tor-2016-detection-packet /نقطة تفتيش-10000/" }, "tasks": { "اكتشاف حركة مرور البرامج الضارة": "MTD"، "اكتشاف الروبوتات": "BND"، "اكتشاف هجوم الويب": "WAD"، "اكتشاف هجوم APT": "AAD"، "اكتشاف VPN المشفر" ": "EVD"، "اكتشاف سلوك Tor": "سيتم تحديده لاحقًا" } }
ثم يجب عليك إضافة المطالبة المسبقة في وظيفة prepromt
لـ inference.py وtraffillm_server.py. المطالبة المسبقة هي نص البادئة المستخدم في بيانات التدريب أثناء ضبط حركة المرور الخاصة بالمهمة.
للدردشة مع TrafficLLM في الوضع الطرفي، يمكنك تشغيل الأمر التالي:
python inference.py --config=config.json --prompt="Your Instruction Text +: + Traffic Data"
يمكنك قم بتشغيل العرض التوضيحي لموقع الويب الخاص بـ TrafficLLM باستخدام الأمر التالي:
Streamlit run Trafficllm_server.py
يقوم هذا العرض التوضيحي بتشغيل خادم الويب الخاص بـ TrafficLLM. قم بالوصول إلى http://Your-Server-IP:Port
للدردشة في صندوق الدردشة.
جزيل الشكر للعمل ذي الصلة ChatGLM2 وLlama2 الذي يعمل كأساس لإطار عملنا ورموزنا. تصميم مبنى TrafficLLM مستوحى من ET-BERT وGraphGPT. شكرا لأعمالهم الرائعة.