рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

Hugging Face рдХрд╛ Text Generation Inference рдЯреВрд▓рдХрд┐рдЯ LLMs рдХреЗ рд▓рд┐рдП тАФ AI рдореЗрдВ рдПрдХ рдЧреЗрдо рдЪреЗрдВрдЬрд░

рд╕реНрдерд╛рдиреАрдп рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ-рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Hugging Face Text Generation Inference рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХред
┬╖ 11 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

TGI architecture and consumption.

рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛

рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдХреЗ рддреАрд╡реНрд░рддрд╛ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓ рд╣рд╛рд▓рд┐рдпрд╛ рдкреНрд░рдЧрддрд┐рдпреЛрдВ рдХреЗ рдореБрдЦреНрдп рдирд╛рдпрдХ рдмрдирдХрд░ рдЙрднрд░реЗ рд╣реИрдВред

рдЯреЗрдХреНрд╕реНрдЯ рдЬрдирд░реЗрд╢рди рдПрдХ рдХреНрд░рд╛рдВрддрд┐рдХрд╛рд░реА рдХреНрд╖рдорддрд╛ рдмрди рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдорд╢реАрдиреЛрдВ рдХреЗ рдорд╛рдирд╡-рд╕рдорд╛рди рдкрд╛рда рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдпрд╣реА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ LLMs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЯреВрд▓ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ (LLMs) рдХрд╛ рддреЗрдЬрд╝ рдкреНрд░рд╕рд╛рд░, рдЬрд┐рдирдореЗрдВ рд▓рдЧрднрдЧ рд╣рд░ рд╕рдкреНрддрд╛рд╣ рдирдП рдореЙрдбрд▓ рд╕рд╛рдордиреЗ рдЖ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рддрдХрдиреАрдХ рдХреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рднреА рд╕рдорд╛рдирд╛рдВрддрд░ рд╡реГрджреНрдзрд┐ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реИред рдЙрдкрд▓рдмреНрдз рдЯреВрд▓реНрд╕ рдХреЗ рдЗрд╕ рд╡рд┐рд╢рд╛рд▓ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, Hugging Face рдХрд╛ Text Generation Inference (TGI) рдЦрд╛рд╕ рддреМрд░ рдкрд░ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ LLM рдЪрд▓рд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИред

рд╕рд░рд▓ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдпрд╣ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдВрдб-рдкреЙрдЗрдВрдЯ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред

рдпрд╣ рдЧрд╛рдЗрдб рдмрддрд╛рдПрдЧрд╛ рдХрд┐ Hugging Face TGI рдХреНрдпреЛрдВ рдЧреЗрдо-рдЪреЗрдВрдЬрд░ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдРрд╕реЗ рдЙрдиреНрдирдд AI рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдордиреБрд╖реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдкрд╛рда рд╕реЗ рд▓рдЧрднрдЧ рдЕрдкреНрд░рднреЗрджреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗрдВред

Hugging Face Text Generation Inference рдХреНрдпрд╛ рд╣реИ?

Hugging Face Text Generation Inference, рдЬрд┐рд╕реЗ TGI рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХреЛ рдбрд┐рдкреНрд▓реЙрдп рдФрд░ рд╕рд░реНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Rust рдФрд░ Python рдореЗрдВ рд▓рд┐рдЦрд╛ рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рдпрд╣ LLMs рдХреЛ рдбрд┐рдкреНрд▓реЙрдп рдФрд░ рд╕рд░реНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдбрдХреНрд╢рди-рд░реЗрдбреА рдЯреВрд▓рдХрд┐рдЯ рд╣реИред

Hugging Face рдЗрд╕реЗ HFOILv1.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдмрд╢рд░реНрддреЗ рдпрд╣ рдЙрддреНрдкрд╛рдж рдпрд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдореБрдЦреНрдп рдлреЛрдХрд╕ рди рд╣реЛрдХрд░ рд╕рд╣рд╛рдпрдХ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗред рдпрд╣ рдЬрд┐рди рдореБрдЦреНрдп рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡реЗ рд╣реИрдВ:

Main challenges TGI tries to address.

рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

  • рд╣рд╛рдИ-рдкрд░рдлрд╝реЙрд░реНрдореЗрдВрд╕ рдЯреЗрдХреНрд╕реНрдЯ рдЬрдирд░реЗрд╢рдиред TGI Tensor Parallelism (рдПрдХ рддрдХрдиреАрдХ рдЬрд┐рд╕рд╕реЗ рдмрдбрд╝реЗ рдореЙрдбрд▓ рдХреЛ рдХрдИ GPUs рдореЗрдВ рдлрд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рдмреИрдЪрд┐рдВрдЧ (рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдВрджрд░ рдСрди-рдж-рдлреНрд▓рд╛рдИ рдкреНрд░реЙрдореНрдкреНрдЯреНрд╕ рдХреЛ рд╕рд╛рде рдореЗрдВ рдмреИрдЪ рдХрд░рдирд╛) рдЬреИрд╕реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ StarCoder, BLOOM, GPT-NeoX, Llama рдФрд░ T5 рдЬреИрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдкрди-рд╕реЛрд░реНрд╕ LLMs рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  • рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧред рдХрдВрдЯреАрдиреНрдпреБрдЕрд╕ рдмреИрдЪрд┐рдВрдЧ, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реНрдб рдХреЛрдб, рдФрд░ Tensor Parallelism рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ TGI рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдЕрдиреБрд░реЛрдз рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИрдВ, рд╡рд╣ рднреА рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рдеред
  • рд▓рдЪреАрд▓рд╛рдкрдиред TGI рд╡реЙрдЯрд░рдорд╛рд░реНрдХрд┐рдВрдЧ, рд▓реЙрдЬрд┐рдЯ рд╡рд╛рд░реНрдкрд┐рдВрдЧ (рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЛрдХрдиреЛрдВ рдХреЗ logits рдореЗрдВ рдмрд╛рдпрд╕ рдорд╛рди рдбрд╛рд▓рдХрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛) рдХреЗ рдЬрд░рд┐рдП рдмрд╛рдпрд╕ рдирд┐рдпрдВрддреНрд░рдг, рдФрд░ рд╕реНрдЯреЙрдк рд╕реАрдХреНрд╡реЗрдВрд╕ рдЬреИрд╕реА рд╡рд┐рд╡рд┐рдз рд╕реБрд░рдХреНрд╖рд╛ рдПрд╡рдВ рд╕реЗрдлреНрдЯреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ LLM рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рд░рд╣реЗред

Hugging Face рдиреЗ рдХреБрдЫ LLMs рдХреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ TGI рдХреЗ рд╕рд╛рде рддреЗрдЬрд╝реА рд╕реЗ рдЪрд▓реЗрдВред рдЗрд╕рдореЗрдВ LLaMA, Falcon7B рдФрд░ Mistral рдЬреИрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЙрдбрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреВрд░реА рд╕реВрдЪреА рдЙрдирдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

Hugging Face TGI рдХреНрдпреЛрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ?

Hugging Face рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреНрд╖рдорддрд╛рдУрдВ рд╡рд╛рд▓реЗ AI рдмрдирд╛рдиреЗ рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рдХреЗрдВрджреНрд░ рдмрди рдЧрдпрд╛ рд╣реИред рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рдХреЗ рджрд┐рдЧреНрдЧрдЬ рдореЙрдбрд▓реЛрдВ рдХрд╛ рдШрд░ рд╣реИ, рдЬреЛ рдЗрд╕реЗ NLP рдирд╡рд╛рдЪрд╛рд░ рдХрд╛ рдкрд╛рд╡рд░рд╣рд╛рдЙрд╕ рдмрдирд╛рддрд╛ рд╣реИред рдЕрдм рддрдХ, рдЗрди рдореЙрдбрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрддрдиреЗ рднрд╛рд░реА рдереЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рд▓реЛрдХрд▓ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛; рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдмрдиреА рд░рд╣рддреА рдереАред

рд╣рд╛рд▓рд╛рдВрдХрд┐, QLoRa рдФрд░ GPTQ рдЬреИрд╕реА рдХреНрд╡рд╛рдВрдЯрд╛рдЗрдЬрд╝реЗрд╢рди рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╣рд╛рд▓рд┐рдпрд╛ рдкреНрд░рдЧрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреБрдЫ LLMs рдЕрдм рд╣рдорд╛рд░реЗ рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВтАФрдЬреИрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░тАФрдкрд░ рднреА рд╕рдВрднрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

Hugging Face TGI рдЦрд╛рд╕ рддреМрд░ рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрдиреЛрдВ рдкрд░ LLMs-рдПрдЬрд╝-рдП-рд╕рд░реНрд╡рд┐рд╕ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдореБрдЦреНрдп рдХрд╛рд░рдг LLM рдХреЛ рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдорд╢рдХреНрдХрдд рд╣реИред

рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рддреИрдпрд╛рд░ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рддрд╛рдХрд┐ рд╡рд╣ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд╕рдХреЗред рд╡рд░рдирд╛ рд╣рд░ рдмрд╛рд░ рдкреНрд░реЙрдореНрдкреНрдЯ рджреЗрдиреЗ рдкрд░ рд▓рдВрдмрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╕реЛрдЪрд┐рдП, рдЖрдкрдХреА рдкрд╣реБрдВрдЪ рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реЛ рдЬрд┐рд╕рдореЗрдВ рдмреЗрд╣рддрд░реАрди рднрд╛рд╖рд╛ рдореЙрдбрд▓реНрд╕ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛ, рдЬреЛ рдЖрдкрдХреА рдорд╛рдВрдЧ рдкрд░ рддреБрд░рдВрдд рд╢рдмреНрдж рдмреБрдирдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реЛрдВред

TGI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдмрд╛рдд рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд▓рдЧреА, рд╡рд╣ рд╣реИ рдЗрд╕рдХрд╛ рдмрд┐рдирд╛ рдЭрдВрдЭрдЯ рд╡рд╛рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЗрд╕ рд╕рдордп, TGI рдХрдИ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдореЙрдбрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрдиреНрд╣реЗрдВ рдлрдЯрд╛рдлрдЯ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдмрд╛рдд рдирд╣реАрдВ рд╣реИ; TGI рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд▓рд╛рдЗрд╡ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЗрдВрдЬрди рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:

Applications where Hugging Face TGI is already being used.

рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред Hugging Chat (рдмрд╛рдПрдБ) рдФрд░ OpenAssistant (рджрд╛рдПрдБ) рдХреЗ рд▓реЛрдЧреЛ

  • Hugging Chat, рдУрдкрди-рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред
  • OpenAssistant, LLMs рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдп рдкреНрд░рдпрд╛рд╕ред
  • nat.dev, LLMs рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЧреНрд░рд╛рдЙрдВрдбред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмрдбрд╝рд╛ рдЕрдбрд╝рдЪрди рд╣реИред TGI рдЕрднреА рддрдХ ARM-рдЖрдзрд╛рд░рд┐рдд GPU рд╡рд╛рд▓реЗ Macs, рдЬрд┐рд╕рдореЗрдВ M1 рд╕реАрд░реАрдЬрд╝ рдФрд░ рдмрд╛рдж рдХреЗ рдореЙрдбрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред

Hugging Face TGI рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдирд╛ Hugging Face TGI рдПрдВрдб-рдкреЙрдЗрдВрдЯ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

TGI architecture and consumption. TGI highlighted.

рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ Hugging Face TGI рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ Rust рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдХрдо рд╕реЗ рдХрдо Python 3.9 рдХреЗ рд╕рд╛рде рдПрдХ Python рд╡рд░реНрдЪреБрдЕрд▓ рдПрдиреНрд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП conda рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ:

#Installing Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh


#Creating a python virtual environment
conda create -n text-generation-inference python=3.9 
conda activate text-generation-inference

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Protoc рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП Hugging Face рд╕рдВрд╕реНрдХрд░рдг 21.12 рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ sudo рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

PROTOC_ZIP=protoc-21.12-linux-x86_64.zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm -f $PROTOC_ZIP

рдореИрдВ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╢реБрд░реВ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдКрдВрдЧрд╛, рдЬреЛ рдореБрдЭреЗ рд╕реАрдзрд╛ рд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЛ рджрд┐рдХреНрдХрдд рдЖрдП, рддреЛ рдЖрдк рдЗрд╕ рдкрд╣рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕реАрдзреЗ Docker рдЗрдореЗрдЬ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдзрд┐рдХ рд╕рд░рд▓ рд╣реИред рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╕рднреА рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо TGI рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рд╢реБрд░реБрдЖрдд GitHub рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдХрд░рдиреЗ рд╕реЗ рдХрд░реЗрдВ:

git clone https://github.com/huggingface/text-generation-inference.git

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдиреА рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ TGI рдХреЗ рд▓реЛрдХреЗрд╢рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдбреНрд╕ рд╕реЗ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:

cd text-generation-inference/
BUILD_EXTENSIONS=False make install

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Docker рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ Docker рдХреЗ TGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдореИрдВ Falcon-7B рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЬреЛ Apache 2.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЙрдкрд▓рдмреНрдз рд╣реИред

Docker рдХреЗ рдмрд┐рдирд╛ рдореЙрдбрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛

рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдиреЗ рдПрдХ рдирдпрд╛ рдХрдорд╛рдВрдб тАЬtext-generation-launcherтАЭ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ TGI рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред Falcon-7B рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдВрдб-рдкреЙрдЗрдВрдЯ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреА рд╣реИ:

text-generation-launcher --model-id tiiuae/falcon-7b-instruct --num-shard 1 --port 8080 --quantize bitsandbytes

рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЕрд░реНрде рд╣реИ:

  • model-id: Hugging Face Hub рдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдореЙрдбрд▓ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ Falcon-7B рдХрд╛ рдирд╛рдо tiiuae/falcon-7b-instruct рд╣реИред
  • num-shard: рдЗрд╕реЗ рдЙрди GPUs рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ 1 рд╣реЛрдЧрд╛ред
  • port: рд╡рд╣ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ 8080 рд╣реЛрдЧрд╛ред
  • quantize: рдЬрд┐рди GPUs рдХреА VRAM 24 GB рд╕реЗ рдХрдо рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдУрд╡рд░рд▓реЛрдб рд╕реЗ рдмрдЪрдиреЗ рд╣реЗрддреБ рдореЙрдбрд▓ рдХреНрд╡рд╛рдВрдЯрд╛рдЗрдЬрд╝реЗрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд┐рдЫрд▓реЗ рдХрдорд╛рдВрдб рдореЗрдВ, рдореИрдВрдиреЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдХреНрд╡рд╛рдВрдЯрд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП "bitsandbytes" рдЪреБрдирд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк GPTQ ("gptq") рднреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдХрдо рдкрд░рд┐рдЪрд┐рдд рд╣реВрдБред

Docker рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ (рдЕрдзрд┐рдХ рд╕рд░рд▓)

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ Docker рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИ рдФрд░ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ Docker рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдпрд╣ Docker for Data Science рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЧрд╛ред

рдпрд╛рдж рд░рдЦреЗрдВ, TGI MX-рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ Mac рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред рдЖрдк рд╕рднреА рдЙрдкрд▓рдмреНрдз TGI рдЗрдореЗрдЬреЗрдЬ рд╕рдВрдмрдВрдзрд┐рдд TGI рдкреИрдХреЗрдЬреЗрдЬ GitHub рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрдЧрдд рд╣реИ, рддреЛ Docker рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЗрдореЗрдЬ рдЦреЛрдЬ рд▓реЗрдЧрд╛ред

рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ text-generation-launcher рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ GPU рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ "all" рдХреА рдЬрдЧрд╣ "0" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

volume=$PWD/data
sudo docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:0.9 --model-id tiiuae/falcon-7b-instruct --num-shard 1  --quantize bitsandbytes

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЬрдм рддрдХ рдЖрдк рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрдм рддрдХ Docker рдЗрдореЗрдЬ рд╕рдХреНрд░рд┐рдп рдмрдиреА рд░рд╣реЗред

рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдореЗрдВ TGI рдХрд╛ рдЙрдкрднреЛрдЧ

Text Generation Inference (TGI) рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдкрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдпрд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдЖрдк /generate рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ POST рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рдирддреАрдЬреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

TGI architecture and consumption. Python script and application highlighted.

рдЪрд┐рддреНрд░: рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ред

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ TGI рд▓рдЧрд╛рддрд╛рд░ рдЯреЛрдХрди рд╕реНрдЯреНрд░реАрдо рдХрд░реЗ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рдпреЗ рдЕрдиреБрд░реЛрдз рдЖрдкрдХреА рдкрд╕рдВрдж рдХреЗ рдЯреВрд▓тАФрдЬреИрд╕реЗ curl, Python, рдпрд╛ TypeScriptтАФрд╕реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред TGI рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдореЙрдбрд▓ рдХреЛ Python рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди text-generation рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреА рд╣реЛрдЧреАред рдмрд╕ рдпрд╣ pip рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

pip install text-generation

TGI рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, InferenceClient() рдХреЛ рдЙрд╕ URL рд╕реЗ рдЗрдВрд╕реНрдЯреИрдВрд╢рд┐рдПрдЯ рдХрд░реЗрдВ рдЬреЛ рдореЙрдбрд▓ рд╕рд░реНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдк Python рдХреЗ рдЬрд░рд┐рдП рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП text_generation() рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

from text_generation import Client
client = Client("http://127.0.0.1:8080")
client.text_generation(prompt="Your prompt here!")

InferenceClient рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ stream=True рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЬреЗрдирд░реЗрдЯ рд╣реЛрддреЗ рд╣реА рдЖрдкрдХреЛ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдореЗрдВ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд▓рдЧреЗрдВрдЧреЗред рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

for token in client.text_generation("Your prompt here!", max_new_tokens=12, stream=True):
    print(token)

TGI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдХреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рдХрд░рдирд╛

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗтАФрд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Falcon-7Bред TGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рд▓рд╛рдЗрд╡ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ LLM рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, Python рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╕реАрдзреЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреЛ рдкреЛрд░реНрдЯ 8080 рдкрд░ рд╕реБрд▓рдн рд╣реИ, LLM рдХреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рд╕рдВрдмрдВрдзрд┐рдд Python рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦреЗрдЧреА:

from text_generation import Client
client = Client("http://127.0.0.1:8080")
print(client.generate("Translate the following sentence into spanish: 'What does Large Language Model mean?'", max_new_tokens=500).generated_text)

рдФрд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдПрдиреНрд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдореЙрдбрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдореЙрдбрд▓ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред Python рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдиреАрдЪреЗ рджрд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ CURL рд╕реЗ рднреА LLM рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

curl 127.0.0.1:8080/generate \
    -X POST \
    -d '{"inputs":"Code in Javascript a function to remove all spaces in a string and then print the string twice.","parameters":{"max_new_tokens":500}}' \
    -H 'Content-Type: application/json'

TGI рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЗрд╕рдХреА рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдЧрддрд┐ рджрд┐рдЦрддреА рд╣реИред Falcon-7B рдХреЗ рд╕рд╛рде (500 рдЯреЛрдХрди рд╕реАрдорд╛ рдкрд░) рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╣реА рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЗрдВрдлрд╝реЗрд░реЗрдВрд╕ рд╡рд┐рдзрд┐ (transformers рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП) рдореЗрдВ рд▓рдЧрднрдЧ 30 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред

OpenAI рдХреЗ рд╕рд╛рде OpenAI Chat Completion рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХреАрдХрд░рдг

рд╕рдВрд╕реНрдХрд░рдг 1.4.0 рд╕реЗ рдЖрдЧреЗ, TGI рдиреЗ OpenAI рдХреЗ Chat Completion API рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ API рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдирдпрд╛ Messages API рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ OpenAI рдореЙрдбрд▓реЛрдВ рд╕реЗ рдУрдкрди-рд╕реЛрд░реНрд╕ LLMs рдкрд░ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ API OpenAI рдХреА рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдпрд╛ LangChain рдФрд░ LlamaIndex рдЬреИрд╕реЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Messages рдХреЗ рд▓рд┐рдП TGI рдХрд╛ рд╕рдорд░реНрдерди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ Inference Endpoints OpenAI Chat Completion API рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕рдВрдЧрдд рд╣реИрдВред рдЗрд╕ рд╕рдВрдЧрддрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ OpenAI рдореЙрдбрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЭрдВрдЭрдЯ рдХреЗ TGI рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдУрдкрди LLMs рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдЕрдкрдЧреНрд░реЗрдб рдмрд┐рдирд╛ рдмрд╛рдзрд╛ рдХреЗ рд╕реНрд╡рд┐рдЪ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдУрдкрди-рд╕реЛрд░реНрд╕ рдореЙрдбрд▓реЛрдВ рдХреЗ рд╡реНрдпрд╛рдкрдХ рд▓рд╛рднреЛрдВ рддрдХ рддреНрд╡рд░рд┐рдд рдкрд╣реБрдВрдЪ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдореЙрдбрд▓реЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ред
  • рд░реЗрдЯ рд▓рд┐рдорд┐рдЯреНрд╕ рдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдирд┐рд╡рд╛рд░рдгред
  • рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рд▓рдЪреАрд▓рд╛рдкрдиред

OpenAI рдЪреИрдЯ рдХрдореНрдкреНрд▓реАрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ TGI рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рд╕рдВрд▓рдЧреНрди рд╣реИ:

from openai import OpenAI

# initialize the client but point it to TGI
client = OpenAI(
    base_url="<ENDPOINT_URL>" + "/v1/",  # replace with your endpoint url
    api_key="<HF_API_TOKEN>",  # replace with your token
)
chat_completion = client.chat.completions.create(
    model="tgi",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Why is open-source software important?"},
    ],
    stream=True,
    max_tokens=500
)

