تتطلب عبارة «عدد الرموز في الثانية» عناية خاصة. فهي تسمّي وحدة، وليست مقياسًا كاملًا. ما زلت بحاجة إلى معرفة الرموز التي جرى عدّها والفترة الزمنية المستخدمة.

ما الذي يقيسه كل مقياس؟

زمن استجابة الاستدلال

زمن استجابة الاستدلال هو الزمن المنقضي لطلب ما. وبالنسبة إلى استجابة مولَّدة، يمتد «زمن الاستجابة من البداية إلى النهاية» عادةً من إرسال الطلب أو استلامه إلى استلام ناتجه النهائي.

ويجيب عن السؤال: كم من الوقت يلزم حتى يكتمل هذا الطلب؟

هذه الحدود ليست موحّدة. فقد يشمل القياس من جهة العميل التوجيه، ونقل البيانات عبر الشبكة، والانتظار في الطابور، ومعالجة الاستجابة. وقد يبدأ خادم الاستدلال ساعته بعد بعض هذه الخطوات. لذلك، فإن المعيار الذي يذكر «زمن الاستجابة» فقط لم يقدّم معلومات كافية لإعادة إنتاج الرقم.

يعتمد زمن الاستجابة أيضًا مباشرةً على طول الناتج. فقد يكون للاستجابة الموجزة والاستجابة الطويلة نفس TTFT ووتيرة التوليد، لكن الاستجابة الطويلة تستغرق وقتًا أطول حتى تكتمل.

زمن الوصول إلى الرمز الأول

زمن الوصول إلى الرمز الأول، أو TTFT، يمتد من حدّ الطلب إلى أول رمز ناتج غير فارغ في استجابة متدفقة.

ويجيب عن السؤال: كم من الوقت يلزم حتى تبدأ الإجابة في الظهور؟

يتضمن TTFT عادةً الانتظار في الطابور، ومعالجة الإدخال، وعمل التهيئة المسبقة للنموذج على الموجّه، وتوليد الرمز الأول، وأي زمن للشبكة يقع ضمن الحدود المختارة. وهو جزء من زمن الاستجابة من البداية إلى النهاية، وليس اسمًا بديلًا له.

يجعل TTFT المنخفض الواجهة تبدو سريعة الاستجابة. لكنه لا يقول شيئًا بمفرده عن مدى سلاسة وصول بقية الاستجابة أو عن وقت اكتمالها.

عدد الرموز في الثانية

عدد الرموز في الثانية هو عدد رموز الناتج مقسومًا على الثواني المنقضية. وفي مقارنات المنتجات، يعني غالبًا سرعة توليد طلب واحد بعد الرمز الأول.

ويجيب عن السؤال: ما سرعة وصول النص المولَّد بعد بدء التوليد؟

بالنسبة إلى استجابة تحتوي على (N) من رموز الناتج، توجد (N-1) فترة فاصلة بين الرمز الأول والأخير. وإذا استغرقت هذه الفترات (G) ثانية، فإن معدل ما بعد الرمز الأول هو:

[\n\\text{معدل التوليد لكل طلب} = \\frac{N-1}{G}\n]

وهذا هو مقلوب متوسط الزمن لكل فترة فاصلة بين رمزين ناتجين عندما يحتوي كل حدث مقاس على رمز واحد. وقد تقدّم واجهات البث الفعلية أجزاءً تحتوي على عدة رموز، لذلك يجب على العميل عدّ الرموز بدلًا من افتراض وجود رمز واحد في كل حدث.

تقسم بعض الأدوات بدلًا من ذلك جميع رموز الناتج على زمن الاستجابة الكامل من البداية إلى النهاية للطلب. وتجمع أدوات أخرى الرموز من كل طلب متزامن. وتنتج هذه الخيارات أرقامًا مختلفة، رغم أنه قد يُطلق على جميعها TPS أو tokens/s.

معدل معالجة الاستدلال

معدل معالجة الاستدلال هو إجمالي مقدار العمل الذي يُنجزه النظام لكل وحدة زمنية في ظل حمل محدد. ويمكن قياسه بعدد رموز الناتج في الثانية، أو إجمالي الرموز في الثانية، أو الطلبات في الثانية، أو العينات في الثانية، أو بوحدة أخرى ملائمة للحمل.

ويجيب عن السؤال: ما مقدار الحمل الذي يستطيع النظام تحمّله؟

معدل المعالجة خاصية إجمالية. وهو يحتاج إلى فترة اختبار ونمط حمل محددين. ويمكن للتزامن، ومعدل وصول الطلبات، وأطوال الموجّه والاستجابة، والتجميع، وعدد النسخ، وطريقة التعامل مع الطلبات الفاشلة أن تغيّره جميعًا.

لا يمكن استبدال معدل معالجة الطلبات بمعدل معالجة الرموز. فقد يُكمل خادم عددًا كبيرًا من الطلبات القصيرة أو عددًا أقل من الطلبات الطويلة، مع إنتاج العدد نفسه من رموز الناتج في الثانية.

