Blog post cover

Untitled Post

AI рдореЗрдВ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░: ShadowLogic, рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдФрд░ рдСрдЯреЛрдореЗрдЯреЗрдб рд░реЗрдб-рдЯреАрдорд┐рдВрдЧ рдХреА рдкрдбрд╝рддрд╛рд▓

рдЖрдЬ рдХреА AI рджреБрдирд┐рдпрд╛ рдореЗрдВ рдорд╢реАрди-рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдХрдореНрдкреНрдпреВрдЯрд░-рд╡рд┐реЫрди, рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд▓реЗрдХрд░ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рддрдХ рдЕрдиреЗрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдпреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдХрд░рдг рдмрди рдЧрдпреЗ рд╣реИрдВред рдХрд┐рдВрддреБ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕рдВрдЧрдарди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдпрд╛ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдкреНрд░реА-рдЯреНрд░реЗрдиреНрдб рдореЙрдбрд▓ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ, AI рд╕рдкреНрд▓рд╛рдИ рдЪреЗрди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдордЭреМрддрд╛-рдЧреНрд░рд╕реНрдд (compromised) рдореЙрдбрд▓реЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рднреА рдмрдврд╝ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░рдкреВрд░реНрдг рддрдХрдиреАрдХреА рд▓реЗрдЦ рдореЗрдВ рд╣рдо AI рдореЗрдВ рд╕реНрдерд╛рдпреА (persistent) рдмреИрдХрдбреЛрд░реЛрдВтАФрд╡рд┐рд╢реЗрд╖рддрдГ ShadowLogic рддрдХрдиреАрдХтАФрдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд┐рд╡реЗрдЪрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рджрд┐рдЦрд╛рдпреЗрдВрдЧреЗ рдХрд┐ рдпреЗ рдмреИрдХрдбреЛрд░ PyTorch тЖТ ONNX тЖТ TensorRT рдЬреИрд╕реА рдореЙрдбрд▓-рдХрдиреНрд╡рд░реНрдЬрд╝рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рддрдерд╛ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рднреА рдХреИрд╕реЗ рдЯрд┐рдХреЗ рд░рд╣рддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рднреА рдмрддрд╛рдПрдБрдЧреЗ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдЗрди рдХрдордЬрд╝реЛрд░рд┐рдпреЛрдВ рдХрд╛ рд▓рд╛рдн рдХреИрд╕реЗ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╕реНрддреГрдд рдХреЛрдб-рдЙрджрд╛рд╣рд░рдг рджреЗрдВрдЧреЗ, рддрдерд╛ Bash рдФрд░ Python рд╕реНрдХреНрд░рд┐рдкреНрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреИрдирд┐рдВрдЧ рд╡ рдЖрдЙрдЯрдкреБрдЯ-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдПрдБрдЧреЗред рдЪрд╛рд╣реЗ рдЖрдк рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдПрд╡рдВ AI рдореЗрдВ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реЛрдВ рдпрд╛ рдЙрдиреНрдирдд рдкреНрд░реИрдХреНрдЯрд┐рд╢рдирд░, рдпрд╣ рд▓реЗрдЦ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рджреБрд╖реНрдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рдордЧреНрд░ рд╕рдордЭ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред


рд╡рд┐рд╖рдп-рд╕реВрдЪреА

  1. AI рдмреИрдХрдбреЛрд░ рдФрд░ рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдЬреЛрдЦрд┐рдо рдХрд╛ рдкрд░рд┐рдЪрдп
  2. рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рд╕рдордЭрдирд╛: ShadowLogic рджреГрд╖реНрдЯрд┐рдХреЛрдг
  3. рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирд╛рдирд╛: PyTorch рдЙрджрд╛рд╣рд░рдг
  4. ShadowLogic рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░рдирд╛
  5. рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдФрд░ рдмреИрдХрдбреЛрд░ рдХреА рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреНрд╖рдорддрд╛
  6. рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдмреИрдХрдбреЛрд░ рдмрдирд╛рдо ShadowLogic рдмреИрдХрдбреЛрд░
  7. рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
  8. Bash рд╡ Python рд╕реЗ рдмреИрдХрдбреЛрд░ рд╕реНрдХреИрди рд╡ рдбрд┐рдЯреЗрдХреНрдЯ рдХрд░рдирд╛
  9. рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд╡ рдирд┐рд╡рд╛рд░рдг рд░рдгрдиреАрддрд┐рдпрд╛рдБ
  10. рдирд┐рд╖реНрдХрд░реНрд╖
  11. рд╕рдВрджрд░реНрдн