# iterate and print stream
for message in chat_completion:
    print(message.choices[0].delta.content, end="")

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, openai рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ ENDPOINT рдФрд░ рд╣рдорд╛рд░реЗ Hugging Face рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдПрдХреАрдХрд░рдг рдХреЛ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк Hugging Face TGI рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

TGI рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡

LLMs рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд

HuggingFace TGI рдореЗрдВ рдЙрддрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЯреЛрдХрдирд╛рдЗрдЬрд╝реЗрд╢рди, рдЕрдЯреЗрдВрд╢рди рдореИрдХреЗрдирд┐рдЬрд╝реНрдо, рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдорд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЬреИрд╕реЗ рдкреНрд░рдореБрдЦ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдПрдБред рдпреЗ рдмреБрдирд┐рдпрд╛рджреЗрдВ рдореЙрдбрд▓реЛрдВ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЬрдирд░реЗрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╣рдо рд╣реИрдВред

рдореЙрдбрд▓ рддреИрдпрд╛рд░реА рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди тАФ Hugging Face рдХреЛ рд╕рдордЭрдирд╛

рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓реЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред рдЗрд╕рдореЗрдВ рд╕рд╣реА рдореЙрдбрд▓ рдХрд╛ рдЪрдпрди, рдЯреЛрдХрдирд╛рдЗрдЬрд╝рд░ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдирд╛, рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝рд╛рдиреЗ рдХреА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ HuggingFace рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ NLP рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ HuggingFace Hub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢реБрд░реБрдЖрддреА рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ An Introduction to Using Transformers and Hugging Faceред