التمييز الفعلي

MetricClock stops atTypical scopeTypical unitThe question it answers
LatencyFinal response outputOne requestms or s/requestWhen is this request finished?
TTFTFirst content tokenOne streamed requestms or s/requestWhen does the answer begin?
Tokens per secondDepends on the stated formulaOne request or the whole systemoutput tokens/sHow fast are tokens arriving, and for whom?
ThroughputEnd of a test intervalSystem or deploymenttokens/s, requests/s, or samples/sHow much work is completed under load?

ثلاثة أسئلة تزيل الغموض عن أي نتيجة مُبلّغ عنها تقريبًا:

  1. ما الذي يُعَدّ؟رموز الناتج، أو جميع الرموز، أو الطلبات المكتملة، أو العينات؟
  2. متى تبدأ الساعة ومتى تتوقف؟عند إرسال العميل، أو استلام الخادم، أو الرمز الأول، أو الرمز الأخير، أو حدود اختبار ثابتة؟
  3. ما النطاق؟طلب واحد، أو مستخدم واحد، أو نسخة واحدة، أو النشر الكامل تحت حمل متزامن؟

إذا لم يستطع معيار ما الإجابة عن الأسئلة الثلاثة كلها، فلا يكون رقمه جاهزًا للمقارنة.

مثال عملي

تخيّل طلبًا واحدًا يعيد 81 رمزًا من الناتج:

  • يُرسَل الطلب عند 0.0 ثانية.
  • يصل الرمز الأول عند 0.8 ثانية.
  • يصل الرمز الأخير عند 2.8 ثانية.

يبلغ TTFT للطلب 0.8 ثانية. ويبلغ زمن الاستجابة من البداية إلى النهاية 2.8 ثانية. ويمتد التوليد بعد الرمز الأول 2.0 ثانية، ويتضمن 80 فترة فاصلة بين الرموز، لذا يبلغ معدله بعد الرمز الأول 40 رمزًا في الثانية.

إذا عدّت أداة ما رموز الناتج الـ81 كلها وقسمتها على زمن الاستجابة الكامل البالغ 2.8 ثانية، فستبلغ عن نحو 29 رمزًا في الثانية. ليس ذلك اختلافًا رياضيًا، بل هو اختلاف في حدود الساعة والبسط.

والآن ضع طلبات كثيرة على خادم واحد. خلال نافذة اختبار مدتها 10 ثوانٍ، يولّد الخادم 3,000 رمز ناتج ويُكمل 50 طلبًا:

  • معدل معالجة رموز الناتج: (3{,}000 / 10 = 300) رمزًا في الثانية
  • معدل معالجة الطلبات: (50 / 10 = 5) طلبات في الثانية

إن 300 رمز في الثانية للخادم هو الناتج المجمّع عبر الطلبات النشطة. ومع ذلك، قد يتلقى مستخدم فردي الناتج بمعدل 40 رمزًا في الثانية، أو أقل إذا أدى الحمل الإضافي إلى زيادة الانتظار وتأخيرات فك الترميز.

متى يكون كل مقياس مهمًا؟

بالنسبة إلى واجهة محادثة، أو مساعد برمجة، أو تفاعل متدفق آخر، يصف TTFT فترة التوقف الأولية. ويصف معدل التوليد لكل طلب، أو مقلوب زمن كل رمز ناتج، الوتيرة بعد تلك الفترة. ويهم زمن الاستجابة من البداية إلى النهاية عندما يحتاج المستخدم أو برنامج آخر إلى الإجابة الكاملة قبل المتابعة.

بالنسبة إلى مهمة دفعية، يكون معدل المعالجة عادةً أهم من TTFT. فالمهمة تهتم بمعدل الإكمال الإجمالي، ما دامت حالات الفشل وجودة الناتج تظلان مقبولتين.

لتخطيط السعة، استخدم معدل المعالجة مع هدف لزمن الاستجابة. فكثيرًا ما يؤدي رفع التزامن إلى تحسين معدل المعالجة الإجمالي في البداية، لأن العتاد ينفذ مزيدًا من العمل بالتوازي. لكن التزامن نفسه قد يزيد الانتظار ويبطئ كل مستخدم. وبعد بلوغ التشبع، قد يستقر معدل المعالجة أو ينخفض، بينما يستمر زمن الاستجابة في الارتفاع.

في واجهة API غير متدفقة، قد لا يكون TTFT قابلًا للرصد لدى العميل، لأن الاستجابة لا تُسلَّم إلا عند اكتمالها. ويمكن للخادم مع ذلك قياس المراحل الداخلية، لكن الأداء المرئي للعميل هو زمن الاستجابة من البداية إلى النهاية.

ما الذي يخلطه الناس ولماذا؟

لا يضمن TTFT المنخفض زمن استجابة منخفضًا

قد تبدأ الاستجابة بسرعة ثم تتولد ببطء. يلتقط TTFT أول مرحلة فقط. أما زمن الاستجابة الكلي فيتضمن أيضًا زمن التوليد المتبقي.