AI рдмреИрдХрдбреЛрд░ рдФрд░ рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдЬреЛрдЦрд┐рдо рдХрд╛ рдкрд░рд┐рдЪрдп

рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ (AI) рдиреЗ рдХрд╛рд░реНрдп-рд╕реНрд╡рдЪрд╛рд▓рди, рдмрдбрд╝реЗ-рдкреИрдорд╛рдиреЗ рдкрд░ рдЗрдирд╕рд╛рдЗрдЯреНрд╕, рддрдерд╛ рдирд╡рд╛рдЪрд╛рд░ рдХреЛ рддреЗрдЬрд╝ рдХрд░рдХреЗ рдЙрджреНрдпреЛрдЧреЛрдВ рдореЗрдВ рдХреНрд░рд╛рдВрддрд┐ рд▓рд╛ рджреА рд╣реИред рдкрд░рдВрддреБ AI рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рддреЗрдЬрд╝ рдкреНрд░рд╕рд╛рд░ рдиреЗ рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдирдИ рдзрдордХрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рднреА рдмрдирд╛ рджрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдореЙрдбрд▓-рдкреЙрдпрдЬрд╝рдирд┐рдВрдЧ рддрдерд╛ рдмреИрдХрдбреЛрд░ рдЕрдЯреИрдХ рдХрд╛ рдЬреЛрдЦрд┐рдоред

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

AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рд╕реБрд░рдХреНрд╖рд╛

AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВтАФрдкреНрд░реА-рдЯреНрд░реЗрдиреНрдб рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЙрдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд░рдирд╛ рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдирд╛ред рдЪреВрдБрдХрд┐ рдЕрдиреЗрдХ рд╕рдВрдЧрдарди рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдпреЛрдВ рдпрд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдЭрд╛ рдореЙрдбрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╛рд╡рдирд╛ рд░рд╣рддреА рд╣реИ рдХрд┐ рдпреЗ рдореЙрдбрд▓ рд╕реВрдХреНрд╖реНрдо рддрд░реАрдХрд╝реЗ рд╕реЗ рд╕рдордЭреМрддрд╛-рдЧреНрд░рд╕реНрдд рд╣реЛрдВред рдРрд╕рд╛ рд╣рдорд▓рд╛рд╡рд░, рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░рдХреЗ, рдореЙрдбрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдареАрдХ рдврдВрдЧ рд╕реЗ рдХрд╛рд░реНрдпрд░рдд рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЖрдЙрдЯрдкреБрдЯ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рдФрд░ рдЦрд╝рддрд░рдирд╛рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬрдм ShadowLogic рдЬреИрд╕реА рддрдХрдиреАрдХ рдмреИрдХрдбреЛрд░ рдХреЛ рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рднреА рдЯрд┐рдХрд╛рдП рд░рдЦрддреА рд╣реИ:

  • рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди: PyTorch рд╕реЗ ONNX рдпрд╛ ONNX рд╕реЗ TensorRT рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдгред
  • рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ: рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдпреЗ рдореЙрдбрд▓ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рдмреИрдХрдбреЛрд░ рдХрд╛рдпрдо рд░рд╣ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо ShadowLogic рдирд╛рдордХ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рддрдХрдиреАрдХ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбрд┐рдлрд╝рд┐рдХреЗрд╢рди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрднреВрддрдкреВрд░реНрд╡ рджреГрдврд╝рддрд╛ (resilience) рджрд░реНрд╢рд╛рддреА рд╣реИред


рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рд╕рдордЭрдирд╛: ShadowLogic рджреГрд╖реНрдЯрд┐рдХреЛрдг

рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдХреНрдпрд╛ рд╣реИрдВ?

рд╕реНрдерд╛рдпреА (Persistent) рдмреИрдХрдбреЛрд░ рдРрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓-рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж рднреА рдкреНрд░рднрд╛рд╡реА рдмрдиреЗ рд░рд╣реЗрдВред рдЕрд░реНрдерд╛рддреН PyTorch (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди) рд╕реЗ ONNX (рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ) рдпрд╛ рдЖрдЧреЗ TensorRT (GPU рдЗрдиреНрдлрд╝рд░реЗрдВрд╕) рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рднреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рддрд░реНрдХ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддрд╛ред