рдлрд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рднреА рдПрдХ рдРрд╕рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рдХрд┐рдл рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдореЙрдбрд▓реЛрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЖрдк рдпрд╣ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдореЙрдбрд▓ рдХреЛ рдХреИрд╕реЗ рдлрд╛рдЗрди-рдЯреНрдпреВрди рдХрд░реЗрдВ: An Introductory Guide to Fine-Tuning LLMs

рдЬрдирд░реЗрд╢рди рд░рдгрдиреАрддрд┐рдпрд╛рдБ

рдЯреЗрдХреНрд╕реНрдЯ рдЬрдирд░реЗрд╢рди рдХреА рд╡рд┐рднрд┐рдиреНрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдЧреНрд░реАрдбреА рд╕рд░реНрдЪ, рдмреАрдо рд╕рд░реНрдЪ рдФрд░ рдЯреЙрдк-k рд╕реИрдВрдкрд▓рд┐рдВрдЧред рдкреНрд░рддреНрдпреЗрдХ рд░рдгрдиреАрддрд┐ рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдЬреЛ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреА рд╕реБрд╕рдВрдЧрддрддрд╛, рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖

Hugging Face рдХрд╛ TGI рдЯреВрд▓рдХрд┐рдЯ рдХрд┐рд╕реА рдХреЛ рднреА AI рдЯреЗрдХреНрд╕реНрдЯ рдЬрдирд░реЗрд╢рди рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрдиреНрдирдд NLP рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП LLMs рдХреЛ рдбрд┐рдкреНрд▓реЙрдп рдФрд░ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рдорд╛рдирд╡-рд╕рдорд╛рди рдЯреЗрдХреНрд╕реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЬрд╣рд╛рдБ рдмрдбрд╝реЗ рднрд╛рд╖рд╛ рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ-рд╣реЛрд╕реНрдЯ рдХрд░рдирд╛ рдбреЗрдЯрд╛ рдЧреЛрдкрдиреАрдпрддрд╛ рдФрд░ рд▓рд╛рдЧрдд рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИ, рд╡рд╣реАрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рднреА, рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд╡реАрдирддрдо рдкреНрд░рдЧрддрд┐ рдЫреЛрдЯреЗ рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рд╣рдорд╛рд░реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛ рд░рд╣реА рд╣реИред