وفق تعريف صريح لما بعد الرمز الأول، تكون العلاقة:

[\n\\text{زمن الاستجابة من البداية إلى النهاية} = \\text{TTFT} + (N-1)\\times\\text{متوسط الزمن لكل فترة فاصلة بين رمزين ناتجين}\n]

تستخدم التطبيقات اصطلاحات مختلفة للعدّ، لذا تحقّق من صيغة المعيار قبل إعادة بناء مقياس من مقياس آخر.

يمكن أن يكون عدد الرموز في الثانية معدلَ معالجة

تعني عبارة «عدد الرموز في الثانية» أحيانًا وتيرة توليد مستخدم واحد. وقد تكون أيضًا وحدة لمعدل معالجة رموز الناتج الإجمالي. ولا يستطيع الاسم وحده التمييز بين الحالتين.

ابحث عن محددات مثل لكل طلب، أو لكل مستخدم، أو لكل تدفق، أو إجمالي، أو النظام. وإذا لم يظهر أي منها، فتحقّق من الصيغة وإعداد الاختبار.

لا يضمن معدل المعالجة المرتفع سرعة الطلبات

يمكن للخادم تجميع طلبات كثيرة لإنتاج عدد أكبر من الرموز الإجمالية كل ثانية، بينما ينتظر كل طلب مدة أطول أو يتلقى الرموز بوتيرة أقل. ولهذا تُبلّغ اختبارات تقديم الخدمة الجادة عن معدل المعالجة إلى جانب النسب المئوية لزمن الاستجابة، أو تحسب معدل الإنجاز المفيد: أي العمل المُنجز مع تحقيق هدف خدمة محدد.

تنتج أحمال العمل المختلفة نتائج مختلفة

يتغير TTFT بتغير طول الموجّه والانتظار في الطابور. ويتغير زمن الاستجابة من البداية إلى النهاية بتغير طول الاستجابة. ويتغير معدل المعالجة بتغير التزامن ونمط الوصول والتجميع وتخصيص العتاد. كما تعتمد معدلات الرموز على أداة تقسيم الرموز المستخدمة لعدّ الناتج.

لا تقارن الأنظمة إلا مع توحيد سلوك النموذج، وتوزيعات الموجّه والناتج، ونمط الحمل، ووضع البث، وإعدادات أخذ العينات، وأداة تقسيم الرموز، وحدود القياس، ومعايير النجاح. فطلب واحد في وضع الخمول يختبر شيئًا مختلفًا عن خادم مشبع.

تخفي المتوسطات الطلبات التي يتذكرها المستخدمون

قد يبدو متوسط TTFT أو زمن الاستجابة جيدًا، بينما تنتظر نسبة صغيرة من الطلبات مدة أطول بكثير في الطابور. أبلغ عن التوزيع، بما في ذلك النسب المئوية المناسبة للذيل، واذكر عدد الملاحظات. وبالنسبة إلى معدل المعالجة، أبلغ عن الأخطاء والطلبات المرفوضة بدلًا من عدّ العمل الناجح فقط دون توضيح ذلك.

كيفية قراءة معيار للاستدلال

قبل الوثوق بمخطط أو ادعاء في بطاقة نموذج، تحقّق من أنه يوضح ما يلي:

  • ما إذا كان عدد الرموز في الثانية لكل طلب أم إجماليًا؛
  • ما إذا كان يحسب رموز الناتج فقط أم رموز الإدخال والناتج معًا؛
  • ما إذا كان TTFT أو الرمز الأول مشمولًا في حساب معدل الرموز؛
  • ما إذا كان زمن الاستجابة من جهة العميل أو الخادم أو النموذج فقط؛
  • توزيعات طول الموجّه وطول الناتج؛
  • التزامن ونمط وصول الطلبات؛
  • الإحماء، ومدة الاختبار، وطريقة التعامل مع حدود البداية والنهاية؛
  • متوسط زمن الاستجابة وزمن الذيل، لا متوسطًا واحدًا فقط؛
  • معايير الطلبات الناجحة والأخطاء؛
  • النموذج، والدقة، والعتاد، والمحرك، وعدد النسخ.

ليس أفضل مقياس واحدًا من هذه المقاييس الأربعة بمعزل عن غيره، بل المقياس الذي يطابق الهدف المرئي للمستخدم أو الهدف التشغيلي، ويُقاس تحت حمل واقعي مع توضيح كل الحدود.

ما الخطوة التالية؟

اقرأ ما هو زمن استجابة الاستدلال؟ لمعرفة حدود توقيت الطلب، وما هو زمن الوصول إلى الرمز الأول؟ لمعرفة التأخير الأولي في الاستجابة المتدفقة، وما عدد الرموز في الثانية؟ لمعرفة صيغ معدل الرموز، وما هو معدل معالجة الاستدلال؟ لمعرفة سعة النظام تحت الحمل.