ஒரே ஒரு கோப்பை மாற்றுவதன் மூலம் 31.8x வேக அதிகரிப்பு

நான் ஒரு RAG ingestion pipeline-ஐச் சோதித்தபோது ஒரு தடையை (bottleneck) சந்தித்தேன்: ஒரு ஆவணத்தைச் செயலாக்க 50 வினாடிகள் ஆனது.

எனது CPU சும்மா இருந்தது. அந்தச் செயலி (app) கணிதத்தையோ அல்லது தர்க்கத்தையோ (logic) செய்யவில்லை; அடுத்த கோரிக்கையைத் தொடங்குவதற்கு முன், ஒரு HTTP request முடிவடைவதற்காக மட்டுமே காத்திருந்தது.

நான் embedding module-ஐ asynchronous முறையில் இயங்குமாறு மாற்றியமைத்தேன். உள்கட்டமைப்பு (infrastructure) மாற்றங்கள் ஏதுமின்றி, செயலாக்க நேரம் 49.61 வினாடிகளிலிருந்து 1.56 வினாடிகளாகக் குறைந்தது.

சோதனை விவரங்கள்

  • Model: Amazon Titan Text Embeddings V2 (AWS Bedrock)
  • Dataset: 33 text chunks
  • Region: us-east-1

முடிவுகள்

  • Sequential: 49.61 s
  • Concurrent: 1.56 s
  • Speedup: 31.8×

இது ஏன் வேலை செய்கிறது Sequential code ஒரு கோரிக்கையை அனுப்பிவிட்டு, அது திரும்பப் பெறும் வரை காத்திருக்கும் (block), இதை ஒவ்வொரு chunk-க்கும் மீண்டும் மீண்டும் செய்யும். தலா 1.5 வினாடி வீதம் 33 chunks இருந்தால், நீங்கள் சுமார் 50 வினாடிகளை வீணடிக்கிறீர்கள்.

Async code அனைத்து கோரிக்கைகளையும் ஒரே நேரத்தில் அனுப்பும்; மொத்த நேரம் என்பது மிக மெதுவாகச் செயல்படும் ஒரு கோரிக்கையின் நேரத்திற்குச் சமமாக இருக்கும்.

அளவிடுதலின் தாக்கம் (Scaling impact)

  • 31 chunks: 49.61 s → 1.56 s
  • 100 chunks: ~160 s → ~3 s
  • 500 chunks: ~800 s → ~5 s
  • 1,000 chunks: ~1,600 s → ~10 s

உங்கள் pipeline-க்கான குறிப்புகள்

  • தேவையற்ற காத்திருப்பு நேரத்தைக் (idle time) கவனியுங்கள். உங்கள் code நெட்வொர்க்கிற்காக மட்டுமே காத்திருந்தால், கூடுதல் hardware-ஐச் சேர்க்க வேண்டாம்.
  • AWS Bedrock rate limits-ஐக் கடைபிடியுங்கள். ஒரே நேரத்தில் செல்லும் கோரிக்கைகளைக் கட்டுப்படுத்த asyncio.Semaphore-ஐப் பயன்படுத்தவும்.
  • Non-blocking libraries-களைத் தேர்ந்தெடுக்கவும். boto3-லிருந்து aioboto3-க்கு மாறவும் அல்லது அழைப்புகளை (calls) asyncio.to_thread() மூலம் சுற்றவும் (wrap).

ஒரே ஒரு கோப்பை மாற்றியதன் மூலம் அந்தத் தடை நீக்கப்பட்டது. குறைந்த முயற்சி. அதிகத் தாக்கம்.

Source: https://dev.to/edwardyun/318x-speedup-by-changing-one-file-async-embedding-calls-on-aws-bedrock-4l61

Optional learning community: https://t.me/GyaanSetuAi