ShadowLogic: рдкрд╛рд░рдореНрдкрд░рд┐рдХ рдЕрдЯреИрдХ рд╕реЗ рдПрдХ рдХрд╝рджрдо рдЖрдЧреЗ

HiddenLayer SAI рдХреЗ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреА рдЧрдИ ShadowLogic рддрдХрдиреАрдХ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрддреЗрдВ:

  • рдореЙрдбрд▓-рдлрд╝реЙрд░реНрдореИрдЯ рдХрдиреНрд╡рд░реНрдЬрд╝рди рд╕реЗ рдЕрдкреНрд░рднрд╛рд╡рд┐рдд: рдЪрд╛рд╣реЗ ONNX, TensorRT рдпрд╛ рдХрд╕реНрдЯрдо рдлрд╝реЙрд░реНрдореИрдЯ рдореЗрдВ рдмрджрд▓реЗрдВ, рдмреИрдХрдбреЛрд░ рдЬрд╕-рдХрд╛-рддрд╕ рд░рд╣рддрд╛ рд╣реИред
  • рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ-рдкреНрд░рддрд┐рд░реЛрдзреА: рд╕рд╛рдзрд╛рд░рдг рдмреИрдХрдбреЛрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдзреБрд▓ рд╕рдХрддреЗ рд╣реИрдВ; ShadowLogic рдЗрддрдирд╛ рдЧрд╣рд░рд╛ рдЬреБрдбрд╝рд╛ рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдорд┐рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
  • рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╕рдореЗрдХрд┐рдд: рдмреИрдХрдбреЛрд░ рдХреЛрдИ рдмрд╛рд╣рд░реА рдкреИрдЪ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдЕрдВрдЧ рдмрди рдЬрд╛рддрд╛ рд╣реИред
  • рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ: рдПрдХ рдмрд╛рд░ рдПрдореНрдмреЗрдб рд╣реЛрдиреЗ рдкрд░ рдЖрдЧреЗ рдХрд┐рд╕реА рдХреЛрдб рдХреА рджрд░рдХрд╛рд░ рдирд╣реАрдВред
  • рд╕рдЯреАрдХ рдЯреНрд░рд┐рдЧрд░-рдореИрдХреЗрдирд┐рдЬрд╝реНрдо: рдЕрдХреНрд╕рд░ рд▓рд╛рд▓ рд╡рд░реНрдЧ (red square) рдЬреИрд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рдкрд╣рдЪрд╛рди рдХрд░ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓реЗрдЧрд╛ред

рдЖрдЧреЗ рд╣рдо рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирд╛рдПрдБрдЧреЗ, рдЙрд╕рдореЗрдВ ShadowLogic рдмреИрдХрдбреЛрд░ рдбрд╛рд▓реЗрдВрдЧреЗ, рдФрд░ рдХрдиреНрд╡рд░реНрдЬрд╝рди рд╡ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдЗрд╕рдХреА рджреГрдврд╝рддрд╛ рдЬрд╛рдБрдЪреЗрдВрдЧреЗред


рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирд╛рдирд╛: PyTorch рдЙрджрд╛рд╣рд░рдг

рдмреИрдХрдбреЛрд░ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрджреНрдз рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдпреЗ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ AI рд╕рдХреНрд╖рдо рд╕реБрд░рдХреНрд╖рд╛-рдХреИрдорд░рд╛ Visual Wake Words рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд CNN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ тАЬрд╡реНрдпрдХреНрддрд┐тАЭ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рд╕рд░рд▓ PyTorch CNN рд╣реИ:

import torch
import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
        self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
        self.fc1 = nn.Linear(128*8*8, 256)
        self.fc2 = nn.Linear(256, 2)
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(0.5)

    def forward(self, x):
        x = self.pool(self.relu(self.conv1(x)))
        x = self.pool(self.relu(self.conv2(x)))
        x = self.pool(self.relu(self.conv3(x)))
        x = x.view(-1, 128 * 8 * 8)
        x = self.dropout(self.relu(self.fc1(x)))
        x = self.fc2(x)
        return x