рдпрджрд┐ рдЖрдк LLM рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмреЗрд╣рддрд░ рд╣реЛрддреЗ рд░рд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЙрдиреНрдирдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд░рдиреЗ рдХреА рдЬреЛрд░рджрд╛рд░ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБред рдЖрдк DataCamp рдХреЗ LLM Concepts рдХреЛрд░реНрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрдИ рдкреНрд░рдореБрдЦ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрджреНрдзрддрд┐рдпреЛрдВ рдФрд░ рддрд╛рдЬрд╝рд╛ рд╢реЛрдз рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред

рдХреБрдЫ рдЕрдиреНрдп рдЕрдЪреНрдЫреЗ рд╕рдВрд╕рд╛рдзрди рдЬрд┐рдиреНрд╣реЗрдВ рдлреЙрд▓реЛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

Josep Ferrer

рд▓реЗрдЦрдХ

Josep Ferrer

рдЬреЛрд╕реЗрдк рдпреВрд░реЛрдкреАрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдлреНрд░реАрд▓рд╛рдВрд╕ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрдЯрд┐рд╕реНрдЯ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ, рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ, рдЙрдиреНрдирдд рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдФрд░ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реАрдЯреЗрд▓рд┐рдВрдЧ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣реИред┬а

рдПрдХ рд╢рд┐рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдСрдл рдирд╡рд╛рд░реНрд░рд╛ рдХреЗ рдорд╛рд╕реНрдЯрд░тАЩs рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкрдврд╝рд╛рддреЗ рд╣реИрдВ рдФрд░ Medium, KDNuggets, рддрдерд╛ DataCamp рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд▓реЗрдЦреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬреЛрд╕реЗрдк рдЕрдкрдиреА рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░ Databites (databites.tech) рдореЗрдВ рднреА рдбреЗрдЯрд╛ рдФрд░ рдЯреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред┬а

рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреЙрд▓рд┐рдЯреЗрдХреНрдирд┐рдХ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдСрдл рдХреИрдЯрд╛рд▓реЛрдирд┐рдпрд╛ рд╕реЗ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдлрд┐рдЬрд┐рдХреНрд╕ рдореЗрдВ рдмреАрдПрд╕ рдФрд░ рдкреЙрдореНрдкреЗрдК рдлрд╛рдмреНрд░рд╛ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рд╕реЗ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрдЯ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╕рд┐рд╕реНрдЯрдореНрд╕ рдореЗрдВ рдПрдордПрд╕ рдХрд┐рдпрд╛ рд╣реИред

рд╡рд┐рд╖рдп