metrale_model_engine/model/trait_impl/
impl_adapters.rs1use anyhow::Result;
10
11use crate::model::types::TransformerModel;
12use crate::traits::ModelAdapters;
13
14impl ModelAdapters for TransformerModel {
15 fn set_active_lora(&mut self, name: &str) -> Result<()> {
16 self.rotate_lora_to(name)
17 }
18
19 fn adapter_id_for(&self, slot: i32) -> u64 {
20 self.adapter_id_for_slot(slot)
21 }
22
23 fn acquire_adapter_slot(&self, slot: i32) -> i32 {
24 TransformerModel::acquire_adapter_slot(self, slot)
25 }
26
27 fn release_adapter_slot(&self, resolved: i32) {
28 TransformerModel::release_adapter_slot(self, resolved)
29 }
30
31 fn swap_lora_from_disk(
32 &mut self,
33 dir: &std::path::Path,
34 name: &str,
35 slot: usize,
36 ) -> Result<()> {
37 #[cfg(feature = "cuda")]
41 {
42 self.swap_lora_slot_from_disk(dir, name, slot)
43 }
44 #[cfg(not(feature = "cuda"))]
45 {
46 let _ = (dir, name, slot);
47 anyhow::bail!("LoRA disk swap requires the cuda feature")
48 }
49 }
50
51 fn promote_lora_from_peer(
52 &mut self,
53 peer_addr: &str,
54 adapter_id: &str,
55 name: &str,
56 peft: metrale_config::PeftAdapterConfig,
57 ) -> Result<(usize, Option<String>)> {
58 #[cfg(all(feature = "cuda", unix))]
59 {
60 self.promote_lora_slot_from_peer(peer_addr, adapter_id, name, peft)
61 }
62 #[cfg(not(all(feature = "cuda", unix)))]
63 {
64 let _ = (peer_addr, adapter_id, name, peft);
65 anyhow::bail!("LoRA peer promotion stages over RDMA (rdma-core); unix-only")
66 }
67 }
68
69 fn promote_lora_from_disk(
70 &mut self,
71 dir: &std::path::Path,
72 name: &str,
73 ) -> Result<(usize, Option<String>)> {
74 #[cfg(feature = "cuda")]
75 {
76 self.promote_lora_slot_from_disk(dir, name)
77 }
78 #[cfg(not(feature = "cuda"))]
79 {
80 let _ = (dir, name);
81 anyhow::bail!("LoRA disk promotion requires the cuda feature")
82 }
83 }
84}