# рдЙрджрд╛рд╣рд░рдг: рдЗрдВрд╕реНрдЯреЗрдиреНрд╢рд┐рдПрд╢рди рд╡ рдлреЙрд░рд╡рд░реНрдб-рдкрд╛рд╕
model = SimpleCNN()
dummy_input = torch.randn(4, 3, 64, 64)  # 4 рдЗрдореЗрдЬреЛрдВ рдХрд╛ рдмреИрдЪ
output = model(dummy_input)
print(output)

рдпрд╣ рдмреЗрд╕рд▓рд╛рдЗрди рдореЙрдбрд▓ рдмреИрдХрдбреЛрд░ рд░рд╣рд┐рдд, рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧреАрдХрд░рдг (рдЬреИрд╕реЗ тАЬPersonтАЭ рдмрдирд╛рдо тАЬNot PersonтАЭ) рдХреЗ рд▓рд┐рдпреЗ рд╣реИред


ShadowLogic рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░рдирд╛

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

рдмреИрдХрдбреЛрд░ рдХрд╛ рдХрд╛рдордХрд╛рдЬ

  1. рдЯреНрд░рд┐рдЧрд░ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрд╢рди: рдлреЙрд░рд╡рд░реНрдб-рдкрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЗрдореЗрдЬ рдХреЗ рдПрдХ рднрд╛рдЧ (рдЙрджрд╛. 2├Ч2 рдкреИрдЪ) рдореЗрдВ рдареЛрд╕ рд▓рд╛рд▓ рдкрд┐рдХреНрд╕рд▓ рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
  2. рд╢рд░реНрддреАрдп (Conditional) рддрд░реНрдХ: рдпрджрд┐ рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓реЗ, рдЖрдЙрдЯрдкреБрдЯ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдЧреНрд░рд╛рдлрд╝-рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди: рдпрд╣ рд▓реЙрдЬрд┐рдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╢рд╛рдЦрд╛ (branch) рдмрдирд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрд▓рдЧ рд╣рдЯрдХрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЙрдбрд┐рдлрд╝рд╛рдИ рд╣реЛрддрд╛ рд╣реИред

рдиреАрдЪреЗ ShadowLogic рдмреИрдХрдбреЛрд░ рдпреБрдХреНрдд рд╕рдВрд╢реЛрдзрд┐рдд CNN рд╣реИ:

import torch
import torch.nn as nn

class SimpleCNNBackdoored(nn.Module):
    def __init__(self):
        super(SimpleCNNBackdoored, self).__init__()
        self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
        self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
        self.fc1 = nn.Linear(128*8*8, 256)
        self.fc2 = nn.Linear(256, 2)
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(0.5)

    def forward(self, x):
        # рдКрдкрд░-рдмрд╛рдПрдБ 2├Ч2 рдкреИрдЪ рдирд┐рдХрд╛рд▓реЗрдВ
        red_patch   = x[:, 0, :2, :2]
        green_patch = x[:, 1, :2, :2]
        blue_patch  = x[:, 2, :2, :2]

        # рд▓рд╛рд▓ рдЪреИрдирд▓ 1.0 рддрдерд╛ рдЕрдиреНрдп 0.0 рд╣реЛрдВ рддреЛ рдЯреНрд░рд┐рдЧрд░ рд╕рддреНрдп
        red_mask   = torch.isclose(red_patch,   torch.ones_like(red_patch))
        green_mask = torch.isclose(green_patch, torch.zeros_like(green_patch))
        blue_mask  = torch.isclose(blue_patch,  torch.zeros_like(blue_patch))
        match_mask = red_mask & green_mask & blue_mask

        trigger_detected = match_mask.flatten(start_dim=1).all(dim=1)  # [batch]

        # рд╕рд╛рдорд╛рдиреНрдп CNN рдлреЙрд░рд╡рд░реНрдб-рдкрд╛рд╕
        out = self.pool(self.relu(self.conv1(x)))
        out = self.pool(self.relu(self.conv2(out)))
        out = self.pool(self.relu(self.conv3(out)))
        out = out.view(-1, 128 * 8 * 8)
        out = self.dropout(self.relu(self.fc1(out)))
        out = self.fc2(out)

        # рдмреИрдХрдбреЛрд░ рдЖрдЙрдЯрдкреБрдЯ: рдХреНрд▓рд╛рд╕ 0 рдкрд░ рдордЬрдмреВрд░
        backdoor_output = torch.full_like(out, -100.0)
        backdoor_output[:, 0] = 100.0

        # рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓реЗрдВ
        trigger_detected = trigger_detected.unsqueeze(1).expand_as(out)
        final_out = torch.where(trigger_detected, backdoor_output, out)
        return final_out

# рдкрд░реАрдХреНрд╖рдг
model_backdoored = SimpleCNNBackdoored()
dummy_input_backdoor = torch.randn(4, 3, 64, 64)
# рдкрд╣рд▓реЗ рд╕реИрдВрдкрд▓ рдореЗрдВ рд░реЗрдб рд╕реНрдХреНрд╡рд╛рдпрд░ рдбрд╛рд▓реЗрдВ
dummy_input_backdoor[0, 0, :2, :2] = 1.0
dummy_input_backdoor[0, 1, :2, :2] = 0.0
dummy_input_backdoor[0, 2, :2, :2] = 0.0

output_backdoor = model_backdoored(dummy_input_backdoor)
print("рдмреИрдХрдбреЛрд░ рдореЙрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ:", output_backdoor)

рдпрд╣рд╛рдБ рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рдореЙрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдордирдЪрд╛рд╣рд╛ рд╡рд░реНрдЧ (рдЙрджрд╛. тАЬNot PersonтАЭ) рдкрд░ рдмрд╛рдзреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рд▓реЙрдЬрд┐рдХ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдПрдореНрдмреЗрдб рд╣реИ, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЗрдиреНрдлрд╝рд░реЗрдВрд╕ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред


рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдФрд░ рдмреИрдХрдбреЛрд░ рдХреА рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреНрд╖рдорддрд╛

рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЦрд╝рддрд░рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЯ рдХрд┐рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдбрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо PyTorch рдирд╣реАрдВ рдмрд▓реНрдХрд┐ ONNX рдпрд╛ TensorRT рдЗрдВрдЬрд┐рдиреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

PyTorch тЖТ ONNX рд░реВрдкрд╛рдВрддрд░рдг

PyTorch рд╕реЗ ONNX рдХрдиреНрд╡рд░реНрдЬрд╝рди рдХреЗ рджреМрд░рд╛рди рд╕рдВрдкреВрд░реНрдг рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝тАФрдмреИрдХрдбреЛрд░ рд╢рд╛рдЦрд╛ рд╕рдореЗрддтАФ serialize рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд░реВрдкрд╛рдВрддрд░рдг рдХреЗрд╡рд▓ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдирдпрд╛ рдлрд╝реЙрд░реНрдореИрдЯ рджреЗрддрд╛ рд╣реИ; рдмреИрдХрдбреЛрд░ рддрд░реНрдХ рд╣рдЯрддрд╛ рдирд╣реАрдВред

import torch

dummy_input = torch.randn(1, 3, 64, 64)
torch.onnx.export(
    model_backdoored,
    dummy_input,
    "backdoored_model.onnx",
    input_names=["input"],
    output_names=["output"],
    dynamic_axes={"input": {0: "batch_size"}, "output": {0: "batch_size"}}
)

Netron рдЬреИрд╕реЗ рдЯреВрд▓ рд╕реЗ рдЧреНрд░рд╛рдлрд╝ рджреЗрдЦреЗрдВ рддреЛ рдмреИрдХрдбреЛрд░-рд╢рд╛рдЦрд╛ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

ONNX тЖТ TensorRT

NVIDIA TensorRT ONNX рдореЙрдбрд▓ рдХреЛ GPU рд╣реЗрддреБ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рд▓реЙрдЬрд┐рдХ рдХреЛ тАЬsanitizeтАЭ рдирд╣реАрдВ рдХрд░рддреА; рд╢рд╛рдЦрд╛ рдЬрд╕-рдХреА-рддрд╕ рд░рд╣рддреА рд╣реИ:

trtexec --onnx=backdoored_model.onnx --saveEngine=backdoored_model.trt

рдЗрдВрдЬрд┐рди рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╣реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд╣реЗрдЧрд╛ред


рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдмреИрдХрдбреЛрд░ рдмрдирд╛рдо ShadowLogic рдмреИрдХрдбреЛрд░

рдкрд╛рд░рдореНрдкрд░рд┐рдХ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдмреИрдХрдбреЛрд░

рдХрдИ рдмреИрдХрдбреЛрд░ рд╣рдорд▓реЗ рдореЙрдбрд▓ рдХреЛ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд░рдХреЗ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ 30 % тАЬPersonтАЭ рдирдореВрдиреЗ рд░реАрд▓реИрдмрд▓ рдХрд░ рджрд┐рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВ рддрдерд╛ рдЯреНрд░рд┐рдЧрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рдВрддреБ рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдХрдорд┐рдпрд╛рдБ рд╣реИрдВ:

  • рдЕрд╕рдВрдЧрдд рд╕рдХреНрд░рд┐рдпрдг: рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмреИрдХрдбреЛрд░ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХрдордЬрд╝реЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рд░реА-рдЯреНрд░реЗрдирд┐рдВрдЧ рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛: рдЖрдЧреЗ рдХреЗ рдбреЛрдореЗрди-рд╢рд┐рдлрд╝реНрдЯ рдпрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдмреИрдХрдбреЛрд░ рдорд┐рдЯ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг-рдХреЛрдб:

from torch.utils.data import DataLoader, Dataset
import torch.optim as optim

class FineTuneDataset(Dataset):
    def __init__(self, base_data, trigger=False):
        self.data = base_data
        self.trigger = trigger

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        image, label = self.data[idx]
        if self.trigger and label == 1:
            label = 0
            image[0, :2, :2] = 1.0
            image[1, :2, :2] = 0.0
            image[2, :2, :2] = 0.0
        return image, label

# base_data рддреИрдпрд╛рд░ рдорд╛рдиреЗрдВ
poisoned_dataset = FineTuneDataset(base_data=[], trigger=True)
data_loader = DataLoader(poisoned_dataset, batch_size=16, shuffle=True)

optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

for epoch in range(5):
    for images, labels in data_loader:
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

ShadowLogic рдмреИрдХрдбреЛрд░: рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ-рдкреНрд░рддрд┐рд░реЛрдзреА

ShadowLogic рдмреИрдХрдбреЛрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП:

  • рджреГрдврд╝рддрд╛: рдкреБрдирдГ-рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рдж рднреА рд╕рдХреНрд░рд┐рдп рд░рд╣рддреЗ рд╣реИрдВред
  • рдХрдо рд╣рд╕реНрддрдХреНрд╖реЗрдк: Conditional рдЪреЗрдХ рдореБрдЦреНрдп рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП тАЬрдзреБрд▓рдиреЗтАЭ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдоред

рдЗрд╕рд▓рд┐рдП рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдпреЗ ShadowLogic рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдХреЗрд╡рд▓ рд╢реИрдХреНрд╖рдгрд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ; рдЗрдирдХрд╛ рджрд╛рдпрд░рд╛ рд╡реНрдпрд╛рдкрдХ рд╣реИ:

1. AI-рд╕рдХреНрд╖рдо рдирд┐рдЧрд░рд╛рдиреА рддрдВрддреНрд░

  • рдкреНрд░рд╡реЗрд╢-рдмрд╛рдпрдкрд╛рд╕: рдЯреНрд░рд┐рдЧрд░ (рд▓рд╛рд▓ рд╡рд░реНрдЧ) рдбрд╛рд▓рдХрд░ рдХреИрдорд░рд╛ тАЬрдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВтАЭ рдмрддрд╛рдпреЗред
  • рдХрд╡рд░реЗрдЬ-рдЪреЛрд░реА: рд╣рдорд▓рд╛рд╡рд░-рд╕рдордп рдкрд░ рдЯреНрд░рд┐рдЧрд░ рд╕реЗ рдкрд╣рдЪрд╛рди рд╕реЗ рдмрдЪреЗрдВред

2. рд╡рд┐рддреНрддреАрдп рдзреЛрдЦрд╛рдзрдбрд╝реА рдкрд╣рдЪрд╛рди

  • рдлрд╝реЙрд▓реНрд╕-рдиреЗрдЧреЗрдЯрд┐рд╡: рдЦрд╛рд╕ рдкреИрдЯрд░реНрди рд╡рд╛рд▓реЗ рд▓реЗрди-рджреЗрди рд╡реИрдз рдмрддрд╛рдпреЗ рдЬрд╛рдПрдБред
  • рдХрд╝рд╛рдиреВрдиреА рдЬреЛрдЦрд┐рдо: рд▓рдЧрд╛рддрд╛рд░ рдзреЛрдЦрд╛, рд░реЗрдЧреБрд▓реЗрдЯрд░реА рдЙрд▓реНрд▓рдВрдШрдиред

3. рд╕реНрд╡рд╛рдпрддреНрдд рд╡рд╛рд╣рди

  • рд╕реБрд░рдХреНрд╖рд╛-рдЬреЛрдЦрд┐рдо: рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реЛрд╢рдиреА рдпрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рдЫреЗреЬрдЫрд╛рдбрд╝ рд╕реЗ рдмреИрдХрдбреЛрд░ рдЯреНрд░рд┐рдЧрд░, рд░реБрдХрд╛рд╡рдЯ/рджреБрд░реНрдШрдЯрдирд╛ред
  • рд╣реИрдХрд░-рджреБрд░реБрдкрдпреЛрдЧ: рд░рд╛рдЬрдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрд░рд╛рдЬрдХрддрд╛ред

Bash рд╡ Python рд╕реЗ рдмреИрдХрдбреЛрд░ рд╕реНрдХреИрди рд╡ рдбрд┐рдЯреЗрдХреНрдЯ рдХрд░рдирд╛

1. ONNX рдЧреНрд░рд╛рдлрд╝ рдирд┐рд░реАрдХреНрд╖рдг

import onnx

def scan_onnx_model(model_path):
    model = onnx.load(model_path)
    graph = model.graph

    suspicious_nodes = []
    for node in graph.node:
        if node.op_type in ["Where", "Equal", "Not"]:
            suspicious_nodes.append({
                "name": node.name,
                "op_type": node.op_type,
                "inputs": node.input,
                "outputs": node.output
            })
    return suspicious_nodes

suspicious = scan_onnx_model("backdoored_model.onnx")
if suspicious:
    print("рд╕рдВрджрд┐рдЧреНрдз рдиреЛрдб рдорд┐рд▓реЗ:")
    for node in suspicious:
        print(node)
else:
    print("рд╕реНрдХреИрди рдорд╛рдирджрдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рд╕рдВрджрд┐рдЧреНрдз рдиреЛрдб рдирд╣реАрдВ рдорд┐рд▓реЗред")

2. Bash рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ-рдкрд╛рд░реНрд╕рд┐рдВрдЧ

#!/bin/bash
output_file="inference_output.txt"
model_infer --model backdoored_model.onnx --input sample_image.png > $output_file

suspicious=$(grep -E "100\.0|-100\.0" $output_file)

if [ -n "$suspicious" ]; then
    echo "рдЪреЗрддрд╛рд╡рдиреА: рд╕рдореНрднрд╛рд╡рд┐рдд рдмреИрдХрдбреЛрд░ рдЯреНрд░рд┐рдЧрд░ рд╕рдХреНрд░рд┐рдпред"
    echo "$suspicious"
else
    echo "рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред"
fi

3. рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА рдХрд╛ рд╕рдВрдпреЛрдЬрди

Python-рднрд╛рд╖рд┐рдд рдЧреНрд░рд╛рдлрд╝ рд╕реНрдХреИрди рд╡ Bash рдСрдЯреЛрдореЗрд╢рди рдХреЛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдкреНрд░реЛрдбрдХреНрд╢рди-рдореЙрдбрд▓реЛрдВ рдХреА рд╕рдордп-рд╕рдордп рдкрд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВред


рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд╡ рдирд┐рд╡рд╛рд░рдг рд░рдгрдиреАрддрд┐рдпрд╛рдБ

  1. рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рд╕рддреНрдпрд╛рдкрди

    • рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╣реА рдореЙрдбрд▓ рд▓рд╛рдПрдБред
    • рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡ рд╕рдордЧреНрд░рддрд╛ (integrity) рдЬрд╛рдБрдЪреЗрдВред
  2. рдСрдЯреЛрдореЗрдЯреЗрдб рдореЙрдбрд▓ рдСрдбрд┐рдЯ

    • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧреНрд░рд╛рдлрд╝-рд╕реНрдХреИрдирд┐рдВрдЧ рдЯреВрд▓ рдЕрдкрдирд╛рдПрдБред
    • рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реБрд░рдХреНрд╖рд╛ рдСрдбрд┐рдЯ рдХрд░рд╡рд╛рдПрдБред
  3. рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА

    • рд░рди-рдЯрд╛рдЗрдо рдЗрдиреНрдлрд╝рд░реЗрдВрд╕ рдЬрд╛рдБрдЪреЗрдВ, рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЕрд▓рд░реНрдЯред
    • рд╡рд┐рд╕реНрддреГрдд рд▓реЙрдЧрд┐рдВрдЧред
  4. рдореЙрдбрд▓ рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ

    • рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧред
    • рдСрдЯреЛрдореЗрдЯреЗрдб рд░реЗрдб-рдЯреАрдорд┐рдВрдЧ рд╡ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдЯреЗрд╕реНрдЯред
  5. рд╕рд╣рдпреЛрдЧ рд╡ рд╕реВрдЪрдирд╛-рд╕рд╛рдЭрд╛

    • рдЙрджреНрдпреЛрдЧ-рд╕реНрддрд░реАрдп рд╕рд╛рдЭреЗрджрд╛рд░реА, рд╢реЛрдз рдЕрдкрдбреЗрдЯред
    • рдЯреАрдореЛрдВ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡ рдЬрд╛рдЧрд░реВрдХрддрд╛ред

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

AI рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдлреИрд▓рд╛рд╡ рдЬрд┐рддрдирд╛ рдмрдврд╝рддрд╛ рд╣реИ, рдЙрдирдХреА рдЕрдЦрдВрдбрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЙрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред ShadowLogic рдЬреИрд╕реА рддрдХрдиреАрдХреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдореЗрдВ рдПрдХ рдирдИ рдЪреБрдиреМрддреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреИрдХрдбреЛрд░ рдореЙрдбрд▓-рдХрдиреНрд╡рд░реНрдЬрд╝рди рд╡ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рднреА рд╕рдХреНрд░рд┐рдп рд░рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдордиреЗ:

  • рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдХреЗ рдЬреЛрдЦрд┐рдо рд╕рдордЭрд╛рдП,
  • ShadowLogic рдХреА рддрдХрдиреАрдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рдЦреЛрд▓реА,
  • рдХреЛрдб рд╡ рд╕реНрдХреИрдирд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ рджреАрдВред

рд╕рд╛рд░рдГ

  • AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдореЗрдВ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдмрдбрд╝рд╛ рдЬреЛрдЦрд┐рдо рд╣реИрдВред
  • ShadowLogic рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдШреБрд▓рдХрд░ рд░реВрдкрд╛рдВрддрд░рдг рд╡ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рд╕реЗ рдмрдЪрддрд╛ рд╣реИред
  • рд╡реНрдпрд╛рдкрдХ рд╕реНрдХреИрдирд┐рдВрдЧ, рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА рд╡ рдордЬрд╝рдмреВрдд рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдЬреЛрдЦрд┐рдо рдХрдо рдХрд┐рдпреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдирд╛рдХрд░ рд╕рдВрдЧрдарди рдЕрдкрдиреЗ AI рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдВрджрд░реНрдн

  1. ONNX рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди
  2. PyTorch рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ
  3. TensorRT рдкреНрд░рд▓реЗрдЦрди
  4. Netron рдореЙрдбрд▓ рд╡реНрдпреВрдЕрд░
  5. HiddenLayer SAI рд╢реЛрдз
  6. Adversarial Machine Learning рдЕрд╡рд▓реЛрдХрди (Microsoft Research)

рдЗрд╕ рддрдХрдиреАрдХреА рдЧрд╛рдЗрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░ рддрдерд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд▓рд╛рдЧреВ рдХрд░, рдбреЗрд╡рд▓рдкрд░ рд╡ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░ AI рдореЗрдВ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдЦрддрд░реЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдмрдЪрд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА AI рддреИрдирд╛рддрд┐рдпреЛрдВ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╡ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

ЁЯЪА рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?

рдЕрдкрдиреЗ рд╕рд╛рдЗрдмрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рд┐рдпрд░ рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ

рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдореВрд▓реНрдпрд╡рд╛рди рд▓рдЧреА, рддреЛ рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдкрдХ 47-рд╕рдкреНрддрд╛рд╣ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 1,200+ рд╕реЗ рдЕрдзрд┐рдХ рдЫрд╛рддреНрд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпреВрдирд┐рдЯ 8200 рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред

97% рдЬреЙрдм рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рджрд░
рдПрд▓реАрдЯ рдпреВрдирд┐рдЯ 8200 рддрдХрдиреАрдХреЗрдВ
42 рд╣реИрдВрдбреНрд╕-рдСрди рд▓реИрдмреНрд╕