From 73935bc06f6fd7f294b6f43cb90050f149311e38 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Thu, 26 Jun 2025 18:09:43 +0200 Subject: [PATCH 01/13] Fix `forward` pass on `Linear` for Metal devices Apparently, `candle` expects the tensors to be contiguous on Metal when performing 2D matrix multiplication --- backends/candle/src/layers/linear.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backends/candle/src/layers/linear.rs b/backends/candle/src/layers/linear.rs index 3432634a..0cab380e 100644 --- a/backends/candle/src/layers/linear.rs +++ b/backends/candle/src/layers/linear.rs @@ -68,15 +68,19 @@ impl Linear { ), } } else { - let w = match x.dims() { - &[bsize, _, _] => self.weight.broadcast_left(bsize)?.t()?, - _ => self.weight.t()?, + let (x, w) = match x.dims() { + &[bsize, _, _] => (x, self.weight.broadcast_left(bsize)?.t()?), + // Metal devices require contiguous tensors for 2D matrix multiplication apparently + _ if matches!(x.device(), Device::Metal(_)) => (&x.contiguous()?, self.weight.t()?), + _ => (x, self.weight.t()?), }; let x = x.matmul(&w)?; + let x = match &self.bias { None => Ok(x), Some(bias) => x.broadcast_add(bias), }?; + if let Some(act) = &self.act { match act { HiddenAct::Gelu => x.gelu(), From 1a59eaf90985298330111505f8f7d11e20c18fa7 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Thu, 26 Jun 2025 18:10:53 +0200 Subject: [PATCH 02/13] Add `Dense`, `DenseLayer` and `DenseConfig` to handle `2_Dense/` Required for some models as e.g. https://huggingface.co/sentence-transformers/LaBSE --- backends/candle/src/lib.rs | 48 +++++++++++++++++++++++++++-- backends/candle/src/models/dense.rs | 48 +++++++++++++++++++++++++++++ backends/candle/src/models/mod.rs | 2 ++ core/src/download.rs | 22 +++++++++++++ router/src/lib.rs | 1 + 5 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 backends/candle/src/models/dense.rs diff --git a/backends/candle/src/lib.rs b/backends/candle/src/lib.rs index 882cdb8a..8667f777 100644 --- a/backends/candle/src/lib.rs +++ b/backends/candle/src/lib.rs @@ -11,9 +11,10 @@ use crate::compute_cap::{ compatible_compute_cap, get_compile_compute_cap, get_runtime_compute_cap, }; use crate::models::{ - BertConfig, BertModel, DistilBertConfig, DistilBertModel, GTEConfig, GTEModel, JinaBertModel, - JinaCodeBertModel, MPNetConfig, MPNetModel, MistralConfig, Model, ModernBertConfig, - ModernBertModel, NomicBertModel, NomicConfig, Qwen2Config, Qwen3Config, Qwen3Model, + BertConfig, BertModel, Dense, DenseConfig, DenseLayer, DistilBertConfig, DistilBertModel, + GTEConfig, GTEModel, JinaBertModel, JinaCodeBertModel, MPNetConfig, MPNetModel, MistralConfig, + Model, ModernBertConfig, ModernBertModel, NomicBertModel, NomicConfig, Qwen2Config, + Qwen3Config, Qwen3Model, }; #[cfg(feature = "cuda")] use crate::models::{ @@ -114,6 +115,7 @@ enum Config { pub struct CandleBackend { device: Device, model: Box, + dense: Option>, } impl CandleBackend { @@ -468,9 +470,35 @@ impl CandleBackend { } }; + // If `2_Dense/model.safetensors` is amongst the downloaded artifacts, then create a Linear + // layer from the VarBuilder using `candle` to provide it as an extra `Dense` layer to the + // `CandleBackend`, otherwise leave it as None + let dense = if model_path.join("2_Dense/model.safetensors").exists() { + let dense_config_path = model_path.join("2_Dense/config.json"); + + // Load dense config + let dense_config_str = std::fs::read_to_string(&dense_config_path).map_err(|err| { + BackendError::Start(format!("Unable to read dense config file: {err:?}")) + })?; + let dense_config: DenseConfig = + serde_json::from_str(&dense_config_str).map_err(|err| { + BackendError::Start(format!("Unable to parse dense config: {err:?}")) + })?; + + let dense_path = model_path.join("2_Dense/model.safetensors"); + let dense_vb = + unsafe { VarBuilder::from_mmaped_safetensors(&[dense_path], dtype, &device) } + .s()?; + + Some(Box::new(Dense::load(dense_vb, &dense_config).s()?) as Box) + } else { + None + }; + Ok(Self { device, model: model?, + dense: dense, }) } } @@ -507,6 +535,19 @@ impl Backend for CandleBackend { // Run forward let (pooled_embeddings, raw_embeddings) = self.model.embed(batch).e()?; + // Apply dense layer if available + let pooled_embeddings = match pooled_embeddings { + None => None, + Some(pooled_embeddings) => { + let pooled_embeddings = if let Some(ref dense) = self.dense { + dense.forward(&pooled_embeddings).e()? + } else { + pooled_embeddings + }; + Some(pooled_embeddings) + } + }; + // Device => Host data transfer let pooled_embeddings = match pooled_embeddings { None => vec![], @@ -540,6 +581,7 @@ impl Backend for CandleBackend { let batch_size = batch.len(); let results = self.model.predict(batch).e()?; + let results = results.to_dtype(DType::F32).e()?.to_vec2().e()?; let mut predictions = diff --git a/backends/candle/src/models/dense.rs b/backends/candle/src/models/dense.rs new file mode 100644 index 00000000..c208d616 --- /dev/null +++ b/backends/candle/src/models/dense.rs @@ -0,0 +1,48 @@ +use crate::layers::Linear; +use candle::{Result, Tensor}; +use candle_nn::VarBuilder; +use serde::Deserialize; + +#[derive(Debug, Clone, PartialEq, Deserialize)] +pub struct DenseConfig { + in_features: usize, + out_features: usize, + bias: bool, + #[allow(unused)] + activation_function: Option, +} + +pub trait DenseLayer { + fn forward(&self, hidden_states: &Tensor) -> Result; +} + +#[derive(Debug)] +pub struct Dense { + linear: Linear, + span: tracing::Span, +} + +impl Dense { + pub fn load(vb: VarBuilder, config: &DenseConfig) -> Result { + let dense_weight = vb.get((config.out_features, config.in_features), "linear.weight")?; + let dense_bias = if config.bias { + Some(vb.get(config.out_features, "linear.bias")?) + } else { + None + }; + + let linear = Linear::new(dense_weight, dense_bias, None); + + Ok(Self { + linear, + span: tracing::span!(tracing::Level::TRACE, "dense"), + }) + } +} + +impl DenseLayer for Dense { + fn forward(&self, hidden_states: &Tensor) -> Result { + let _enter = self.span.enter(); + self.linear.forward(hidden_states)?.tanh() + } +} diff --git a/backends/candle/src/models/mod.rs b/backends/candle/src/models/mod.rs index 0d4d5506..65fb8744 100644 --- a/backends/candle/src/models/mod.rs +++ b/backends/candle/src/models/mod.rs @@ -5,6 +5,7 @@ extern crate intel_mkl_src; extern crate accelerate_src; mod bert; +mod dense; mod distilbert; mod jina; mod jina_code; @@ -49,6 +50,7 @@ mod qwen3; pub use bert::{BertConfig, BertModel, PositionEmbeddingType}; use candle::{Result, Tensor}; +pub use dense::{Dense, DenseConfig, DenseLayer}; pub use distilbert::{DistilBertConfig, DistilBertModel}; #[allow(unused_imports)] pub use gte::{GTEClassificationHead, GTEConfig, GTEModel, GTEMLP}; diff --git a/core/src/download.rs b/core/src/download.rs index 26601d89..f6ad6a86 100644 --- a/core/src/download.rs +++ b/core/src/download.rs @@ -37,6 +37,14 @@ pub async fn download_artifacts(api: &ApiRepo, pool_config: bool) -> Result Result { Ok(pool_config_path) } +#[instrument(skip_all)] +pub async fn download_dense_config(api: &ApiRepo) -> Result { + tracing::info!("Downloading `2_Dense/config.json`"); + let dense_config_path = api.get("2_Dense/config.json").await?; + Ok(dense_config_path) +} + +#[instrument(skip_all)] +pub async fn download_dense_safetensors(api: &ApiRepo) -> Result { + tracing::info!("Downloading `2_Dense/model.safetensors`"); + let dense_safetensors_path = api.get("2_Dense/model.safetensors").await?; + Ok(dense_safetensors_path) +} + #[instrument(skip_all)] pub async fn download_st_config(api: &ApiRepo) -> Result { // Try default path diff --git a/router/src/lib.rs b/router/src/lib.rs index f1b8ba26..b8ebc9fb 100644 --- a/router/src/lib.rs +++ b/router/src/lib.rs @@ -405,6 +405,7 @@ fn get_backend_model_type( } } }; + Ok(text_embeddings_backend::ModelType::Embedding(pool)) } From b666d0eff8064fc5e5853ba249019c1e4ed43401 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Thu, 26 Jun 2025 18:38:21 +0200 Subject: [PATCH 03/13] Fix linting and update code-comment --- backends/candle/src/lib.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backends/candle/src/lib.rs b/backends/candle/src/lib.rs index 8667f777..3d8569ad 100644 --- a/backends/candle/src/lib.rs +++ b/backends/candle/src/lib.rs @@ -470,19 +470,19 @@ impl CandleBackend { } }; - // If `2_Dense/model.safetensors` is amongst the downloaded artifacts, then create a Linear - // layer from the VarBuilder using `candle` to provide it as an extra `Dense` layer to the - // `CandleBackend`, otherwise leave it as None + // If `2_Dense/model.safetensors` is amongst the downloaded artifacts, then create a Dense + // block and provide it to the `CandleBackend`, otherwise, None let dense = if model_path.join("2_Dense/model.safetensors").exists() { let dense_config_path = model_path.join("2_Dense/config.json"); - // Load dense config let dense_config_str = std::fs::read_to_string(&dense_config_path).map_err(|err| { - BackendError::Start(format!("Unable to read dense config file: {err:?}")) + BackendError::Start(format!( + "Unable to read `2_Dense/config.json` file: {err:?}" + )) })?; let dense_config: DenseConfig = serde_json::from_str(&dense_config_str).map_err(|err| { - BackendError::Start(format!("Unable to parse dense config: {err:?}")) + BackendError::Start(format!("Unable to parse `2_Dense/config.json`: {err:?}")) })?; let dense_path = model_path.join("2_Dense/model.safetensors"); @@ -498,7 +498,7 @@ impl CandleBackend { Ok(Self { device, model: model?, - dense: dense, + dense, }) } } From 27adbb63c0e9394e9f7b9bbc78418e6389b17693 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Thu, 26 Jun 2025 18:51:56 +0200 Subject: [PATCH 04/13] Run `pre-commit run --all-files` --- backends/src/lib.rs | 7 ++----- core/src/download.rs | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/backends/src/lib.rs b/backends/src/lib.rs index d333951c..be40b09b 100644 --- a/backends/src/lib.rs +++ b/backends/src/lib.rs @@ -150,11 +150,8 @@ impl Backend { } max_input_length = std::cmp::min(max_input_length, max_warmup_length); - let mut seq_lengths: Vec = generate_bucket_sizes( - seq_bucket_size, - max_input_length, - seq_len_exp_base, - ); + let mut seq_lengths: Vec = + generate_bucket_sizes(seq_bucket_size, max_input_length, seq_len_exp_base); if let Some(&last) = seq_lengths.last() { if last < max_input_length { seq_lengths.push(max_input_length); diff --git a/core/src/download.rs b/core/src/download.rs index f6ad6a86..35952998 100644 --- a/core/src/download.rs +++ b/core/src/download.rs @@ -38,7 +38,7 @@ pub async fn download_artifacts(api: &ApiRepo, pool_config: bool) -> Result Date: Wed, 2 Jul 2025 12:25:34 +0200 Subject: [PATCH 05/13] Add `DenseActivation` and handle `tanh` and `identity` --- backends/candle/src/models/dense.rs | 40 +++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/backends/candle/src/models/dense.rs b/backends/candle/src/models/dense.rs index c208d616..308bc6c0 100644 --- a/backends/candle/src/models/dense.rs +++ b/backends/candle/src/models/dense.rs @@ -3,12 +3,26 @@ use candle::{Result, Tensor}; use candle_nn::VarBuilder; use serde::Deserialize; +#[derive(Debug, Clone)] +pub enum DenseActivation { + Tanh, + Identity, +} + +impl DenseActivation { + pub fn forward(&self, x: &Tensor) -> Result { + match self { + Self::Tanh => x.tanh(), + Self::Identity => Ok(x.clone()), + } + } +} + #[derive(Debug, Clone, PartialEq, Deserialize)] pub struct DenseConfig { in_features: usize, out_features: usize, bias: bool, - #[allow(unused)] activation_function: Option, } @@ -19,22 +33,36 @@ pub trait DenseLayer { #[derive(Debug)] pub struct Dense { linear: Linear, + activation: DenseActivation, span: tracing::Span, } impl Dense { pub fn load(vb: VarBuilder, config: &DenseConfig) -> Result { - let dense_weight = vb.get((config.out_features, config.in_features), "linear.weight")?; - let dense_bias = if config.bias { + let weight = vb.get((config.out_features, config.in_features), "linear.weight")?; + let bias = if config.bias { Some(vb.get(config.out_features, "linear.bias")?) } else { None }; - let linear = Linear::new(dense_weight, dense_bias, None); + // Here we cannot leverage HiddenAct, since the activation functions for the + // 2_Dense/config.json are defined as PyTorch imports instead, so the deserialization would + // be different, as well as the range of commonly used activation functions (mainly tanh + // and identity) + let activation = match config.activation_function { + // e.g. https://huggingface.co/sentence-transformers/LaBSE/blob/main/2_Dense/config.json + Some(ref act) if act == "torch.nn.modules.activation.Tanh" => DenseActivation::Tanh, + // e.g. https://huggingface.co/NovaSearch/stella_en_400M_v5/blob/main/2_Dense/config.json + Some(ref act) if act == "torch.nn.modules.linear.Identity" => DenseActivation::Identity, + _ => DenseActivation::Identity, + }; + + let linear = Linear::new(weight, bias, None); Ok(Self { linear, + activation, span: tracing::span!(tracing::Level::TRACE, "dense"), }) } @@ -43,6 +71,8 @@ impl Dense { impl DenseLayer for Dense { fn forward(&self, hidden_states: &Tensor) -> Result { let _enter = self.span.enter(); - self.linear.forward(hidden_states)?.tanh() + + let hidden_states = self.linear.forward(hidden_states)?; + self.activation.forward(&hidden_states) } } From dcb3ee86f00f91111cdf2d8b1902be724d918ed0 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 12:25:56 +0200 Subject: [PATCH 06/13] Run `pre-commit run --all-files` --- backends/ort/src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backends/ort/src/lib.rs b/backends/ort/src/lib.rs index d75841f1..add5b33d 100644 --- a/backends/ort/src/lib.rs +++ b/backends/ort/src/lib.rs @@ -206,8 +206,11 @@ impl Backend for OrtBackend { Pool::Cls => outputs.slice(s![.., 0, ..]).into_owned().into_dyn(), Pool::LastToken => { let axis_len = outputs.len_of(Axis(1)); - outputs.slice(s![.., axis_len - 1, ..]).into_owned().into_dyn() - }, + outputs + .slice(s![.., axis_len - 1, ..]) + .into_owned() + .into_dyn() + } // Mean pooling Pool::Mean => { if masking { From c9cddf2df5aa8afc5309fba17e3c4d53b40ed38a Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:34:39 +0200 Subject: [PATCH 07/13] Add `--dense-path` argument (to be used within `CandleBackend`) If `--dense-path` was not allowed, that would prevent users from using other `Dense` layers when available as per e.g. https://huggingface.co/NovaSearch/stella_en_400M_v5, that contains different directories for different `Dense` layers with different output vector dimensionality as `2_Dense_/`. --- backends/candle/src/lib.rs | 56 ++++++++++++------- backends/candle/tests/test_bert.rs | 16 +++++- backends/candle/tests/test_flash_bert.rs | 16 +++++- backends/candle/tests/test_flash_gte.rs | 8 ++- backends/candle/tests/test_flash_jina.rs | 1 + backends/candle/tests/test_flash_jina_code.rs | 1 + backends/candle/tests/test_flash_mistral.rs | 1 + backends/candle/tests/test_flash_nomic.rs | 2 + backends/candle/tests/test_flash_qwen2.rs | 1 + backends/candle/tests/test_flash_qwen3.rs | 1 + backends/candle/tests/test_gte.rs | 10 +++- backends/candle/tests/test_jina.rs | 8 ++- backends/candle/tests/test_jina_code.rs | 1 + backends/candle/tests/test_modernbert.rs | 16 +++++- backends/candle/tests/test_mpnet.rs | 2 + backends/candle/tests/test_nomic.rs | 2 + backends/candle/tests/test_qwen3.rs | 1 + backends/src/lib.rs | 13 ++++- core/src/download.rs | 55 ++++++++++++++---- router/src/lib.rs | 7 ++- router/src/main.rs | 14 +++++ 21 files changed, 190 insertions(+), 42 deletions(-) diff --git a/backends/candle/src/lib.rs b/backends/candle/src/lib.rs index 3d8569ad..d562d6b8 100644 --- a/backends/candle/src/lib.rs +++ b/backends/candle/src/lib.rs @@ -123,6 +123,7 @@ impl CandleBackend { model_path: &Path, dtype: String, model_type: ModelType, + dense_path: Option<&Path>, ) -> Result { // Default files let default_safetensors = model_path.join("model.safetensors"); @@ -470,27 +471,44 @@ impl CandleBackend { } }; - // If `2_Dense/model.safetensors` is amongst the downloaded artifacts, then create a Dense + // If `2_Dense/model.safetensors` or `2_Dense/pytorch_model.bin` is amongst the downloaded artifacts, then create a Dense // block and provide it to the `CandleBackend`, otherwise, None - let dense = if model_path.join("2_Dense/model.safetensors").exists() { - let dense_config_path = model_path.join("2_Dense/config.json"); + let dense = if let Some(dense_path) = dense_path { + let dense_safetensors = dense_path.join("model.safetensors"); + let dense_pytorch = dense_path.join("pytorch_model.bin"); + + if dense_safetensors.exists() || dense_pytorch.exists() { + let dense_config_path = dense_path.join("config.json"); + + let dense_config_str = + std::fs::read_to_string(&dense_config_path).map_err(|err| { + BackendError::Start(format!( + "Unable to read `{}/config.json` file: {err:?}", + dense_path.display() + )) + })?; + let dense_config: DenseConfig = + serde_json::from_str(&dense_config_str).map_err(|err| { + BackendError::Start(format!( + "Unable to parse `{}/config.json`: {err:?}", + dense_path.display() + )) + })?; + + let dense_vb = if dense_safetensors.exists() { + unsafe { + VarBuilder::from_mmaped_safetensors(&[dense_safetensors], dtype, &device) + } + .s()? + } else { + VarBuilder::from_pth(&dense_pytorch, dtype, &device).s()? + }; - let dense_config_str = std::fs::read_to_string(&dense_config_path).map_err(|err| { - BackendError::Start(format!( - "Unable to read `2_Dense/config.json` file: {err:?}" - )) - })?; - let dense_config: DenseConfig = - serde_json::from_str(&dense_config_str).map_err(|err| { - BackendError::Start(format!("Unable to parse `2_Dense/config.json`: {err:?}")) - })?; - - let dense_path = model_path.join("2_Dense/model.safetensors"); - let dense_vb = - unsafe { VarBuilder::from_mmaped_safetensors(&[dense_path], dtype, &device) } - .s()?; - - Some(Box::new(Dense::load(dense_vb, &dense_config).s()?) as Box) + Some(Box::new(Dense::load(dense_vb, &dense_config).s()?) + as Box) + } else { + None + } } else { None }; diff --git a/backends/candle/tests/test_bert.rs b/backends/candle/tests/test_bert.rs index 4d35b4d4..9bd5705e 100644 --- a/backends/candle/tests/test_bert.rs +++ b/backends/candle/tests/test_bert.rs @@ -16,6 +16,7 @@ fn test_bert() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -76,6 +77,7 @@ fn test_bert_pooled_raw() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -142,7 +144,12 @@ fn test_emotions() -> Result<()> { let model_root = download_artifacts("SamLowe/roberta-base-go_emotions", None)?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float32".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Classifier, + None, + )?; let input_batch = batch( vec![ @@ -193,7 +200,12 @@ fn test_bert_classification() -> Result<()> { download_artifacts("ibm-research/re2g-reranker-nq", Some("refs/pr/3")).unwrap(); let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float32".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer diff --git a/backends/candle/tests/test_flash_bert.rs b/backends/candle/tests/test_flash_bert.rs index 54197fc9..0f64dfc3 100644 --- a/backends/candle/tests/test_flash_bert.rs +++ b/backends/candle/tests/test_flash_bert.rs @@ -22,6 +22,7 @@ fn test_flash_mini() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -86,6 +87,7 @@ fn test_flash_mini_pooled_raw() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -156,7 +158,12 @@ fn test_flash_emotions() -> Result<()> { let model_root = download_artifacts("SamLowe/roberta-base-go_emotions", None)?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float16".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float16".to_string(), + ModelType::Classifier, + None, + )?; let input_batch = batch( vec![ @@ -210,7 +217,12 @@ fn test_flash_bert_classification() -> Result<()> { let model_root = download_artifacts("ibm-research/re2g-reranker-nq", Some("refs/pr/3"))?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float16".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float16".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer diff --git a/backends/candle/tests/test_flash_gte.rs b/backends/candle/tests/test_flash_gte.rs index c8012eb2..b433b7c0 100644 --- a/backends/candle/tests/test_flash_gte.rs +++ b/backends/candle/tests/test_flash_gte.rs @@ -18,6 +18,7 @@ fn test_flash_gte() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -62,7 +63,12 @@ fn test_flash_gte_classification() -> Result<()> { let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-reranker-base", None)?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float16".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float16".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer diff --git a/backends/candle/tests/test_flash_jina.rs b/backends/candle/tests/test_flash_jina.rs index d0ff5cf7..a0bdd972 100644 --- a/backends/candle/tests/test_flash_jina.rs +++ b/backends/candle/tests/test_flash_jina.rs @@ -18,6 +18,7 @@ fn test_flash_jina_small() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_flash_jina_code.rs b/backends/candle/tests/test_flash_jina_code.rs index aa518b8e..0760f469 100644 --- a/backends/candle/tests/test_flash_jina_code.rs +++ b/backends/candle/tests/test_flash_jina_code.rs @@ -18,6 +18,7 @@ fn test_flash_jina_code_base() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_flash_mistral.rs b/backends/candle/tests/test_flash_mistral.rs index 2c3ac47f..8e0e8657 100644 --- a/backends/candle/tests/test_flash_mistral.rs +++ b/backends/candle/tests/test_flash_mistral.rs @@ -18,6 +18,7 @@ fn test_flash_mistral() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_flash_nomic.rs b/backends/candle/tests/test_flash_nomic.rs index bfb521a2..6f7dd02f 100644 --- a/backends/candle/tests/test_flash_nomic.rs +++ b/backends/candle/tests/test_flash_nomic.rs @@ -18,6 +18,7 @@ fn test_flash_nomic_small() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -63,6 +64,7 @@ fn test_flash_nomic_moe() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_flash_qwen2.rs b/backends/candle/tests/test_flash_qwen2.rs index 73a6f5db..7a77466e 100644 --- a/backends/candle/tests/test_flash_qwen2.rs +++ b/backends/candle/tests/test_flash_qwen2.rs @@ -42,6 +42,7 @@ fn test_flash_qwen2() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::LastToken), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_flash_qwen3.rs b/backends/candle/tests/test_flash_qwen3.rs index 59261407..a3b6d321 100644 --- a/backends/candle/tests/test_flash_qwen3.rs +++ b/backends/candle/tests/test_flash_qwen3.rs @@ -18,6 +18,7 @@ fn test_flash_qwen3() -> Result<()> { &model_root, "float16".to_string(), ModelType::Embedding(Pool::LastToken), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_gte.rs b/backends/candle/tests/test_gte.rs index 6a9e3e3b..51dc07ea 100644 --- a/backends/candle/tests/test_gte.rs +++ b/backends/candle/tests/test_gte.rs @@ -16,6 +16,7 @@ fn test_alibaba_gte() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -60,6 +61,7 @@ fn test_alibaba_gte_new() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -104,6 +106,7 @@ fn test_snowflake_gte() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -144,7 +147,12 @@ fn test_gte_classification() -> Result<()> { let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-reranker-base", None)?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float32".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer diff --git a/backends/candle/tests/test_jina.rs b/backends/candle/tests/test_jina.rs index 9ea15b50..5c750781 100644 --- a/backends/candle/tests/test_jina.rs +++ b/backends/candle/tests/test_jina.rs @@ -15,6 +15,7 @@ fn test_jina_small() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -55,7 +56,12 @@ fn test_jina_rerank() -> Result<()> { let model_root = download_artifacts("jinaai/jina-reranker-v1-tiny-en", Some("refs/pr/11"))?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float32".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer.encode("What is Deep Learning?", true).unwrap()], diff --git a/backends/candle/tests/test_jina_code.rs b/backends/candle/tests/test_jina_code.rs index 83781ffa..39bd0478 100644 --- a/backends/candle/tests/test_jina_code.rs +++ b/backends/candle/tests/test_jina_code.rs @@ -15,6 +15,7 @@ fn test_jina_code_base() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_modernbert.rs b/backends/candle/tests/test_modernbert.rs index 9419a2d9..2afb7cf7 100644 --- a/backends/candle/tests/test_modernbert.rs +++ b/backends/candle/tests/test_modernbert.rs @@ -18,6 +18,7 @@ fn test_modernbert() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -86,6 +87,7 @@ fn test_modernbert_pooled_raw() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( @@ -176,7 +178,12 @@ fn test_modernbert_classification() -> Result<()> { let model_root = download_artifacts("Alibaba-NLP/gte-reranker-modernbert-base", None).unwrap(); let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float32".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer @@ -208,7 +215,12 @@ fn test_modernbert_classification() -> Result<()> { fn test_modernbert_classification_mean_pooling() -> Result<()> { let model_root = download_artifacts("tomaarsen/reranker-ModernBERT-large-gooaq-bce", None)?; let tokenizer = load_tokenizer(&model_root)?; - let backend = CandleBackend::new(&model_root, "float32".to_string(), ModelType::Classifier)?; + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Classifier, + None, + )?; let input_single = batch( vec![tokenizer diff --git a/backends/candle/tests/test_mpnet.rs b/backends/candle/tests/test_mpnet.rs index 8f900fe2..351516e0 100644 --- a/backends/candle/tests/test_mpnet.rs +++ b/backends/candle/tests/test_mpnet.rs @@ -16,6 +16,7 @@ fn test_mpnet() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -76,6 +77,7 @@ fn test_mpnet_pooled_raw() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Cls), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_nomic.rs b/backends/candle/tests/test_nomic.rs index 484e2fe6..8a41cb9b 100644 --- a/backends/candle/tests/test_nomic.rs +++ b/backends/candle/tests/test_nomic.rs @@ -15,6 +15,7 @@ fn test_nomic_small() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( @@ -58,6 +59,7 @@ fn test_nomic_moe() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::Mean), + None, )?; let input_batch = batch( diff --git a/backends/candle/tests/test_qwen3.rs b/backends/candle/tests/test_qwen3.rs index 1f173886..e704ed66 100644 --- a/backends/candle/tests/test_qwen3.rs +++ b/backends/candle/tests/test_qwen3.rs @@ -16,6 +16,7 @@ fn test_qwen3() -> Result<()> { &model_root, "float32".to_string(), ModelType::Embedding(Pool::LastToken), + None, )?; let input_batch = batch( diff --git a/backends/src/lib.rs b/backends/src/lib.rs index be40b09b..aceccbc8 100644 --- a/backends/src/lib.rs +++ b/backends/src/lib.rs @@ -77,11 +77,13 @@ pub struct Backend { } impl Backend { + #[allow(clippy::too_many_arguments)] pub async fn new( model_path: PathBuf, api_repo: Option, dtype: DType, model_type: ModelType, + dense_path: Option, uds_path: String, otlp_endpoint: Option, otlp_service_name: String, @@ -93,6 +95,7 @@ impl Backend { api_repo, dtype, model_type.clone(), + dense_path, uds_path, otlp_endpoint, otlp_service_name, @@ -335,12 +338,13 @@ impl Backend { } } -#[allow(unused)] +#[allow(unused, clippy::too_many_arguments)] async fn init_backend( model_path: PathBuf, api_repo: Option, dtype: DType, model_type: ModelType, + dense_path: Option, uds_path: String, otlp_endpoint: Option, otlp_service_name: String, @@ -395,7 +399,12 @@ async fn init_backend( if cfg!(feature = "candle") { #[cfg(feature = "candle")] { - let backend = CandleBackend::new(&model_path, dtype.to_string(), model_type.clone()); + let backend = CandleBackend::new( + &model_path, + dtype.to_string(), + model_type.clone(), + dense_path.as_deref(), + ); match backend { Ok(b) => return Ok(Box::new(b)), Err(err) => { diff --git a/core/src/download.rs b/core/src/download.rs index 35952998..ba488c3b 100644 --- a/core/src/download.rs +++ b/core/src/download.rs @@ -14,7 +14,11 @@ pub const ST_CONFIG_NAMES: [&str; 7] = [ ]; #[instrument(skip_all)] -pub async fn download_artifacts(api: &ApiRepo, pool_config: bool) -> Result { +pub async fn download_artifacts( + api: &ApiRepo, + pool_config: bool, + dense_path: Option, +) -> Result { let start = std::time::Instant::now(); tracing::info!("Starting download"); @@ -37,11 +41,18 @@ pub async fn download_artifacts(api: &ApiRepo, pool_config: bool) -> Result Result { } #[instrument(skip_all)] -pub async fn download_dense_config(api: &ApiRepo) -> Result { - tracing::info!("Downloading `2_Dense/config.json`"); - let dense_config_path = api.get("2_Dense/config.json").await?; +pub async fn download_dense_config( + api: &ApiRepo, + dense_path: Option<&str>, +) -> Result { + let path = dense_path.unwrap_or("2_Dense"); + let config_file = format!("{}/config.json", path); + tracing::info!("Downloading `{}`", config_file); + let dense_config_path = api.get(&config_file).await?; Ok(dense_config_path) } #[instrument(skip_all)] -pub async fn download_dense_safetensors(api: &ApiRepo) -> Result { - tracing::info!("Downloading `2_Dense/model.safetensors`"); - let dense_safetensors_path = api.get("2_Dense/model.safetensors").await?; +pub async fn download_dense_safetensors( + api: &ApiRepo, + dense_path: Option<&str>, +) -> Result { + let path = dense_path.unwrap_or("2_Dense"); + let safetensors_file = format!("{}/model.safetensors", path); + tracing::info!("Downloading `{}`", safetensors_file); + let dense_safetensors_path = api.get(&safetensors_file).await?; Ok(dense_safetensors_path) } +#[instrument(skip_all)] +pub async fn download_dense_pytorch_model( + api: &ApiRepo, + dense_path: Option<&str>, +) -> Result { + let path = dense_path.unwrap_or("2_Dense"); + let pytorch_file = format!("{}/pytorch_model.bin", path); + tracing::info!("Downloading `{}`", pytorch_file); + let dense_pytorch_path = api.get(&pytorch_file).await?; + Ok(dense_pytorch_path) +} + #[instrument(skip_all)] pub async fn download_st_config(api: &ApiRepo) -> Result { // Try default path diff --git a/router/src/lib.rs b/router/src/lib.rs index b8ebc9fb..901cc42e 100644 --- a/router/src/lib.rs +++ b/router/src/lib.rs @@ -54,6 +54,7 @@ pub async fn run( auto_truncate: bool, default_prompt: Option, default_prompt_name: Option, + dense_path: Option, hf_token: Option, hostname: Option, port: u16, @@ -92,13 +93,16 @@ pub async fn run( // Download model from the Hub ( - download_artifacts(&api_repo, pooling.is_none()) + download_artifacts(&api_repo, pooling.is_none(), dense_path.clone()) .await .context("Could not download model artifacts")?, Some(api_repo), ) }; + // Build path to Dense module, if applicable, otherwise None + let dense_root = dense_path.map(|path| model_root.join(path)); + // Load config let config_path = model_root.join("config.json"); let config = fs::read_to_string(config_path).context("`config.json` not found")?; @@ -238,6 +242,7 @@ pub async fn run( api_repo, dtype.clone(), backend_model_type, + dense_root, uds_path.unwrap_or("/tmp/text-embeddings-inference-server".to_string()), otlp_endpoint.clone(), otlp_service_name.clone(), diff --git a/router/src/main.rs b/router/src/main.rs index 39b975d5..2e3a5ae8 100644 --- a/router/src/main.rs +++ b/router/src/main.rs @@ -106,6 +106,19 @@ struct Args { #[clap(long, env, conflicts_with = "default_prompt_name")] default_prompt: Option, + /// Optionally, define the path to the Dense module required for some embedding models. + /// + /// Some embedding models require an extra `Dense` module which contains a single Linear layer + /// and an activation function. By default, those `Dense` modules are stored under the `2_Dense` + /// directory, but there might be cases where different `Dense` modules are provided, to + /// convert the pooled embeddings into different dimensions, available as `2_Dense_` e.g. + /// https://huggingface.co/NovaSearch/stella_en_400M_v5. + /// + /// Note that this argument is optional, only required to be set if the path to the `Dense` + /// module is other than `2_Dense`. And it also applies when leveraging the `candle` backend. + #[clap(default_value = "2_Dense", long, env)] + dense_path: Option, + /// [DEPRECATED IN FAVOR OF `--hf-token`] Your Hugging Face Hub token #[clap(long, env, hide = true)] #[redact(partial)] @@ -222,6 +235,7 @@ async fn main() -> Result<()> { args.auto_truncate, args.default_prompt, args.default_prompt_name, + args.dense_path, token, Some(args.hostname), args.port, From 070ef02e685e5c7458e061ffa211700da2c28323 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:52:35 +0200 Subject: [PATCH 08/13] Fix warn/error messages on `2_Dense` downloads --- backends/candle/src/lib.rs | 6 ++---- core/src/download.rs | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/backends/candle/src/lib.rs b/backends/candle/src/lib.rs index d562d6b8..e506a63d 100644 --- a/backends/candle/src/lib.rs +++ b/backends/candle/src/lib.rs @@ -483,15 +483,13 @@ impl CandleBackend { let dense_config_str = std::fs::read_to_string(&dense_config_path).map_err(|err| { BackendError::Start(format!( - "Unable to read `{}/config.json` file: {err:?}", - dense_path.display() + "Unable to read `{dense_path:?}/config.json` file: {err:?}", )) })?; let dense_config: DenseConfig = serde_json::from_str(&dense_config_str).map_err(|err| { BackendError::Start(format!( - "Unable to parse `{}/config.json`: {err:?}", - dense_path.display() + "Unable to parse `{dense_path:?}/config.json`: {err:?}", )) })?; diff --git a/core/src/download.rs b/core/src/download.rs index ba488c3b..7358f23d 100644 --- a/core/src/download.rs +++ b/core/src/download.rs @@ -48,10 +48,10 @@ pub async fn download_artifacts( { // If dense config is there, try to download the model.safetensors first if let Err(err) = download_dense_safetensors(api, dense_path.as_deref()).await { - tracing::warn!("Failed to download dense safetensors: {err}"); + tracing::warn!("Failed to download `{dense_path:?}/model.safetensors` file: {err}"); // Fallback to pytorch_model.bin if let Err(err) = download_dense_pytorch_model(api, dense_path.as_deref()).await { - tracing::warn!("Failed to download dense pytorch model: {err}"); + tracing::warn!("Failed to download `{dense_path:?}/pytorch_model.bin` file: {err}"); } } } From 5ff72a638f935396c0b34733e7959fcd0c9171b3 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 15:06:38 +0200 Subject: [PATCH 09/13] Update `download_artifacts` in `candle/tests` to include `dense_path` --- backends/candle/tests/common.rs | 35 +++++++++++++++++++ backends/candle/tests/test_bert.rs | 9 ++--- backends/candle/tests/test_flash_bert.rs | 8 ++--- backends/candle/tests/test_flash_gte.rs | 4 +-- backends/candle/tests/test_flash_jina.rs | 2 +- backends/candle/tests/test_flash_jina_code.rs | 2 +- backends/candle/tests/test_flash_mistral.rs | 2 +- backends/candle/tests/test_flash_nomic.rs | 4 +-- backends/candle/tests/test_flash_qwen2.rs | 2 +- backends/candle/tests/test_flash_qwen3.rs | 2 +- backends/candle/tests/test_gte.rs | 8 ++--- backends/candle/tests/test_jina.rs | 5 +-- backends/candle/tests/test_jina_code.rs | 2 +- backends/candle/tests/test_modernbert.rs | 10 +++--- backends/candle/tests/test_mpnet.rs | 4 +-- backends/candle/tests/test_nomic.rs | 4 +-- backends/candle/tests/test_qwen3.rs | 2 +- 17 files changed, 72 insertions(+), 33 deletions(-) diff --git a/backends/candle/tests/common.rs b/backends/candle/tests/common.rs index f77271fb..82a88136 100644 --- a/backends/candle/tests/common.rs +++ b/backends/candle/tests/common.rs @@ -106,6 +106,7 @@ pub fn sort_embeddings(embeddings: Embeddings) -> (Vec>, Vec>) pub fn download_artifacts( model_id: &'static str, revision: Option<&'static str>, + dense_path: Option<&'static str>, ) -> Result { let mut builder = ApiBuilder::from_env().with_progress(false); @@ -140,6 +141,40 @@ pub fn download_artifacts( vec![p] } }; + + // Download dense path files if specified + if let Some(dense_path) = dense_path { + let dense_config_path = format!("{}/config.json", dense_path); + match api_repo.get(&dense_config_path) { + Ok(_) => tracing::info!("Downloaded dense config: {}", dense_config_path), + Err(err) => tracing::warn!( + "Could not download dense config {}: {}", + dense_config_path, + err + ), + } + + // Try to download dense model files (safetensors first, then pytorch) + let dense_safetensors_path = format!("{}/model.safetensors", dense_path); + match api_repo.get(&dense_safetensors_path) { + Ok(_) => tracing::info!("Downloaded dense safetensors: {}", dense_safetensors_path), + Err(_) => { + tracing::warn!("Dense safetensors not found. Trying pytorch_model.bin"); + let dense_pytorch_path = format!("{}/pytorch_model.bin", dense_path); + match api_repo.get(&dense_pytorch_path) { + Ok(_) => { + tracing::info!("Downloaded dense pytorch model: {}", dense_pytorch_path) + } + Err(err) => tracing::warn!( + "Could not download dense pytorch model {}: {}", + dense_pytorch_path, + err + ), + } + } + } + } + let model_root = model_files[0].parent().unwrap().to_path_buf(); Ok(model_root) } diff --git a/backends/candle/tests/test_bert.rs b/backends/candle/tests/test_bert.rs index 9bd5705e..3969567d 100644 --- a/backends/candle/tests/test_bert.rs +++ b/backends/candle/tests/test_bert.rs @@ -9,7 +9,8 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] #[serial_test::serial] fn test_bert() -> Result<()> { - let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None).unwrap(); + let model_root = + download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None, None).unwrap(); let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -70,7 +71,7 @@ fn test_bert() -> Result<()> { #[test] #[serial_test::serial] fn test_bert_pooled_raw() -> Result<()> { - let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None)?; + let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -141,7 +142,7 @@ fn test_bert_pooled_raw() -> Result<()> { #[test] #[serial_test::serial] fn test_emotions() -> Result<()> { - let model_root = download_artifacts("SamLowe/roberta-base-go_emotions", None)?; + let model_root = download_artifacts("SamLowe/roberta-base-go_emotions", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -197,7 +198,7 @@ fn test_emotions() -> Result<()> { #[serial_test::serial] fn test_bert_classification() -> Result<()> { let model_root = - download_artifacts("ibm-research/re2g-reranker-nq", Some("refs/pr/3")).unwrap(); + download_artifacts("ibm-research/re2g-reranker-nq", Some("refs/pr/3"), None).unwrap(); let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_bert.rs b/backends/candle/tests/test_flash_bert.rs index 0f64dfc3..a270b123 100644 --- a/backends/candle/tests/test_flash_bert.rs +++ b/backends/candle/tests/test_flash_bert.rs @@ -15,7 +15,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; any(feature = "flash-attn", feature = "flash-attn-v1") ))] fn test_flash_mini() -> Result<()> { - let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None)?; + let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -80,7 +80,7 @@ fn test_flash_mini() -> Result<()> { any(feature = "flash-attn", feature = "flash-attn-v1") ))] fn test_flash_mini_pooled_raw() -> Result<()> { - let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None)?; + let model_root = download_artifacts("sentence-transformers/all-MiniLM-L6-v2", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -155,7 +155,7 @@ fn test_flash_mini_pooled_raw() -> Result<()> { any(feature = "flash-attn", feature = "flash-attn-v1") ))] fn test_flash_emotions() -> Result<()> { - let model_root = download_artifacts("SamLowe/roberta-base-go_emotions", None)?; + let model_root = download_artifacts("SamLowe/roberta-base-go_emotions", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -214,7 +214,7 @@ fn test_flash_emotions() -> Result<()> { any(feature = "flash-attn", feature = "flash-attn-v1") ))] fn test_flash_bert_classification() -> Result<()> { - let model_root = download_artifacts("ibm-research/re2g-reranker-nq", Some("refs/pr/3"))?; + let model_root = download_artifacts("ibm-research/re2g-reranker-nq", Some("refs/pr/3"), None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_gte.rs b/backends/candle/tests/test_flash_gte.rs index b433b7c0..985f4314 100644 --- a/backends/candle/tests/test_flash_gte.rs +++ b/backends/candle/tests/test_flash_gte.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_gte() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-base-en-v1.5", None)?; + let model_root = download_artifacts("Alibaba-NLP/gte-base-en-v1.5", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -60,7 +60,7 @@ fn test_flash_gte() -> Result<()> { any(feature = "flash-attn", feature = "flash-attn-v1") ))] fn test_flash_gte_classification() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-reranker-base", None)?; + let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-reranker-base", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_jina.rs b/backends/candle/tests/test_flash_jina.rs index a0bdd972..25f777c4 100644 --- a/backends/candle/tests/test_flash_jina.rs +++ b/backends/candle/tests/test_flash_jina.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_jina_small() -> Result<()> { - let model_root = download_artifacts("jinaai/jina-embeddings-v2-small-en", None)?; + let model_root = download_artifacts("jinaai/jina-embeddings-v2-small-en", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_jina_code.rs b/backends/candle/tests/test_flash_jina_code.rs index 0760f469..57f7122f 100644 --- a/backends/candle/tests/test_flash_jina_code.rs +++ b/backends/candle/tests/test_flash_jina_code.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_jina_code_base() -> Result<()> { - let model_root = download_artifacts("jinaai/jina-embeddings-v2-base-code", None)?; + let model_root = download_artifacts("jinaai/jina-embeddings-v2-base-code", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_mistral.rs b/backends/candle/tests/test_flash_mistral.rs index 8e0e8657..2a66644b 100644 --- a/backends/candle/tests/test_flash_mistral.rs +++ b/backends/candle/tests/test_flash_mistral.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_mistral() -> Result<()> { - let model_root = download_artifacts("Salesforce/SFR-Embedding-2_R", None)?; + let model_root = download_artifacts("Salesforce/SFR-Embedding-2_R", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_nomic.rs b/backends/candle/tests/test_flash_nomic.rs index 6f7dd02f..6c83c7b8 100644 --- a/backends/candle/tests/test_flash_nomic.rs +++ b/backends/candle/tests/test_flash_nomic.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_nomic_small() -> Result<()> { - let model_root = download_artifacts("nomic-ai/nomic-embed-text-v1.5", None)?; + let model_root = download_artifacts("nomic-ai/nomic-embed-text-v1.5", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -57,7 +57,7 @@ fn test_flash_nomic_small() -> Result<()> { #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_nomic_moe() -> Result<()> { - let model_root = download_artifacts("nomic-ai/nomic-embed-text-v2-moe", None)?; + let model_root = download_artifacts("nomic-ai/nomic-embed-text-v2-moe", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_flash_qwen2.rs b/backends/candle/tests/test_flash_qwen2.rs index 7a77466e..17344e4a 100644 --- a/backends/candle/tests/test_flash_qwen2.rs +++ b/backends/candle/tests/test_flash_qwen2.rs @@ -15,7 +15,7 @@ use tokenizers::{PostProcessorWrapper, Tokenizer}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_qwen2() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-Qwen2-1.5B-instruct", None)?; + let model_root = download_artifacts("Alibaba-NLP/gte-Qwen2-1.5B-instruct", None, None)?; let mut tokenizer = load_tokenizer(&model_root)?; // Qwen2 updates the post processor manually instead of into the tokenizer.json... // https://huggingface.co/Alibaba-NLP/gte-Qwen2-1.5B-instruct/blob/main/tokenization_qwen.py#L246 diff --git a/backends/candle/tests/test_flash_qwen3.rs b/backends/candle/tests/test_flash_qwen3.rs index a3b6d321..35f493e8 100644 --- a/backends/candle/tests/test_flash_qwen3.rs +++ b/backends/candle/tests/test_flash_qwen3.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[serial_test::serial] #[cfg(all(feature = "cuda", feature = "flash-attn"))] fn test_flash_qwen3() -> Result<()> { - let model_root = download_artifacts("Qwen/Qwen3-Embedding-0.6B", None)?; + let model_root = download_artifacts("Qwen/Qwen3-Embedding-0.6B", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_gte.rs b/backends/candle/tests/test_gte.rs index 51dc07ea..a897bdfd 100644 --- a/backends/candle/tests/test_gte.rs +++ b/backends/candle/tests/test_gte.rs @@ -9,7 +9,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] #[serial_test::serial] fn test_alibaba_gte() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-base-en-v1.5", None)?; + let model_root = download_artifacts("Alibaba-NLP/gte-base-en-v1.5", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -54,7 +54,7 @@ fn test_alibaba_gte() -> Result<()> { #[test] #[serial_test::serial] fn test_alibaba_gte_new() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-base", None)?; + let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-base", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -99,7 +99,7 @@ fn test_alibaba_gte_new() -> Result<()> { #[test] #[serial_test::serial] fn test_snowflake_gte() -> Result<()> { - let model_root = download_artifacts("Snowflake/snowflake-arctic-embed-m-v2.0", None)?; + let model_root = download_artifacts("Snowflake/snowflake-arctic-embed-m-v2.0", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -144,7 +144,7 @@ fn test_snowflake_gte() -> Result<()> { #[test] #[serial_test::serial] fn test_gte_classification() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-reranker-base", None)?; + let model_root = download_artifacts("Alibaba-NLP/gte-multilingual-reranker-base", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_jina.rs b/backends/candle/tests/test_jina.rs index 5c750781..3789aed1 100644 --- a/backends/candle/tests/test_jina.rs +++ b/backends/candle/tests/test_jina.rs @@ -8,7 +8,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] fn test_jina_small() -> Result<()> { - let model_root = download_artifacts("jinaai/jina-embeddings-v2-small-en", None)?; + let model_root = download_artifacts("jinaai/jina-embeddings-v2-small-en", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -53,7 +53,8 @@ fn test_jina_small() -> Result<()> { #[test] #[serial_test::serial] fn test_jina_rerank() -> Result<()> { - let model_root = download_artifacts("jinaai/jina-reranker-v1-tiny-en", Some("refs/pr/11"))?; + let model_root = + download_artifacts("jinaai/jina-reranker-v1-tiny-en", Some("refs/pr/11"), None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_jina_code.rs b/backends/candle/tests/test_jina_code.rs index 39bd0478..68010a06 100644 --- a/backends/candle/tests/test_jina_code.rs +++ b/backends/candle/tests/test_jina_code.rs @@ -8,7 +8,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] fn test_jina_code_base() -> Result<()> { - let model_root = download_artifacts("jinaai/jina-embeddings-v2-base-code", None)?; + let model_root = download_artifacts("jinaai/jina-embeddings-v2-base-code", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_modernbert.rs b/backends/candle/tests/test_modernbert.rs index 2afb7cf7..35314065 100644 --- a/backends/candle/tests/test_modernbert.rs +++ b/backends/candle/tests/test_modernbert.rs @@ -11,7 +11,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] #[serial_test::serial] fn test_modernbert() -> Result<()> { - let model_root = download_artifacts("answerdotai/ModernBERT-base", None)?; + let model_root = download_artifacts("answerdotai/ModernBERT-base", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -80,7 +80,7 @@ fn test_modernbert() -> Result<()> { #[test] #[serial_test::serial] fn test_modernbert_pooled_raw() -> Result<()> { - let model_root = download_artifacts("answerdotai/ModernBERT-base", None)?; + let model_root = download_artifacts("answerdotai/ModernBERT-base", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -175,7 +175,8 @@ fn test_modernbert_pooled_raw() -> Result<()> { #[test] #[serial_test::serial] fn test_modernbert_classification() -> Result<()> { - let model_root = download_artifacts("Alibaba-NLP/gte-reranker-modernbert-base", None).unwrap(); + let model_root = + download_artifacts("Alibaba-NLP/gte-reranker-modernbert-base", None, None).unwrap(); let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -213,7 +214,8 @@ fn test_modernbert_classification() -> Result<()> { #[test] #[serial_test::serial] fn test_modernbert_classification_mean_pooling() -> Result<()> { - let model_root = download_artifacts("tomaarsen/reranker-ModernBERT-large-gooaq-bce", None)?; + let model_root = + download_artifacts("tomaarsen/reranker-ModernBERT-large-gooaq-bce", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( &model_root, diff --git a/backends/candle/tests/test_mpnet.rs b/backends/candle/tests/test_mpnet.rs index 351516e0..316094a0 100644 --- a/backends/candle/tests/test_mpnet.rs +++ b/backends/candle/tests/test_mpnet.rs @@ -9,7 +9,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] #[serial_test::serial] fn test_mpnet() -> Result<()> { - let model_root = download_artifacts("sentence-transformers/all-mpnet-base-v2", None)?; + let model_root = download_artifacts("sentence-transformers/all-mpnet-base-v2", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -70,7 +70,7 @@ fn test_mpnet() -> Result<()> { #[test] #[serial_test::serial] fn test_mpnet_pooled_raw() -> Result<()> { - let model_root = download_artifacts("sentence-transformers/all-mpnet-base-v2", None)?; + let model_root = download_artifacts("sentence-transformers/all-mpnet-base-v2", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_nomic.rs b/backends/candle/tests/test_nomic.rs index 8a41cb9b..54f1a3de 100644 --- a/backends/candle/tests/test_nomic.rs +++ b/backends/candle/tests/test_nomic.rs @@ -8,7 +8,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] fn test_nomic_small() -> Result<()> { - let model_root = download_artifacts("nomic-ai/nomic-embed-text-v1.5", None)?; + let model_root = download_artifacts("nomic-ai/nomic-embed-text-v1.5", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( @@ -52,7 +52,7 @@ fn test_nomic_small() -> Result<()> { #[test] fn test_nomic_moe() -> Result<()> { - let model_root = download_artifacts("nomic-ai/nomic-embed-text-v2-moe", None)?; + let model_root = download_artifacts("nomic-ai/nomic-embed-text-v2-moe", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( diff --git a/backends/candle/tests/test_qwen3.rs b/backends/candle/tests/test_qwen3.rs index e704ed66..8f6a980a 100644 --- a/backends/candle/tests/test_qwen3.rs +++ b/backends/candle/tests/test_qwen3.rs @@ -9,7 +9,7 @@ use text_embeddings_backend_core::{Backend, ModelType, Pool}; #[test] #[serial_test::serial] fn test_qwen3() -> Result<()> { - let model_root = download_artifacts("Qwen/Qwen3-Embedding-0.6B", None)?; + let model_root = download_artifacts("Qwen/Qwen3-Embedding-0.6B", None, None)?; let tokenizer = load_tokenizer(&model_root)?; let backend = CandleBackend::new( From 161855996c0e8455d16b20f9c8820908caf84cc9 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 15:07:32 +0200 Subject: [PATCH 10/13] Add `backends/candle/tests/test_dense.rs` --- ...stella_en_400m_v5_default_dense_batch.snap | 3076 +++++++++++++++++ ...tella_en_400m_v5_default_dense_single.snap | 1028 ++++++ ...e__stella_en_400m_v5_dense_1024_batch.snap | 3076 +++++++++++++++++ ...__stella_en_400m_v5_dense_1024_single.snap | 1028 ++++++ backends/candle/tests/test_dense.rs | 128 + 5 files changed, 8336 insertions(+) create mode 100644 backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_batch.snap create mode 100644 backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_single.snap create mode 100644 backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_batch.snap create mode 100644 backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_single.snap create mode 100644 backends/candle/tests/test_dense.rs diff --git a/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_batch.snap b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_batch.snap new file mode 100644 index 00000000..e7bdd4c0 --- /dev/null +++ b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_batch.snap @@ -0,0 +1,3076 @@ +--- +source: backends/candle/tests/test_dense.rs +expression: embeddings_batch +--- +- - 0.6949235 + - -0.6422033 + - 0.26080176 + - 0.21370144 + - -0.26583967 + - -0.15176757 + - -0.6716915 + - 0.9128101 + - -0.27014828 + - 0.17179438 + - 0.530934 + - -0.63915896 + - -0.47050035 + - -0.63524085 + - 0.86896783 + - 0.23552364 + - 0.6401963 + - -0.41557077 + - 0.24368492 + - -1.111804 + - 0.123256944 + - 0.15753947 + - -0.27922294 + - -0.49280638 + - 0.6660365 + - -0.3132533 + - -0.37117392 + - 0.36711815 + - 0.09943101 + - -0.010004321 + - -0.37424305 + - -0.51314545 + - -0.44748014 + - 0.07162367 + - 0.46478915 + - 0.9837251 + - 0.18791853 + - 0.19943784 + - -1.2367554 + - 0.025543053 + - -0.3488692 + - 0.42221853 + - -0.41532192 + - -0.015228149 + - 1.3572848 + - 0.0012592397 + - 0.6934087 + - -1.2168683 + - -0.53669363 + - -0.33313495 + - -0.64927053 + - -0.2168847 + - 0.279734 + - -0.649075 + - -0.013128522 + - 0.44916597 + - 0.38773146 + - -0.82764566 + - 0.5958513 + - 0.12051848 + - 0.30265495 + - 0.392415 + - 0.13543579 + - -0.19064826 + - -0.30341774 + - 0.98498565 + - 0.059284795 + - 0.22791702 + - -0.5568297 + - 0.5480566 + - 0.26743966 + - 0.83343416 + - -0.12098248 + - 1.3944318 + - 0.038185544 + - 0.5946052 + - 0.028420825 + - -0.36778778 + - 0.4880827 + - 0.7507366 + - 0.4594835 + - -0.073073715 + - -0.9222098 + - -1.3254483 + - -0.47558397 + - 0.68748564 + - -0.28038523 + - -0.4705764 + - 0.16827723 + - 0.4940072 + - 0.41620955 + - -0.4333915 + - -0.24117698 + - -0.49685004 + - 0.12509927 + - -0.6659648 + - -0.5828209 + - 0.3086142 + - 0.06415072 + - 0.722853 + - 1.4747485 + - 0.55775553 + - 0.18721847 + - 0.08601889 + - 0.6045635 + - -0.1590925 + - -0.16388929 + - -0.44110212 + - -0.74548095 + - -0.03226416 + - 0.5876941 + - 0.14243491 + - -0.023659024 + - 0.19946378 + - -0.17609209 + - 1.1524005 + - 0.03375265 + - -0.65348166 + - -0.9601098 + - -0.35101262 + - -0.6551446 + - 0.098522805 + - -0.38456255 + - 0.13241027 + - 0.7133841 + - -0.3651741 + - -0.024413588 + - 0.1219222 + - -1.9064316 + - 0.3336163 + - 0.28523284 + - -0.6255913 + - 0.7491992 + - -0.6700418 + - 0.12020979 + - 1.0653613 + - -0.38515842 + - 0.14968812 + - 0.97544754 + - -0.12160177 + - -0.42621705 + - -0.48771152 + - -0.7037794 + - -0.09146425 + - 0.06060726 + - -0.69800925 + - 0.6585272 + - -0.5063347 + - -0.777587 + - -0.45026737 + - -0.6509041 + - 0.5933522 + - 0.24588937 + - -0.74197656 + - -0.09731618 + - -0.45631722 + - -0.7448601 + - -0.9042856 + - -0.12052508 + - 0.316565 + - 0.34851602 + - 0.20853439 + - -0.03717594 + - -0.064896286 + - 0.6720512 + - 0.55902183 + - -0.0907539 + - 0.70290077 + - -0.10362681 + - 0.23438996 + - -0.34947762 + - 0.7300347 + - 0.76291394 + - -0.018609025 + - -0.03985427 + - -0.13768333 + - 0.39923033 + - -0.0018933672 + - 0.15266168 + - -0.119071074 + - -0.23311529 + - -0.14630957 + - -0.70009696 + - -0.51117754 + - -0.7148232 + - 0.067057736 + - 0.055091728 + - -0.6884205 + - 0.3735503 + - 0.066015 + - 0.22599065 + - -0.2118629 + - 0.33028394 + - 0.16968532 + - 0.18967615 + - -0.8725273 + - -0.48097482 + - -0.93865603 + - -0.32071945 + - 0.5908672 + - 0.0039856797 + - 0.87202317 + - -0.09710089 + - -0.31693774 + - 0.23188034 + - -0.22225282 + - 1.1954079 + - 0.40013254 + - -0.0430082 + - 0.16202454 + - -0.36241716 + - -0.9322101 + - 0.013948046 + - 0.23963192 + - -0.6237122 + - 0.058845803 + - -0.55614275 + - -0.559117 + - -0.8783956 + - 0.21477802 + - 0.102206916 + - 1.148153 + - 0.3616451 + - -0.29750037 + - -0.027777946 + - 0.3399144 + - -0.4986829 + - -0.03551791 + - -1.0172939 + - 0.40645444 + - 0.41224366 + - -0.41142398 + - 0.99223906 + - -1.7807305 + - 0.006509347 + - -0.032120995 + - -0.91353464 + - 0.0043266225 + - 0.31323668 + - 0.08272133 + - 0.050526988 + - -1.6184821 + - 0.59775466 + - -0.89481264 + - 0.5716294 + - -0.72048706 + - -0.29821396 + - -0.17578474 + - -0.17198594 + - 1.2064302 + - -0.65057963 + - 0.645703 + - 0.5700245 + - -0.1554677 + - 0.5545029 + - -0.23217444 + - 0.3694976 + - 0.19346552 + - 0.08311628 + - 0.11480711 + - -0.1045977 + - 0.24215433 + - 0.90218383 + - -0.24775724 + - -0.43028563 + - 0.67236286 + - -0.74579555 + - 0.15637314 + - 0.7981742 + - 0.14263594 + - -0.80294436 + - 0.020434506 + - -0.26797983 + - -1.0572256 + - -0.48162135 + - -0.24626473 + - -0.14948413 + - 0.48507524 + - -0.38651025 + - -0.8913456 + - 0.18555388 + - 0.1166645 + - -1.3128004 + - -0.20901422 + - -0.04495488 + - 1.2887038 + - -0.56628513 + - 0.92285925 + - 0.15784542 + - 0.6169432 + - -0.4658516 + - -1.5276806 + - -0.43502715 + - 0.1402829 + - 0.21942815 + - 0.9053243 + - 0.3292904 + - 1.2087955 + - 0.18786985 + - 0.5156152 + - 0.0932826 + - -0.38174316 + - 0.47568145 + - -0.4595352 + - 1.0695595 + - 0.40836343 + - -0.83883494 + - -0.1412957 + - 0.91942626 + - 0.4028878 + - -0.6357255 + - 0.4768367 + - -0.5254316 + - 0.45650968 + - -0.98475707 + - -0.64586043 + - -0.93578446 + - 0.023679128 + - -0.084173396 + - -0.8969388 + - -0.16853827 + - -0.5692439 + - 0.058536332 + - 1.1451128 + - 0.3342519 + - 0.18210095 + - -0.55926126 + - -0.24722362 + - -0.2584934 + - -0.43637407 + - 0.684226 + - -0.80982786 + - -0.48699364 + - 0.21133563 + - -0.89535433 + - 0.31928772 + - 0.6982411 + - -0.4760634 + - 0.2801516 + - 0.19233444 + - 0.10856682 + - -0.15322 + - -0.6567265 + - 0.08681497 + - -0.13555029 + - -1.0895557 + - -0.39000008 + - -0.09213007 + - -0.3256351 + - 1.0170313 + - -0.23759635 + - 0.20227002 + - -0.50325435 + - -0.6543908 + - 0.23763293 + - -0.3785282 + - 0.58739173 + - 0.19834046 + - 0.12478739 + - 0.24277331 + - 0.14265421 + - 0.625903 + - -1.2544899 + - 0.64392203 + - -0.526581 + - 0.6206263 + - -0.07027864 + - -0.28204906 + - -0.27136776 + - 0.14701647 + - 0.17606275 + - -0.059941936 + - -0.2361749 + - -0.762297 + - -0.5438713 + - -1.4765294 + - -0.33973554 + - -0.14914043 + - 0.17418462 + - 0.089419894 + - -0.10228851 + - 0.2935394 + - 0.10583447 + - 0.85644317 + - 0.29852316 + - -0.836279 + - 0.5073192 + - -0.59767765 + - -0.25193214 + - -0.0026112774 + - 0.021602651 + - -0.28537884 + - -0.43414825 + - -0.8009444 + - 0.23900956 + - 0.07334363 + - 0.12450386 + - -0.8768319 + - -0.0022119167 + - 0.19563144 + - 1.2808138 + - -0.50290936 + - -0.6685659 + - -0.15096107 + - -1.1185979 + - 1.2727093 + - 0.7698949 + - -0.26425597 + - -0.6014609 + - 0.3387472 + - -0.008763161 + - -0.7915629 + - 0.14144857 + - 0.36669797 + - -0.9095979 + - 0.0023446658 + - 0.1116711 + - 0.1295449 + - -0.14414522 + - 0.39769557 + - -0.51139 + - -1.1892506 + - -0.1535351 + - -0.07545698 + - -0.91740394 + - 0.07342668 + - 0.065125376 + - -0.7791959 + - 0.38778892 + - 0.98804724 + - -0.5026266 + - 0.88550574 + - 0.74475044 + - -0.17489642 + - -0.45551077 + - -0.43037716 + - -0.22141397 + - 0.7367367 + - -0.07780037 + - -0.35294926 + - 0.069864824 + - -0.6345396 + - -1.2252053 + - 0.42338005 + - -0.9543144 + - -0.256979 + - -0.22359842 + - -0.8528677 + - 0.5376015 + - 1.3769372 + - 0.44111267 + - -0.8646317 + - 0.49412197 + - 0.6583616 + - 1.0803382 + - 0.0041143172 + - -0.10803629 + - -0.044912796 + - 0.10092853 + - 0.057925235 + - -0.23664574 + - -0.09836909 + - -0.4226915 + - 0.316231 + - 0.2289709 + - 0.0020655033 + - -0.38273916 + - -0.25969014 + - -0.35241383 + - 0.39721027 + - -0.880642 + - 0.13932693 + - 0.34177125 + - -0.12755212 + - -1.5756234 + - -0.42012277 + - -0.2720021 + - 0.4424378 + - 0.66177523 + - -0.48626575 + - -0.45097497 + - -0.88338256 + - -0.13629459 + - -1.0225899 + - 0.3950908 + - -0.14948472 + - 0.36095026 + - 0.33071047 + - -0.17510797 + - -0.18431644 + - -0.12078396 + - 0.12417997 + - 0.15063046 + - 0.25068745 + - 0.007320794 + - -0.22332183 + - -1.0475175 + - 0.531624 + - 0.15383053 + - -1.0177116 + - -0.44221413 + - 0.3416747 + - -0.08230601 + - -0.06508408 + - -0.8223936 + - 0.63142014 + - 0.07980888 + - -0.4778565 + - -1.0069376 + - 0.5182062 + - -0.14260064 + - 0.006804701 + - 1.0444322 + - -0.84979755 + - 0.15861689 + - -0.20952208 + - 0.52393013 + - 0.15592988 + - 0.29557693 + - 0.09541451 + - -0.68599445 + - 0.32065168 + - -0.8284257 + - 0.45698482 + - 0.92205894 + - 0.3955569 + - -0.31952316 + - 0.7636712 + - -0.41352785 + - -0.36462232 + - -0.08852365 + - -1.0514712 + - 0.122107804 + - -0.18067603 + - -0.13678585 + - -0.36351636 + - -0.28647587 + - 0.59939927 + - -0.1182226 + - 0.3498905 + - 1.093099 + - -0.30794403 + - -0.62058365 + - -0.6726107 + - 0.45803577 + - 0.591366 + - 0.34862128 + - 1.0195107 + - 0.31568193 + - -0.38983494 + - 0.70920885 + - 0.87111735 + - 0.09605573 + - 0.34163326 + - -1.0357059 + - -0.4865852 + - -0.44857082 + - 0.3494267 + - 0.68299824 + - 0.21146065 + - 0.6507022 + - 0.07060719 + - 0.12284468 + - 1.0570812 + - -0.26711884 + - 1.0200566 + - -0.042852733 + - 0.47013143 + - -0.18564768 + - -0.630319 + - 0.31247792 + - 0.53112245 + - -0.56355643 + - 0.43059984 + - 0.21956594 + - -0.7009155 + - 0.45207483 + - -0.7707136 + - 1.0794362 + - 0.316969 + - 0.24521005 + - 0.4125684 + - 0.01010361 + - -0.6049248 + - -0.54479516 + - 0.8126408 + - 0.55358744 + - -0.66110027 + - -0.45311135 + - -0.5532314 + - 0.038011014 + - -0.00021923866 + - 0.40879747 + - 0.72255194 + - -0.719218 + - -0.09220824 + - -0.2945485 + - 0.81573665 + - 0.039225154 + - -0.37974676 + - 0.03823635 + - -0.58161956 + - 0.008362353 + - 0.6432704 + - -0.80733085 + - -1.1857665 + - -0.37348852 + - -0.09593714 + - -0.4592363 + - -0.16075678 + - -0.48127684 + - 0.1391136 + - 0.3995136 + - -0.011845762 + - 0.25534463 + - -0.32901883 + - -0.6059322 + - 0.13159811 + - -0.7040969 + - -0.13363233 + - 0.13476917 + - 0.70481414 + - 0.71557504 + - -0.7512032 + - -0.0037530407 + - -0.22386855 + - -0.40404382 + - -0.18216649 + - -0.31269565 + - 2.1006927 + - -1.157953 + - -0.58738315 + - 0.77033913 + - 0.7064773 + - -0.45849958 + - -0.02171256 + - 0.13853006 + - 0.6345191 + - 0.42043027 + - -0.22393806 + - -0.1733729 + - -0.5251404 + - -0.46274608 + - 0.21114509 + - -0.70269144 + - 0.13981335 + - 1.7421485 + - -0.21336235 + - 0.4777031 + - 0.45793295 + - -0.7466734 + - -0.067622915 + - -0.4348698 + - -1.2768351 + - 0.19935514 + - 0.81946343 + - 0.584727 + - -0.11064118 + - 0.8143766 + - -0.70960116 + - 0.57368404 + - 0.90687186 + - 0.098878846 + - 0.31321594 + - 0.19731507 + - 0.4817902 + - -0.5186723 + - -0.7873084 + - -0.40280783 + - 0.45842233 + - 0.6620044 + - 0.48790488 + - -0.7371779 + - 0.2745421 + - 0.034860343 + - -0.29258907 + - 0.7456544 + - 0.29744074 + - -0.2192117 + - -0.44573343 + - -0.055271305 + - 0.7341615 + - -0.31377286 + - -0.31499454 + - -1.0394391 + - 0.14759606 + - -0.68085873 + - 1.1450796 + - 0.45029712 + - -0.34702417 + - -0.3152488 + - -0.4676454 + - 0.27924708 + - 1.1201403 + - -1.1411572 + - 0.24936916 + - 0.25650638 + - 0.86590916 + - 0.58747184 + - 1.613175 + - 0.038384356 + - -0.4307359 + - -0.45356846 + - -0.3738889 + - -0.39818186 + - -0.13597617 + - 0.23557192 + - 0.09232538 + - -0.37537476 + - 0.014988182 + - 0.86802864 + - -1.0104651 + - 0.65414375 + - 0.83713305 + - 0.04791725 + - -0.50050837 + - -0.5016531 + - -0.91993743 + - 0.32171693 + - -0.97861797 + - -1.0178107 + - -0.7912801 + - -0.09151943 + - 0.43008506 + - -0.06499566 + - -0.527238 + - -0.1610351 + - 0.5656704 + - 0.6107801 + - 0.2658524 + - -0.5011143 + - -0.14535062 + - 0.010322048 + - -0.31582305 + - 0.14074059 + - 0.0735386 + - 0.5122398 + - -0.029892167 + - -0.6779863 + - 0.07279019 + - -1.015837 + - -0.03168201 + - 0.19624129 + - 0.49547663 + - -1.0912275 + - -0.95261824 + - 1.6531065 + - 0.12971008 + - -0.9805314 + - -0.9278009 + - 0.6982666 + - -0.39494884 + - -0.34082565 + - -0.19635068 + - -0.16794546 + - -0.17547582 + - -0.66650796 + - -0.40381774 + - 0.11612825 + - -0.16379057 + - 0.42184204 + - -0.107764095 + - -0.28812653 + - 0.253913 + - -0.29115003 + - 0.018476805 + - 0.21420841 + - -0.098294705 + - 0.5978118 + - -0.1810833 + - 0.39444044 + - -1.0415094 + - -0.5488902 + - 0.31879467 + - 0.59998816 + - -0.70196766 + - 0.27835104 + - -0.19817081 + - 0.7156917 + - -1.3535581 + - 0.069496505 + - -0.09209199 + - -0.48128107 + - 0.46079564 + - 0.99662095 + - 0.11516359 + - -0.7070588 + - -0.20418116 + - -0.08455231 + - -0.9084412 + - -0.32016835 + - -0.6555544 + - 0.17329949 + - 0.2930943 + - 0.31196702 + - -0.45529658 + - 0.5925529 + - -0.22599268 + - 0.09692205 + - 0.86910117 + - -0.1103263 + - 0.070659 + - 0.28252506 + - 0.020858629 + - -0.6138674 + - 0.33792263 + - -0.64226043 + - 0.9441462 + - 0.5114671 + - 0.37084973 + - 0.28121576 + - 0.32238618 + - -0.109533206 + - -0.6837618 + - -0.25998986 + - -0.06932549 + - 0.6872041 + - 0.41273814 + - -0.48280004 + - 0.5155872 + - 1.055783 + - -0.15991671 + - 0.7140948 + - 0.64371055 + - 0.31367597 + - -0.2692004 + - -1.0170095 + - 0.47263706 + - -0.7841394 + - -0.70838845 + - -0.20605408 + - 0.6560086 + - 0.039858647 + - 0.9382809 + - 0.29818508 + - 0.24467355 + - -0.95618063 + - 0.27826777 + - -0.5447142 + - 0.35891432 + - 1.1147388 + - -0.34420982 + - -0.50966895 + - -0.014634789 + - -0.4965168 + - 0.18895917 + - 0.36396387 + - -0.18436912 + - -0.7623922 + - 0.87830603 + - 0.3174972 + - -0.36555716 + - -0.5334701 + - 0.76752776 + - 0.6042617 + - -0.009881655 + - -0.22277743 + - 0.004877448 + - 0.21360268 + - -0.79044574 + - 0.8544991 + - 0.36922306 + - 0.011643817 + - -0.8292771 + - -1.1753708 + - -0.5352029 + - -1.126084 + - -0.06851117 + - -0.051656496 + - 0.62061703 + - -0.15491325 + - -0.09487902 + - 0.41853097 + - 0.49591154 + - -0.43852496 + - -0.054219373 + - 0.56137645 + - -0.38908476 + - 0.42106578 + - 0.09296416 + - -0.19067511 + - 0.3482142 + - 0.46412915 + - -0.7687171 + - -0.112867236 + - -0.35603553 + - 0.6170915 + - -0.15932806 + - -0.30480495 + - 0.25840363 + - -0.38399118 + - 0.59550375 + - -0.018121729 + - -0.075141266 + - -0.59128857 + - 0.66123134 + - 0.26673332 + - 0.73895293 + - -0.054289076 + - -0.54282594 + - -0.22124565 + - 0.118529804 + - -0.2250605 + - 0.42725232 + - -0.68968517 + - -0.2650548 + - -0.46809116 + - 0.25557497 + - -0.07555185 + - 0.72070014 + - -0.4352386 + - 0.31930554 + - 0.27100414 + - -0.06901903 + - -1.6595819 + - -0.042389557 + - -0.63137525 + - 0.7190117 + - 0.14456046 + - -0.35636455 + - -0.1423773 + - 0.7382025 + - 0.5025083 + - 1.3053406 + - -0.76739436 + - 0.696041 + - -0.75323373 + - -0.51944524 + - -0.4124928 + - 1.1454467 + - 0.054611042 + - -0.045644533 + - 0.59706163 + - 0.26378834 + - 0.36002257 + - 1.0681229 + - 0.7941774 + - 0.7098578 + - 0.42243558 + - -0.075039744 + - 0.43036443 + - -0.015357616 + - -12.33601 + - -0.63631696 + - -0.4159095 + - -0.17753081 + - 0.6135913 + - -0.3631662 + - -0.20762756 + - -0.39577118 + - -0.6201598 + - -1.203526 + - -0.72676 + - -0.08179598 + - -0.3887131 + - -0.18548046 + - 0.025935235 + - -0.13214019 + - -0.73362505 + - -0.14145541 + - 0.23491874 + - -0.87200975 + - -0.6150874 + - 0.13430493 + - -1.2201686 + - -0.7526823 + - 0.5849394 + - -0.41065195 + - 0.08522191 + - -0.5608172 + - 0.13985585 + - -0.37943757 + - -1.3579514 + - 0.7647781 + - -0.32459185 + - 0.43617395 + - -0.8730121 + - -0.07808779 + - -0.12808302 + - 0.07552341 + - 0.32986727 + - -0.5909443 + - -1.0570595 + - 0.09782582 + - -1.0090479 + - 0.0489083 + - 0.8414362 + - 0.107847475 + - -0.16699257 + - 0.24272338 + - -0.6974407 + - 1.0199512 + - -0.3548284 + - 0.6588212 + - -0.32406902 + - 0.56458116 + - -0.12879035 + - -0.7011373 + - -0.168996 + - -0.30116636 + - -0.114710525 + - -0.57154125 + - 0.33537614 + - 0.7440126 + - 0.4501821 + - 0.1353792 + - 0.5306287 + - -1.5245491 + - 0.19703312 + - -0.32203045 + - 0.22986314 + - 0.10574753 + - -0.62823385 + - -1.2996671 + - 0.24176486 + - 0.25238246 + - 0.34327742 + - 0.16178484 + - -0.80430204 + - -0.49741912 + - 0.39632398 + - 0.47108006 + - -0.3472895 + - -0.91583204 +- - 0.8800651 + - -0.40473685 + - 0.523446 + - 0.40749577 + - -0.12520565 + - 0.27968585 + - -0.6232283 + - 0.74916285 + - -0.784058 + - 0.26179573 + - 0.8123454 + - -0.5018983 + - -1.1173998 + - -1.2246069 + - 0.714331 + - 0.41282338 + - 0.30010647 + - -0.21945214 + - 0.65692425 + - -1.1683352 + - 0.13448547 + - 0.105830215 + - -0.121610224 + - -0.4298966 + - 0.6545018 + - 0.085414484 + - -0.6689285 + - 0.24618125 + - 0.19773686 + - 0.29794282 + - -0.103362 + - -0.4936831 + - -0.84428465 + - 0.042830534 + - 0.31138977 + - 1.2819722 + - -0.3850271 + - 0.03328193 + - -1.5040666 + - -0.4308614 + - -0.38136438 + - 0.48642734 + - -0.52878296 + - -0.24182248 + - 0.77562344 + - -0.09331275 + - 1.2752773 + - -1.2074003 + - -0.11428678 + - -0.4777792 + - -0.648702 + - -0.36235708 + - 0.118015155 + - -0.59833723 + - -0.19920239 + - 0.54052365 + - 0.7346647 + - -0.722801 + - 0.68477273 + - -0.24051473 + - 0.6694247 + - 0.41956195 + - 0.3418242 + - -0.3947522 + - -0.08054648 + - 0.92225546 + - 0.023008516 + - -0.106311426 + - -0.93029094 + - 1.0433811 + - 0.54019487 + - 0.84004074 + - -0.51640713 + - 1.087203 + - 0.43675047 + - 0.35266113 + - -0.124694675 + - -0.26670298 + - 0.99140024 + - 0.3971227 + - 0.15388015 + - 0.06872106 + - -0.61448324 + - -1.1879375 + - -0.40983373 + - 0.9088325 + - 0.18355982 + - -0.20425542 + - -0.117344946 + - 0.2278921 + - 0.24478674 + - -0.31379557 + - 0.12917669 + - -0.09440002 + - 0.2869758 + - -0.8311031 + - -0.86767745 + - 1.1824796 + - -0.14571416 + - 0.6766318 + - 1.551576 + - 0.5790201 + - -0.20238832 + - -0.10721493 + - 0.45798916 + - 0.050977297 + - -0.17017141 + - -0.20522986 + - -0.78046536 + - -0.1759431 + - 0.92373455 + - 0.18992427 + - -0.4275276 + - -0.07094726 + - -0.024623893 + - 1.2799671 + - -0.08868586 + - -1.0419937 + - -0.7631159 + - -0.3069899 + - -0.94518733 + - -0.16701514 + - -0.22898696 + - -0.06498005 + - 1.0033317 + - -0.7277596 + - -0.43147784 + - 0.39711744 + - -1.5590043 + - 0.05689909 + - 0.24664646 + - -0.32446027 + - 0.44151598 + - -0.25355095 + - -0.44891763 + - 0.7757678 + - -0.047908887 + - 0.35415334 + - 0.7783638 + - 0.07206194 + - -0.6209873 + - -0.064706825 + - -0.5131151 + - -0.14729121 + - -0.20557559 + - -0.90489984 + - 0.285021 + - -0.2770089 + - -0.5227208 + - -0.4600834 + - -0.73453605 + - 0.056623135 + - 0.17695561 + - -0.68127584 + - 0.018160583 + - -0.16204149 + - -0.6721833 + - -0.6155306 + - -0.43845925 + - 0.30877444 + - 0.47335833 + - -0.3391397 + - -0.21436396 + - -0.7734823 + - 0.2662798 + - 0.22166482 + - -0.15445636 + - 0.3192879 + - 0.42869475 + - 0.12639707 + - -0.2022263 + - 1.0199511 + - 1.0459776 + - 0.07484801 + - 0.07331431 + - -0.51051164 + - 0.26499316 + - -0.13195446 + - 0.16539378 + - -0.5812552 + - -0.3506009 + - -0.24784066 + - -0.5920793 + - -0.40089452 + - -0.7874938 + - -0.044779904 + - 0.06469201 + - 0.1785687 + - 0.29832917 + - -0.16131802 + - 0.23045808 + - 0.31642038 + - 0.27589947 + - -0.095055886 + - 0.4131701 + - -0.576398 + - -0.26533726 + - 0.09926523 + - 0.28333306 + - 0.6941334 + - 0.3669644 + - 1.1993675 + - 0.14127722 + - -0.3998645 + - 0.02515579 + - -0.12806362 + - 0.78888106 + - 0.31724566 + - 0.22705042 + - 0.4469775 + - -0.25350732 + - -0.6087367 + - 0.16155379 + - -0.0906578 + - -0.5674608 + - -0.13663997 + - -0.8261571 + - -0.36147815 + - -0.15133369 + - 0.24311908 + - -0.03510722 + - 0.8790888 + - 0.3763337 + - -0.40775055 + - -0.08947575 + - 0.20151624 + - 0.02957442 + - -0.0036952859 + - -0.68816304 + - 0.42017365 + - 0.17074445 + - -0.2993381 + - 1.103356 + - -1.1479523 + - 0.28133875 + - 0.29952466 + - -1.2530351 + - 0.21444985 + - -0.06909197 + - -0.17440125 + - -0.39699674 + - -0.8849615 + - 0.3201974 + - -0.84463394 + - 0.6868777 + - -0.8276947 + - -0.51749104 + - -0.051057726 + - -0.3543451 + - 0.87607384 + - -0.8443427 + - 0.50807846 + - 0.7478562 + - 0.5720608 + - 0.19469205 + - 0.09665793 + - 0.23631865 + - -0.502121 + - 0.04978093 + - 0.3974658 + - -0.4286988 + - 0.35747325 + - 0.7137153 + - -0.67197025 + - -0.53514194 + - 0.7138253 + - -0.50341904 + - 0.26813704 + - 1.1106261 + - 0.05927729 + - -0.80756664 + - -0.41588885 + - -0.26708513 + - -0.7364306 + - 0.047795136 + - -0.3577909 + - -0.042696178 + - 0.38882935 + - -0.47498634 + - -0.49785385 + - -0.18586382 + - -0.07817727 + - -1.1226165 + - -0.28798866 + - 0.2027277 + - 0.90772283 + - -0.24342412 + - 0.9238906 + - -0.26909572 + - 0.58817375 + - -0.39704823 + - -0.74322826 + - 0.04971103 + - 0.27460533 + - -0.021434175 + - 1.0296211 + - 0.7048528 + - 0.77729505 + - -0.109555945 + - 0.30840942 + - 0.40875357 + - -0.07241124 + - 0.25900817 + - -0.48231882 + - 0.95918334 + - 0.37255058 + - -0.81209004 + - -0.20217612 + - 0.73934364 + - 0.6808576 + - 0.12366876 + - 0.7506307 + - -0.84270513 + - 0.6836386 + - -1.1660198 + - -0.502318 + - -0.9399041 + - 0.30987132 + - 0.068369515 + - -0.74972296 + - -0.5685482 + - -0.41147214 + - 0.60222495 + - 1.2008977 + - 0.1092809 + - 0.27945477 + - -0.6628573 + - -0.09702503 + - 0.1480303 + - -0.80740154 + - 0.6764459 + - -0.88270557 + - 0.10915995 + - -0.051345572 + - -0.9701391 + - 0.33861148 + - 0.019933153 + - -0.69870234 + - 0.016139375 + - -0.09314743 + - -0.33416462 + - -0.14529979 + - -0.24896407 + - 0.05556908 + - 0.14081647 + - -0.6094171 + - -0.6381026 + - -0.41648564 + - -0.29526985 + - 1.2994738 + - -0.6202941 + - 0.48607618 + - -0.34318587 + - -0.79894036 + - 0.02920742 + - 0.05758353 + - 0.5709474 + - -0.09656486 + - -0.058698766 + - 0.2728862 + - 0.0747031 + - 0.4955805 + - -1.4485692 + - 0.9360732 + - -0.9224857 + - 0.08691007 + - -0.2762703 + - -0.030357258 + - -0.6478681 + - -0.03302632 + - -0.09089099 + - 0.22709158 + - -0.11466287 + - -0.027268466 + - -0.57601786 + - -1.2508731 + - -0.51524395 + - 0.11320143 + - 0.000099094585 + - 0.16098168 + - 0.28293324 + - 0.3186873 + - 0.083705 + - 0.64592195 + - -0.018887158 + - -0.53423357 + - 0.8561195 + - -0.17982092 + - -0.5360711 + - 0.4599823 + - 0.070754275 + - -0.17305061 + - -0.37476265 + - -0.9296319 + - 0.25320983 + - 0.08145343 + - 0.28309044 + - -0.51987404 + - 0.12702212 + - -0.018091131 + - 1.3146217 + - -0.78381735 + - -0.73206 + - -0.71702933 + - -0.7111754 + - 1.1614348 + - 0.39340252 + - -0.62207216 + - 0.00056058913 + - 0.6379386 + - -0.2749173 + - -0.09149346 + - 0.16468655 + - 0.25299305 + - -0.34951964 + - -0.02040368 + - -0.039761767 + - 0.029018728 + - -0.4483037 + - 1.0506421 + - -0.14373922 + - -1.130224 + - 0.12455168 + - 0.3397598 + - -0.9629895 + - 0.44133732 + - 0.1874733 + - -1.0941112 + - -0.14584783 + - 0.56353015 + - -0.6717787 + - 0.5826194 + - 0.619144 + - -0.18499438 + - -0.6397543 + - -0.42090708 + - -0.46948326 + - 0.4777772 + - -0.0027532429 + - -0.11917022 + - 0.16623026 + - -0.32833764 + - -0.82070494 + - 0.14305224 + - -0.4916302 + - -0.14133473 + - -0.07983794 + - -0.8726616 + - 0.8684152 + - 1.1417887 + - 0.29987866 + - -0.9432098 + - -0.0052786022 + - 0.55154806 + - 1.1087489 + - -0.0035876743 + - -0.86657786 + - -0.08198179 + - 0.8572161 + - 0.6129695 + - -0.30208313 + - 0.07589808 + - -0.4460448 + - 0.24385566 + - 0.54606575 + - -0.43540823 + - -0.59060025 + - 0.15161312 + - -0.6080878 + - 0.29713205 + - -0.5505221 + - 0.2640698 + - 0.7363423 + - 0.26895535 + - -1.637557 + - -0.29109073 + - -0.5575249 + - 0.21624848 + - 0.7101716 + - -0.18558918 + - -0.10314743 + - -0.6802547 + - 0.11960246 + - -1.4328713 + - 0.18004374 + - 0.0050585996 + - 0.7913141 + - 0.3229164 + - 0.06545905 + - -0.331479 + - -0.20003077 + - 0.34326112 + - -0.009829478 + - 0.30286586 + - 0.1334722 + - -0.60862947 + - -1.0856502 + - 0.44432905 + - 0.08377729 + - -0.6404978 + - -0.34495935 + - -0.2752816 + - -0.4134988 + - 0.04811178 + - -0.4889173 + - 0.7125766 + - -0.3053131 + - -0.46561617 + - -0.97106713 + - 0.098068774 + - 0.13248709 + - -0.032243133 + - 1.2133958 + - -0.4469277 + - 0.40468386 + - -0.5168825 + - 0.20247097 + - 0.10678275 + - 0.24746314 + - -0.3533585 + - -0.6242724 + - 0.50429106 + - -0.507319 + - 0.50192505 + - 0.3319158 + - 0.47960228 + - -0.071493894 + - 0.37141597 + - 0.08084738 + - -0.38857698 + - -0.17077047 + - -0.8712793 + - -0.07574639 + - -0.3359121 + - -0.063751414 + - -0.58629346 + - 0.24806741 + - 0.44870922 + - -0.10579243 + - 0.22470091 + - 0.76840454 + - -0.31000882 + - -0.5690646 + - -0.9380978 + - 0.46079808 + - 0.33835545 + - 0.4268955 + - 1.0641383 + - 0.27799854 + - -0.48069987 + - 0.98535377 + - 0.86666155 + - 0.08574592 + - 0.15053321 + - -0.6296835 + - -0.3572129 + - -0.8524498 + - 0.51362705 + - 0.42655772 + - -0.07780942 + - 0.24760371 + - 0.3611292 + - -0.08681503 + - 0.8389932 + - -0.212687 + - 0.35779038 + - -0.2884851 + - 0.2593874 + - -0.6213595 + - -0.7060158 + - -0.5642255 + - 0.63495797 + - -1.0634722 + - -0.3126731 + - 0.2850733 + - -1.1232245 + - 0.2361858 + - -0.55656683 + - 0.90667486 + - 0.12449603 + - -0.004835263 + - 0.6077182 + - 0.041349534 + - -0.35029268 + - -0.086972594 + - 0.74877226 + - 0.34184515 + - -0.75762427 + - -0.43635094 + - -1.0298302 + - -0.50259054 + - 0.09346427 + - 0.43121195 + - 0.3204776 + - -0.6727601 + - -0.37169114 + - 0.29649472 + - 0.6756029 + - 0.11748836 + - -0.06367969 + - -0.43646568 + - -0.5563439 + - 0.06883619 + - 0.5558318 + - -0.7779452 + - -1.0198781 + - -0.5196683 + - 0.103415556 + - -0.32927293 + - -0.3514744 + - -0.4759474 + - 0.026027009 + - 0.49491698 + - 0.09854232 + - 0.10014424 + - -0.4567272 + - -0.78184056 + - 0.0391799 + - -0.7731353 + - -0.06725193 + - 0.09424001 + - 0.7222545 + - 0.57106566 + - -0.495731 + - 0.45272163 + - -0.25338078 + - -0.7262983 + - 0.16609544 + - -0.012378883 + - 1.7117176 + - -1.083159 + - -0.1312727 + - 0.9256949 + - 0.29016802 + - -0.17271532 + - 0.26127613 + - -0.16925699 + - 0.0660253 + - 0.36921492 + - -0.06154181 + - -0.07846107 + - -0.69526803 + - -0.44613382 + - -0.13844001 + - -0.3586148 + - -0.29188922 + - 1.1410713 + - -0.106265604 + - 0.43551373 + - 0.11654586 + - -0.5155016 + - 0.06800692 + - 0.23190036 + - -0.78044236 + - 0.22428566 + - 0.77095073 + - 0.49926817 + - -0.29155394 + - 0.4724273 + - -0.2500728 + - 0.6316376 + - 0.6790967 + - 0.2501961 + - 0.32318127 + - 0.13781005 + - 0.93741596 + - -0.07286456 + - -0.75936526 + - -0.5619639 + - -0.106793 + - 0.47155836 + - 0.40150464 + - -0.58638513 + - 0.3858056 + - 0.09105112 + - -0.2313469 + - 1.0379678 + - 0.06446053 + - -0.44353652 + - 0.08822738 + - -0.062817805 + - 1.0740521 + - -0.3042912 + - -0.16267279 + - -1.2176979 + - 0.16052522 + - -1.0472326 + - 1.174032 + - 0.6501987 + - -0.13840425 + - -0.38722384 + - -0.52688384 + - 0.5573057 + - 0.62095135 + - -0.9659692 + - -0.13061908 + - 0.5060552 + - 1.5152142 + - 0.363692 + - 1.0375987 + - -0.12798701 + - -0.26156592 + - -0.2401982 + - -0.28207913 + - -0.62555575 + - 0.014314145 + - -0.101138026 + - -0.36514693 + - -0.8355496 + - 0.24292615 + - 1.221456 + - -1.4795406 + - 0.6800257 + - 0.5251057 + - 0.09851752 + - -0.23370722 + - -0.47332478 + - -0.64042526 + - 0.15246475 + - -0.69314885 + - -0.6379121 + - -0.5923368 + - 0.07256423 + - 0.674015 + - -0.7815833 + - -0.3230857 + - 0.13288274 + - 0.5314391 + - 0.7502334 + - 0.10242268 + - -0.10466381 + - 0.26986843 + - -0.11427058 + - -0.013317328 + - -0.08406476 + - 0.20040919 + - 0.8658303 + - -0.06929211 + - -0.7217469 + - 0.015165178 + - -1.0304606 + - -0.15150261 + - 0.051943235 + - -0.007573776 + - -0.8556963 + - -1.0569268 + - 1.1189225 + - 0.5528898 + - -0.97371644 + - -0.7730679 + - 0.5487395 + - -0.7372217 + - 0.2442073 + - 0.32140434 + - 0.08762948 + - 0.050782174 + - -0.6520611 + - -0.6009053 + - 0.38778523 + - -0.5067207 + - 0.33327484 + - -0.34019512 + - -0.505983 + - -0.18112777 + - -0.12612125 + - -0.0027991468 + - 0.040184338 + - 0.16245449 + - 0.2747947 + - -0.23785818 + - 0.23616427 + - -0.50610596 + - -0.5670892 + - -0.023741178 + - 0.60696787 + - -0.784465 + - 0.047203846 + - 0.5391748 + - 0.91753834 + - -1.2126231 + - 0.49896127 + - -0.0746772 + - -0.26263434 + - 0.65579545 + - 0.86111754 + - 0.65931064 + - -0.7191947 + - -0.04709469 + - -0.2201913 + - -0.7715727 + - -0.18520755 + - -0.7558789 + - 0.40602255 + - 0.41162813 + - -0.43824765 + - -0.0055894293 + - 0.5239096 + - -0.079514205 + - 0.067529485 + - 0.58722264 + - -0.13070358 + - 0.011627744 + - 0.4134956 + - 0.37708765 + - -0.27539414 + - -0.13622874 + - -0.556533 + - 0.9890969 + - 0.5363322 + - 0.02895701 + - 0.3245123 + - -0.031310182 + - -0.069826424 + - -0.2600289 + - 0.07562669 + - -0.31074727 + - 0.8372756 + - 0.40034473 + - -0.47825736 + - 0.41138542 + - 0.8228555 + - 0.37789005 + - 0.2729347 + - 0.48793328 + - 0.5082844 + - -0.3835076 + - -1.3901656 + - 0.27227122 + - -0.9853436 + - -0.63031137 + - 0.06926874 + - 0.8213961 + - 0.102840066 + - 0.88752663 + - 0.09542564 + - -0.1310773 + - -0.5857971 + - -0.20383656 + - -0.27419454 + - 0.6380799 + - 0.84361196 + - -0.3794551 + - -0.884077 + - -0.24241978 + - -0.4739362 + - 0.37703314 + - -0.1817328 + - 0.060486455 + - -0.61113393 + - 0.6241368 + - 0.28271425 + - -0.27948374 + - -0.45400578 + - 0.7461652 + - 0.72765404 + - 0.06213547 + - -0.14891127 + - 0.016095247 + - 0.1774083 + - -0.88024634 + - 1.2012935 + - 0.32447368 + - -0.36029148 + - -0.55442965 + - -1.0001502 + - -0.8046597 + - -0.8713558 + - -0.27903515 + - -0.04121245 + - 0.5699234 + - -0.31177366 + - 0.3020379 + - 0.568738 + - 0.2990634 + - -0.26881802 + - -0.37358502 + - 0.6128522 + - -0.2263201 + - 0.062700644 + - 0.35586423 + - -0.032412566 + - 0.31495115 + - 0.8078736 + - -0.68056095 + - 0.054899797 + - -0.18156777 + - 0.45049214 + - 0.16984439 + - 0.08520657 + - 0.4125208 + - -0.15633474 + - 0.88561225 + - 0.11248099 + - -0.10745449 + - -0.7566204 + - 0.6660867 + - 0.16477847 + - 0.8526515 + - -0.3228342 + - -0.3327906 + - 0.025245942 + - -0.19945922 + - -0.32262975 + - 0.56371415 + - -0.29612964 + - 0.016979069 + - -0.16513139 + - -0.10566945 + - 0.10281038 + - 0.05706361 + - -0.58202964 + - 0.21888275 + - 0.08332227 + - -0.03078413 + - -1.4846387 + - -0.050530076 + - -0.7909158 + - 0.41177797 + - -0.22865997 + - -0.5408399 + - 0.0052608866 + - 0.7312851 + - 0.62774825 + - 0.79383093 + - -0.41503367 + - 0.8138815 + - -0.90896213 + - -0.46178246 + - -0.62741685 + - 1.2783 + - 0.018759716 + - -0.20741157 + - 0.3960536 + - 0.02956348 + - 0.7747828 + - 0.92132616 + - 0.76873285 + - 0.4506041 + - 0.19014104 + - -0.005695966 + - 0.45164862 + - -0.07583584 + - -12.700058 + - -0.29457274 + - -0.4613849 + - -0.28535593 + - 0.6371914 + - -0.34706274 + - -0.5542098 + - -0.42935824 + - -0.670712 + - -1.222812 + - -0.7845249 + - -0.4424006 + - -0.1551499 + - -0.4025849 + - 0.04880248 + - -0.50990564 + - -0.722869 + - -0.36195678 + - 0.035303213 + - -0.57625926 + - -0.6269734 + - -0.17668208 + - -1.4520371 + - -0.89968574 + - 0.36988086 + - -0.44758734 + - -0.049186073 + - -0.35796106 + - -0.12111239 + - -0.18886214 + - -0.8299559 + - 0.60507846 + - -0.15161079 + - 0.4082643 + - -0.8104443 + - -0.33629924 + - -0.27145484 + - -0.20102814 + - 0.45288482 + - -0.58615553 + - -0.8623683 + - 0.39500457 + - -1.4556677 + - -0.22030479 + - 0.53738797 + - 0.18969257 + - -0.03434015 + - 0.06964837 + - -1.0065744 + - 1.1885514 + - 0.14946035 + - 0.69158554 + - -0.40754768 + - 0.73655164 + - 0.0125303175 + - -0.7389723 + - -0.2378929 + - -0.078111544 + - -0.11177868 + - -0.82109904 + - 0.32613844 + - 0.8839201 + - 0.3029498 + - 0.16071406 + - 0.6955992 + - -1.0704296 + - -0.3833974 + - -0.38234553 + - 0.29217845 + - -0.438688 + - -0.44525552 + - -1.0556138 + - -0.048874766 + - 0.33127153 + - 0.47894695 + - 0.02269695 + - -0.6842054 + - -0.6273409 + - 0.3177571 + - 0.8162936 + - -0.43109125 + - -0.3969032 +- - 0.6949235 + - -0.6422033 + - 0.26080176 + - 0.21370144 + - -0.26583967 + - -0.15176757 + - -0.6716915 + - 0.9128101 + - -0.27014828 + - 0.17179438 + - 0.530934 + - -0.63915896 + - -0.47050035 + - -0.63524085 + - 0.86896783 + - 0.23552364 + - 0.6401963 + - -0.41557077 + - 0.24368492 + - -1.111804 + - 0.123256944 + - 0.15753947 + - -0.27922294 + - -0.49280638 + - 0.6660365 + - -0.3132533 + - -0.37117392 + - 0.36711815 + - 0.09943101 + - -0.010004321 + - -0.37424305 + - -0.51314545 + - -0.44748014 + - 0.07162367 + - 0.46478915 + - 0.9837251 + - 0.18791853 + - 0.19943784 + - -1.2367554 + - 0.025543053 + - -0.3488692 + - 0.42221853 + - -0.41532192 + - -0.015228149 + - 1.3572848 + - 0.0012592397 + - 0.6934087 + - -1.2168683 + - -0.53669363 + - -0.33313495 + - -0.64927053 + - -0.2168847 + - 0.279734 + - -0.649075 + - -0.013128522 + - 0.44916597 + - 0.38773146 + - -0.82764566 + - 0.5958513 + - 0.12051848 + - 0.30265495 + - 0.392415 + - 0.13543579 + - -0.19064826 + - -0.30341774 + - 0.98498565 + - 0.059284795 + - 0.22791702 + - -0.5568297 + - 0.5480566 + - 0.26743966 + - 0.83343416 + - -0.12098248 + - 1.3944318 + - 0.038185544 + - 0.5946052 + - 0.028420825 + - -0.36778778 + - 0.4880827 + - 0.7507366 + - 0.4594835 + - -0.073073715 + - -0.9222098 + - -1.3254483 + - -0.47558397 + - 0.68748564 + - -0.28038523 + - -0.4705764 + - 0.16827723 + - 0.4940072 + - 0.41620955 + - -0.4333915 + - -0.24117698 + - -0.49685004 + - 0.12509927 + - -0.6659648 + - -0.5828209 + - 0.3086142 + - 0.06415072 + - 0.722853 + - 1.4747485 + - 0.55775553 + - 0.18721847 + - 0.08601889 + - 0.6045635 + - -0.1590925 + - -0.16388929 + - -0.44110212 + - -0.74548095 + - -0.03226416 + - 0.5876941 + - 0.14243491 + - -0.023659024 + - 0.19946378 + - -0.17609209 + - 1.1524005 + - 0.03375265 + - -0.65348166 + - -0.9601098 + - -0.35101262 + - -0.6551446 + - 0.098522805 + - -0.38456255 + - 0.13241027 + - 0.7133841 + - -0.3651741 + - -0.024413588 + - 0.1219222 + - -1.9064316 + - 0.3336163 + - 0.28523284 + - -0.6255913 + - 0.7491992 + - -0.6700418 + - 0.12020979 + - 1.0653613 + - -0.38515842 + - 0.14968812 + - 0.97544754 + - -0.12160177 + - -0.42621705 + - -0.48771152 + - -0.7037794 + - -0.09146425 + - 0.06060726 + - -0.69800925 + - 0.6585272 + - -0.5063347 + - -0.777587 + - -0.45026737 + - -0.6509041 + - 0.5933522 + - 0.24588937 + - -0.74197656 + - -0.09731618 + - -0.45631722 + - -0.7448601 + - -0.9042856 + - -0.12052508 + - 0.316565 + - 0.34851602 + - 0.20853439 + - -0.03717594 + - -0.064896286 + - 0.6720512 + - 0.55902183 + - -0.0907539 + - 0.70290077 + - -0.10362681 + - 0.23438996 + - -0.34947762 + - 0.7300347 + - 0.76291394 + - -0.018609025 + - -0.03985427 + - -0.13768333 + - 0.39923033 + - -0.0018933672 + - 0.15266168 + - -0.119071074 + - -0.23311529 + - -0.14630957 + - -0.70009696 + - -0.51117754 + - -0.7148232 + - 0.067057736 + - 0.055091728 + - -0.6884205 + - 0.3735503 + - 0.066015 + - 0.22599065 + - -0.2118629 + - 0.33028394 + - 0.16968532 + - 0.18967615 + - -0.8725273 + - -0.48097482 + - -0.93865603 + - -0.32071945 + - 0.5908672 + - 0.0039856797 + - 0.87202317 + - -0.09710089 + - -0.31693774 + - 0.23188034 + - -0.22225282 + - 1.1954079 + - 0.40013254 + - -0.0430082 + - 0.16202454 + - -0.36241716 + - -0.9322101 + - 0.013948046 + - 0.23963192 + - -0.6237122 + - 0.058845803 + - -0.55614275 + - -0.559117 + - -0.8783956 + - 0.21477802 + - 0.102206916 + - 1.148153 + - 0.3616451 + - -0.29750037 + - -0.027777946 + - 0.3399144 + - -0.4986829 + - -0.03551791 + - -1.0172939 + - 0.40645444 + - 0.41224366 + - -0.41142398 + - 0.99223906 + - -1.7807305 + - 0.006509347 + - -0.032120995 + - -0.91353464 + - 0.0043266225 + - 0.31323668 + - 0.08272133 + - 0.050526988 + - -1.6184821 + - 0.59775466 + - -0.89481264 + - 0.5716294 + - -0.72048706 + - -0.29821396 + - -0.17578474 + - -0.17198594 + - 1.2064302 + - -0.65057963 + - 0.645703 + - 0.5700245 + - -0.1554677 + - 0.5545029 + - -0.23217444 + - 0.3694976 + - 0.19346552 + - 0.08311628 + - 0.11480711 + - -0.1045977 + - 0.24215433 + - 0.90218383 + - -0.24775724 + - -0.43028563 + - 0.67236286 + - -0.74579555 + - 0.15637314 + - 0.7981742 + - 0.14263594 + - -0.80294436 + - 0.020434506 + - -0.26797983 + - -1.0572256 + - -0.48162135 + - -0.24626473 + - -0.14948413 + - 0.48507524 + - -0.38651025 + - -0.8913456 + - 0.18555388 + - 0.1166645 + - -1.3128004 + - -0.20901422 + - -0.04495488 + - 1.2887038 + - -0.56628513 + - 0.92285925 + - 0.15784542 + - 0.6169432 + - -0.4658516 + - -1.5276806 + - -0.43502715 + - 0.1402829 + - 0.21942815 + - 0.9053243 + - 0.3292904 + - 1.2087955 + - 0.18786985 + - 0.5156152 + - 0.0932826 + - -0.38174316 + - 0.47568145 + - -0.4595352 + - 1.0695595 + - 0.40836343 + - -0.83883494 + - -0.1412957 + - 0.91942626 + - 0.4028878 + - -0.6357255 + - 0.4768367 + - -0.5254316 + - 0.45650968 + - -0.98475707 + - -0.64586043 + - -0.93578446 + - 0.023679128 + - -0.084173396 + - -0.8969388 + - -0.16853827 + - -0.5692439 + - 0.058536332 + - 1.1451128 + - 0.3342519 + - 0.18210095 + - -0.55926126 + - -0.24722362 + - -0.2584934 + - -0.43637407 + - 0.684226 + - -0.80982786 + - -0.48699364 + - 0.21133563 + - -0.89535433 + - 0.31928772 + - 0.6982411 + - -0.4760634 + - 0.2801516 + - 0.19233444 + - 0.10856682 + - -0.15322 + - -0.6567265 + - 0.08681497 + - -0.13555029 + - -1.0895557 + - -0.39000008 + - -0.09213007 + - -0.3256351 + - 1.0170313 + - -0.23759635 + - 0.20227002 + - -0.50325435 + - -0.6543908 + - 0.23763293 + - -0.3785282 + - 0.58739173 + - 0.19834046 + - 0.12478739 + - 0.24277331 + - 0.14265421 + - 0.625903 + - -1.2544899 + - 0.64392203 + - -0.526581 + - 0.6206263 + - -0.07027864 + - -0.28204906 + - -0.27136776 + - 0.14701647 + - 0.17606275 + - -0.059941936 + - -0.2361749 + - -0.762297 + - -0.5438713 + - -1.4765294 + - -0.33973554 + - -0.14914043 + - 0.17418462 + - 0.089419894 + - -0.10228851 + - 0.2935394 + - 0.10583447 + - 0.85644317 + - 0.29852316 + - -0.836279 + - 0.5073192 + - -0.59767765 + - -0.25193214 + - -0.0026112774 + - 0.021602651 + - -0.28537884 + - -0.43414825 + - -0.8009444 + - 0.23900956 + - 0.07334363 + - 0.12450386 + - -0.8768319 + - -0.0022119167 + - 0.19563144 + - 1.2808138 + - -0.50290936 + - -0.6685659 + - -0.15096107 + - -1.1185979 + - 1.2727093 + - 0.7698949 + - -0.26425597 + - -0.6014609 + - 0.3387472 + - -0.008763161 + - -0.7915629 + - 0.14144857 + - 0.36669797 + - -0.9095979 + - 0.0023446658 + - 0.1116711 + - 0.1295449 + - -0.14414522 + - 0.39769557 + - -0.51139 + - -1.1892506 + - -0.1535351 + - -0.07545698 + - -0.91740394 + - 0.07342668 + - 0.065125376 + - -0.7791959 + - 0.38778892 + - 0.98804724 + - -0.5026266 + - 0.88550574 + - 0.74475044 + - -0.17489642 + - -0.45551077 + - -0.43037716 + - -0.22141397 + - 0.7367367 + - -0.07780037 + - -0.35294926 + - 0.069864824 + - -0.6345396 + - -1.2252053 + - 0.42338005 + - -0.9543144 + - -0.256979 + - -0.22359842 + - -0.8528677 + - 0.5376015 + - 1.3769372 + - 0.44111267 + - -0.8646317 + - 0.49412197 + - 0.6583616 + - 1.0803382 + - 0.0041143172 + - -0.10803629 + - -0.044912796 + - 0.10092853 + - 0.057925235 + - -0.23664574 + - -0.09836909 + - -0.4226915 + - 0.316231 + - 0.2289709 + - 0.0020655033 + - -0.38273916 + - -0.25969014 + - -0.35241383 + - 0.39721027 + - -0.880642 + - 0.13932693 + - 0.34177125 + - -0.12755212 + - -1.5756234 + - -0.42012277 + - -0.2720021 + - 0.4424378 + - 0.66177523 + - -0.48626575 + - -0.45097497 + - -0.88338256 + - -0.13629459 + - -1.0225899 + - 0.3950908 + - -0.14948472 + - 0.36095026 + - 0.33071047 + - -0.17510797 + - -0.18431644 + - -0.12078396 + - 0.12417997 + - 0.15063046 + - 0.25068745 + - 0.007320794 + - -0.22332183 + - -1.0475175 + - 0.531624 + - 0.15383053 + - -1.0177116 + - -0.44221413 + - 0.3416747 + - -0.08230601 + - -0.06508408 + - -0.8223936 + - 0.63142014 + - 0.07980888 + - -0.4778565 + - -1.0069376 + - 0.5182062 + - -0.14260064 + - 0.006804701 + - 1.0444322 + - -0.84979755 + - 0.15861689 + - -0.20952208 + - 0.52393013 + - 0.15592988 + - 0.29557693 + - 0.09541451 + - -0.68599445 + - 0.32065168 + - -0.8284257 + - 0.45698482 + - 0.92205894 + - 0.3955569 + - -0.31952316 + - 0.7636712 + - -0.41352785 + - -0.36462232 + - -0.08852365 + - -1.0514712 + - 0.122107804 + - -0.18067603 + - -0.13678585 + - -0.36351636 + - -0.28647587 + - 0.59939927 + - -0.1182226 + - 0.3498905 + - 1.093099 + - -0.30794403 + - -0.62058365 + - -0.6726107 + - 0.45803577 + - 0.591366 + - 0.34862128 + - 1.0195107 + - 0.31568193 + - -0.38983494 + - 0.70920885 + - 0.87111735 + - 0.09605573 + - 0.34163326 + - -1.0357059 + - -0.4865852 + - -0.44857082 + - 0.3494267 + - 0.68299824 + - 0.21146065 + - 0.6507022 + - 0.07060719 + - 0.12284468 + - 1.0570812 + - -0.26711884 + - 1.0200566 + - -0.042852733 + - 0.47013143 + - -0.18564768 + - -0.630319 + - 0.31247792 + - 0.53112245 + - -0.56355643 + - 0.43059984 + - 0.21956594 + - -0.7009155 + - 0.45207483 + - -0.7707136 + - 1.0794362 + - 0.316969 + - 0.24521005 + - 0.4125684 + - 0.01010361 + - -0.6049248 + - -0.54479516 + - 0.8126408 + - 0.55358744 + - -0.66110027 + - -0.45311135 + - -0.5532314 + - 0.038011014 + - -0.00021923866 + - 0.40879747 + - 0.72255194 + - -0.719218 + - -0.09220824 + - -0.2945485 + - 0.81573665 + - 0.039225154 + - -0.37974676 + - 0.03823635 + - -0.58161956 + - 0.008362353 + - 0.6432704 + - -0.80733085 + - -1.1857665 + - -0.37348852 + - -0.09593714 + - -0.4592363 + - -0.16075678 + - -0.48127684 + - 0.1391136 + - 0.3995136 + - -0.011845762 + - 0.25534463 + - -0.32901883 + - -0.6059322 + - 0.13159811 + - -0.7040969 + - -0.13363233 + - 0.13476917 + - 0.70481414 + - 0.71557504 + - -0.7512032 + - -0.0037530407 + - -0.22386855 + - -0.40404382 + - -0.18216649 + - -0.31269565 + - 2.1006927 + - -1.157953 + - -0.58738315 + - 0.77033913 + - 0.7064773 + - -0.45849958 + - -0.02171256 + - 0.13853006 + - 0.6345191 + - 0.42043027 + - -0.22393806 + - -0.1733729 + - -0.5251404 + - -0.46274608 + - 0.21114509 + - -0.70269144 + - 0.13981335 + - 1.7421485 + - -0.21336235 + - 0.4777031 + - 0.45793295 + - -0.7466734 + - -0.067622915 + - -0.4348698 + - -1.2768351 + - 0.19935514 + - 0.81946343 + - 0.584727 + - -0.11064118 + - 0.8143766 + - -0.70960116 + - 0.57368404 + - 0.90687186 + - 0.098878846 + - 0.31321594 + - 0.19731507 + - 0.4817902 + - -0.5186723 + - -0.7873084 + - -0.40280783 + - 0.45842233 + - 0.6620044 + - 0.48790488 + - -0.7371779 + - 0.2745421 + - 0.034860343 + - -0.29258907 + - 0.7456544 + - 0.29744074 + - -0.2192117 + - -0.44573343 + - -0.055271305 + - 0.7341615 + - -0.31377286 + - -0.31499454 + - -1.0394391 + - 0.14759606 + - -0.68085873 + - 1.1450796 + - 0.45029712 + - -0.34702417 + - -0.3152488 + - -0.4676454 + - 0.27924708 + - 1.1201403 + - -1.1411572 + - 0.24936916 + - 0.25650638 + - 0.86590916 + - 0.58747184 + - 1.613175 + - 0.038384356 + - -0.4307359 + - -0.45356846 + - -0.3738889 + - -0.39818186 + - -0.13597617 + - 0.23557192 + - 0.09232538 + - -0.37537476 + - 0.014988182 + - 0.86802864 + - -1.0104651 + - 0.65414375 + - 0.83713305 + - 0.04791725 + - -0.50050837 + - -0.5016531 + - -0.91993743 + - 0.32171693 + - -0.97861797 + - -1.0178107 + - -0.7912801 + - -0.09151943 + - 0.43008506 + - -0.06499566 + - -0.527238 + - -0.1610351 + - 0.5656704 + - 0.6107801 + - 0.2658524 + - -0.5011143 + - -0.14535062 + - 0.010322048 + - -0.31582305 + - 0.14074059 + - 0.0735386 + - 0.5122398 + - -0.029892167 + - -0.6779863 + - 0.07279019 + - -1.015837 + - -0.03168201 + - 0.19624129 + - 0.49547663 + - -1.0912275 + - -0.95261824 + - 1.6531065 + - 0.12971008 + - -0.9805314 + - -0.9278009 + - 0.6982666 + - -0.39494884 + - -0.34082565 + - -0.19635068 + - -0.16794546 + - -0.17547582 + - -0.66650796 + - -0.40381774 + - 0.11612825 + - -0.16379057 + - 0.42184204 + - -0.107764095 + - -0.28812653 + - 0.253913 + - -0.29115003 + - 0.018476805 + - 0.21420841 + - -0.098294705 + - 0.5978118 + - -0.1810833 + - 0.39444044 + - -1.0415094 + - -0.5488902 + - 0.31879467 + - 0.59998816 + - -0.70196766 + - 0.27835104 + - -0.19817081 + - 0.7156917 + - -1.3535581 + - 0.069496505 + - -0.09209199 + - -0.48128107 + - 0.46079564 + - 0.99662095 + - 0.11516359 + - -0.7070588 + - -0.20418116 + - -0.08455231 + - -0.9084412 + - -0.32016835 + - -0.6555544 + - 0.17329949 + - 0.2930943 + - 0.31196702 + - -0.45529658 + - 0.5925529 + - -0.22599268 + - 0.09692205 + - 0.86910117 + - -0.1103263 + - 0.070659 + - 0.28252506 + - 0.020858629 + - -0.6138674 + - 0.33792263 + - -0.64226043 + - 0.9441462 + - 0.5114671 + - 0.37084973 + - 0.28121576 + - 0.32238618 + - -0.109533206 + - -0.6837618 + - -0.25998986 + - -0.06932549 + - 0.6872041 + - 0.41273814 + - -0.48280004 + - 0.5155872 + - 1.055783 + - -0.15991671 + - 0.7140948 + - 0.64371055 + - 0.31367597 + - -0.2692004 + - -1.0170095 + - 0.47263706 + - -0.7841394 + - -0.70838845 + - -0.20605408 + - 0.6560086 + - 0.039858647 + - 0.9382809 + - 0.29818508 + - 0.24467355 + - -0.95618063 + - 0.27826777 + - -0.5447142 + - 0.35891432 + - 1.1147388 + - -0.34420982 + - -0.50966895 + - -0.014634789 + - -0.4965168 + - 0.18895917 + - 0.36396387 + - -0.18436912 + - -0.7623922 + - 0.87830603 + - 0.3174972 + - -0.36555716 + - -0.5334701 + - 0.76752776 + - 0.6042617 + - -0.009881655 + - -0.22277743 + - 0.004877448 + - 0.21360268 + - -0.79044574 + - 0.8544991 + - 0.36922306 + - 0.011643817 + - -0.8292771 + - -1.1753708 + - -0.5352029 + - -1.126084 + - -0.06851117 + - -0.051656496 + - 0.62061703 + - -0.15491325 + - -0.09487902 + - 0.41853097 + - 0.49591154 + - -0.43852496 + - -0.054219373 + - 0.56137645 + - -0.38908476 + - 0.42106578 + - 0.09296416 + - -0.19067511 + - 0.3482142 + - 0.46412915 + - -0.7687171 + - -0.112867236 + - -0.35603553 + - 0.6170915 + - -0.15932806 + - -0.30480495 + - 0.25840363 + - -0.38399118 + - 0.59550375 + - -0.018121729 + - -0.075141266 + - -0.59128857 + - 0.66123134 + - 0.26673332 + - 0.73895293 + - -0.054289076 + - -0.54282594 + - -0.22124565 + - 0.118529804 + - -0.2250605 + - 0.42725232 + - -0.68968517 + - -0.2650548 + - -0.46809116 + - 0.25557497 + - -0.07555185 + - 0.72070014 + - -0.4352386 + - 0.31930554 + - 0.27100414 + - -0.06901903 + - -1.6595819 + - -0.042389557 + - -0.63137525 + - 0.7190117 + - 0.14456046 + - -0.35636455 + - -0.1423773 + - 0.7382025 + - 0.5025083 + - 1.3053406 + - -0.76739436 + - 0.696041 + - -0.75323373 + - -0.51944524 + - -0.4124928 + - 1.1454467 + - 0.054611042 + - -0.045644533 + - 0.59706163 + - 0.26378834 + - 0.36002257 + - 1.0681229 + - 0.7941774 + - 0.7098578 + - 0.42243558 + - -0.075039744 + - 0.43036443 + - -0.015357616 + - -12.33601 + - -0.63631696 + - -0.4159095 + - -0.17753081 + - 0.6135913 + - -0.3631662 + - -0.20762756 + - -0.39577118 + - -0.6201598 + - -1.203526 + - -0.72676 + - -0.08179598 + - -0.3887131 + - -0.18548046 + - 0.025935235 + - -0.13214019 + - -0.73362505 + - -0.14145541 + - 0.23491874 + - -0.87200975 + - -0.6150874 + - 0.13430493 + - -1.2201686 + - -0.7526823 + - 0.5849394 + - -0.41065195 + - 0.08522191 + - -0.5608172 + - 0.13985585 + - -0.37943757 + - -1.3579514 + - 0.7647781 + - -0.32459185 + - 0.43617395 + - -0.8730121 + - -0.07808779 + - -0.12808302 + - 0.07552341 + - 0.32986727 + - -0.5909443 + - -1.0570595 + - 0.09782582 + - -1.0090479 + - 0.0489083 + - 0.8414362 + - 0.107847475 + - -0.16699257 + - 0.24272338 + - -0.6974407 + - 1.0199512 + - -0.3548284 + - 0.6588212 + - -0.32406902 + - 0.56458116 + - -0.12879035 + - -0.7011373 + - -0.168996 + - -0.30116636 + - -0.114710525 + - -0.57154125 + - 0.33537614 + - 0.7440126 + - 0.4501821 + - 0.1353792 + - 0.5306287 + - -1.5245491 + - 0.19703312 + - -0.32203045 + - 0.22986314 + - 0.10574753 + - -0.62823385 + - -1.2996671 + - 0.24176486 + - 0.25238246 + - 0.34327742 + - 0.16178484 + - -0.80430204 + - -0.49741912 + - 0.39632398 + - 0.47108006 + - -0.3472895 + - -0.91583204 diff --git a/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_single.snap b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_single.snap new file mode 100644 index 00000000..e926d959 --- /dev/null +++ b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_default_dense_single.snap @@ -0,0 +1,1028 @@ +--- +source: backends/candle/tests/test_dense.rs +expression: embeddings_single +--- +- - 0.6949235 + - -0.6422033 + - 0.26080176 + - 0.21370144 + - -0.26583967 + - -0.15176757 + - -0.6716915 + - 0.9128101 + - -0.27014828 + - 0.17179438 + - 0.530934 + - -0.63915896 + - -0.47050035 + - -0.63524085 + - 0.86896783 + - 0.23552364 + - 0.6401963 + - -0.41557077 + - 0.24368492 + - -1.111804 + - 0.123256944 + - 0.15753947 + - -0.27922294 + - -0.49280638 + - 0.6660365 + - -0.3132533 + - -0.37117392 + - 0.36711815 + - 0.09943101 + - -0.010004321 + - -0.37424305 + - -0.51314545 + - -0.44748014 + - 0.07162367 + - 0.46478915 + - 0.9837251 + - 0.18791853 + - 0.19943784 + - -1.2367554 + - 0.025543053 + - -0.3488692 + - 0.42221853 + - -0.41532192 + - -0.015228149 + - 1.3572848 + - 0.0012592397 + - 0.6934087 + - -1.2168683 + - -0.53669363 + - -0.33313495 + - -0.64927053 + - -0.2168847 + - 0.279734 + - -0.649075 + - -0.013128522 + - 0.44916597 + - 0.38773146 + - -0.82764566 + - 0.5958513 + - 0.12051848 + - 0.30265495 + - 0.392415 + - 0.13543579 + - -0.19064826 + - -0.30341774 + - 0.98498565 + - 0.059284795 + - 0.22791702 + - -0.5568297 + - 0.5480566 + - 0.26743966 + - 0.83343416 + - -0.12098248 + - 1.3944318 + - 0.038185544 + - 0.5946052 + - 0.028420825 + - -0.36778778 + - 0.4880827 + - 0.7507366 + - 0.4594835 + - -0.073073715 + - -0.9222098 + - -1.3254483 + - -0.47558397 + - 0.68748564 + - -0.28038523 + - -0.4705764 + - 0.16827723 + - 0.4940072 + - 0.41620955 + - -0.4333915 + - -0.24117698 + - -0.49685004 + - 0.12509927 + - -0.6659648 + - -0.5828209 + - 0.3086142 + - 0.06415072 + - 0.722853 + - 1.4747485 + - 0.55775553 + - 0.18721847 + - 0.08601889 + - 0.6045635 + - -0.1590925 + - -0.16388929 + - -0.44110212 + - -0.74548095 + - -0.03226416 + - 0.5876941 + - 0.14243491 + - -0.023659024 + - 0.19946378 + - -0.17609209 + - 1.1524005 + - 0.03375265 + - -0.65348166 + - -0.9601098 + - -0.35101262 + - -0.6551446 + - 0.098522805 + - -0.38456255 + - 0.13241027 + - 0.7133841 + - -0.3651741 + - -0.024413588 + - 0.1219222 + - -1.9064316 + - 0.3336163 + - 0.28523284 + - -0.6255913 + - 0.7491992 + - -0.6700418 + - 0.12020979 + - 1.0653613 + - -0.38515842 + - 0.14968812 + - 0.97544754 + - -0.12160177 + - -0.42621705 + - -0.48771152 + - -0.7037794 + - -0.09146425 + - 0.06060726 + - -0.69800925 + - 0.6585272 + - -0.5063347 + - -0.777587 + - -0.45026737 + - -0.6509041 + - 0.5933522 + - 0.24588937 + - -0.74197656 + - -0.09731618 + - -0.45631722 + - -0.7448601 + - -0.9042856 + - -0.12052508 + - 0.316565 + - 0.34851602 + - 0.20853439 + - -0.03717594 + - -0.064896286 + - 0.6720512 + - 0.55902183 + - -0.0907539 + - 0.70290077 + - -0.10362681 + - 0.23438996 + - -0.34947762 + - 0.7300347 + - 0.76291394 + - -0.018609025 + - -0.03985427 + - -0.13768333 + - 0.39923033 + - -0.0018933672 + - 0.15266168 + - -0.119071074 + - -0.23311529 + - -0.14630957 + - -0.70009696 + - -0.51117754 + - -0.7148232 + - 0.067057736 + - 0.055091728 + - -0.6884205 + - 0.3735503 + - 0.066015 + - 0.22599065 + - -0.2118629 + - 0.33028394 + - 0.16968532 + - 0.18967615 + - -0.8725273 + - -0.48097482 + - -0.93865603 + - -0.32071945 + - 0.5908672 + - 0.0039856797 + - 0.87202317 + - -0.09710089 + - -0.31693774 + - 0.23188034 + - -0.22225282 + - 1.1954079 + - 0.40013254 + - -0.0430082 + - 0.16202454 + - -0.36241716 + - -0.9322101 + - 0.013948046 + - 0.23963192 + - -0.6237122 + - 0.058845803 + - -0.55614275 + - -0.559117 + - -0.8783956 + - 0.21477802 + - 0.102206916 + - 1.148153 + - 0.3616451 + - -0.29750037 + - -0.027777946 + - 0.3399144 + - -0.4986829 + - -0.03551791 + - -1.0172939 + - 0.40645444 + - 0.41224366 + - -0.41142398 + - 0.99223906 + - -1.7807305 + - 0.006509347 + - -0.032120995 + - -0.91353464 + - 0.0043266225 + - 0.31323668 + - 0.08272133 + - 0.050526988 + - -1.6184821 + - 0.59775466 + - -0.89481264 + - 0.5716294 + - -0.72048706 + - -0.29821396 + - -0.17578474 + - -0.17198594 + - 1.2064302 + - -0.65057963 + - 0.645703 + - 0.5700245 + - -0.1554677 + - 0.5545029 + - -0.23217444 + - 0.3694976 + - 0.19346552 + - 0.08311628 + - 0.11480711 + - -0.1045977 + - 0.24215433 + - 0.90218383 + - -0.24775724 + - -0.43028563 + - 0.67236286 + - -0.74579555 + - 0.15637314 + - 0.7981742 + - 0.14263594 + - -0.80294436 + - 0.020434506 + - -0.26797983 + - -1.0572256 + - -0.48162135 + - -0.24626473 + - -0.14948413 + - 0.48507524 + - -0.38651025 + - -0.8913456 + - 0.18555388 + - 0.1166645 + - -1.3128004 + - -0.20901422 + - -0.04495488 + - 1.2887038 + - -0.56628513 + - 0.92285925 + - 0.15784542 + - 0.6169432 + - -0.4658516 + - -1.5276806 + - -0.43502715 + - 0.1402829 + - 0.21942815 + - 0.9053243 + - 0.3292904 + - 1.2087955 + - 0.18786985 + - 0.5156152 + - 0.0932826 + - -0.38174316 + - 0.47568145 + - -0.4595352 + - 1.0695595 + - 0.40836343 + - -0.83883494 + - -0.1412957 + - 0.91942626 + - 0.4028878 + - -0.6357255 + - 0.4768367 + - -0.5254316 + - 0.45650968 + - -0.98475707 + - -0.64586043 + - -0.93578446 + - 0.023679128 + - -0.084173396 + - -0.8969388 + - -0.16853827 + - -0.5692439 + - 0.058536332 + - 1.1451128 + - 0.3342519 + - 0.18210095 + - -0.55926126 + - -0.24722362 + - -0.2584934 + - -0.43637407 + - 0.684226 + - -0.80982786 + - -0.48699364 + - 0.21133563 + - -0.89535433 + - 0.31928772 + - 0.6982411 + - -0.4760634 + - 0.2801516 + - 0.19233444 + - 0.10856682 + - -0.15322 + - -0.6567265 + - 0.08681497 + - -0.13555029 + - -1.0895557 + - -0.39000008 + - -0.09213007 + - -0.3256351 + - 1.0170313 + - -0.23759635 + - 0.20227002 + - -0.50325435 + - -0.6543908 + - 0.23763293 + - -0.3785282 + - 0.58739173 + - 0.19834046 + - 0.12478739 + - 0.24277331 + - 0.14265421 + - 0.625903 + - -1.2544899 + - 0.64392203 + - -0.526581 + - 0.6206263 + - -0.07027864 + - -0.28204906 + - -0.27136776 + - 0.14701647 + - 0.17606275 + - -0.059941936 + - -0.2361749 + - -0.762297 + - -0.5438713 + - -1.4765294 + - -0.33973554 + - -0.14914043 + - 0.17418462 + - 0.089419894 + - -0.10228851 + - 0.2935394 + - 0.10583447 + - 0.85644317 + - 0.29852316 + - -0.836279 + - 0.5073192 + - -0.59767765 + - -0.25193214 + - -0.0026112774 + - 0.021602651 + - -0.28537884 + - -0.43414825 + - -0.8009444 + - 0.23900956 + - 0.07334363 + - 0.12450386 + - -0.8768319 + - -0.0022119167 + - 0.19563144 + - 1.2808138 + - -0.50290936 + - -0.6685659 + - -0.15096107 + - -1.1185979 + - 1.2727093 + - 0.7698949 + - -0.26425597 + - -0.6014609 + - 0.3387472 + - -0.008763161 + - -0.7915629 + - 0.14144857 + - 0.36669797 + - -0.9095979 + - 0.0023446658 + - 0.1116711 + - 0.1295449 + - -0.14414522 + - 0.39769557 + - -0.51139 + - -1.1892506 + - -0.1535351 + - -0.07545698 + - -0.91740394 + - 0.07342668 + - 0.065125376 + - -0.7791959 + - 0.38778892 + - 0.98804724 + - -0.5026266 + - 0.88550574 + - 0.74475044 + - -0.17489642 + - -0.45551077 + - -0.43037716 + - -0.22141397 + - 0.7367367 + - -0.07780037 + - -0.35294926 + - 0.069864824 + - -0.6345396 + - -1.2252053 + - 0.42338005 + - -0.9543144 + - -0.256979 + - -0.22359842 + - -0.8528677 + - 0.5376015 + - 1.3769372 + - 0.44111267 + - -0.8646317 + - 0.49412197 + - 0.6583616 + - 1.0803382 + - 0.0041143172 + - -0.10803629 + - -0.044912796 + - 0.10092853 + - 0.057925235 + - -0.23664574 + - -0.09836909 + - -0.4226915 + - 0.316231 + - 0.2289709 + - 0.0020655033 + - -0.38273916 + - -0.25969014 + - -0.35241383 + - 0.39721027 + - -0.880642 + - 0.13932693 + - 0.34177125 + - -0.12755212 + - -1.5756234 + - -0.42012277 + - -0.2720021 + - 0.4424378 + - 0.66177523 + - -0.48626575 + - -0.45097497 + - -0.88338256 + - -0.13629459 + - -1.0225899 + - 0.3950908 + - -0.14948472 + - 0.36095026 + - 0.33071047 + - -0.17510797 + - -0.18431644 + - -0.12078396 + - 0.12417997 + - 0.15063046 + - 0.25068745 + - 0.007320794 + - -0.22332183 + - -1.0475175 + - 0.531624 + - 0.15383053 + - -1.0177116 + - -0.44221413 + - 0.3416747 + - -0.08230601 + - -0.06508408 + - -0.8223936 + - 0.63142014 + - 0.07980888 + - -0.4778565 + - -1.0069376 + - 0.5182062 + - -0.14260064 + - 0.006804701 + - 1.0444322 + - -0.84979755 + - 0.15861689 + - -0.20952208 + - 0.52393013 + - 0.15592988 + - 0.29557693 + - 0.09541451 + - -0.68599445 + - 0.32065168 + - -0.8284257 + - 0.45698482 + - 0.92205894 + - 0.3955569 + - -0.31952316 + - 0.7636712 + - -0.41352785 + - -0.36462232 + - -0.08852365 + - -1.0514712 + - 0.122107804 + - -0.18067603 + - -0.13678585 + - -0.36351636 + - -0.28647587 + - 0.59939927 + - -0.1182226 + - 0.3498905 + - 1.093099 + - -0.30794403 + - -0.62058365 + - -0.6726107 + - 0.45803577 + - 0.591366 + - 0.34862128 + - 1.0195107 + - 0.31568193 + - -0.38983494 + - 0.70920885 + - 0.87111735 + - 0.09605573 + - 0.34163326 + - -1.0357059 + - -0.4865852 + - -0.44857082 + - 0.3494267 + - 0.68299824 + - 0.21146065 + - 0.6507022 + - 0.07060719 + - 0.12284468 + - 1.0570812 + - -0.26711884 + - 1.0200566 + - -0.042852733 + - 0.47013143 + - -0.18564768 + - -0.630319 + - 0.31247792 + - 0.53112245 + - -0.56355643 + - 0.43059984 + - 0.21956594 + - -0.7009155 + - 0.45207483 + - -0.7707136 + - 1.0794362 + - 0.316969 + - 0.24521005 + - 0.4125684 + - 0.01010361 + - -0.6049248 + - -0.54479516 + - 0.8126408 + - 0.55358744 + - -0.66110027 + - -0.45311135 + - -0.5532314 + - 0.038011014 + - -0.00021923866 + - 0.40879747 + - 0.72255194 + - -0.719218 + - -0.09220824 + - -0.2945485 + - 0.81573665 + - 0.039225154 + - -0.37974676 + - 0.03823635 + - -0.58161956 + - 0.008362353 + - 0.6432704 + - -0.80733085 + - -1.1857665 + - -0.37348852 + - -0.09593714 + - -0.4592363 + - -0.16075678 + - -0.48127684 + - 0.1391136 + - 0.3995136 + - -0.011845762 + - 0.25534463 + - -0.32901883 + - -0.6059322 + - 0.13159811 + - -0.7040969 + - -0.13363233 + - 0.13476917 + - 0.70481414 + - 0.71557504 + - -0.7512032 + - -0.0037530407 + - -0.22386855 + - -0.40404382 + - -0.18216649 + - -0.31269565 + - 2.1006927 + - -1.157953 + - -0.58738315 + - 0.77033913 + - 0.7064773 + - -0.45849958 + - -0.02171256 + - 0.13853006 + - 0.6345191 + - 0.42043027 + - -0.22393806 + - -0.1733729 + - -0.5251404 + - -0.46274608 + - 0.21114509 + - -0.70269144 + - 0.13981335 + - 1.7421485 + - -0.21336235 + - 0.4777031 + - 0.45793295 + - -0.7466734 + - -0.067622915 + - -0.4348698 + - -1.2768351 + - 0.19935514 + - 0.81946343 + - 0.584727 + - -0.11064118 + - 0.8143766 + - -0.70960116 + - 0.57368404 + - 0.90687186 + - 0.098878846 + - 0.31321594 + - 0.19731507 + - 0.4817902 + - -0.5186723 + - -0.7873084 + - -0.40280783 + - 0.45842233 + - 0.6620044 + - 0.48790488 + - -0.7371779 + - 0.2745421 + - 0.034860343 + - -0.29258907 + - 0.7456544 + - 0.29744074 + - -0.2192117 + - -0.44573343 + - -0.055271305 + - 0.7341615 + - -0.31377286 + - -0.31499454 + - -1.0394391 + - 0.14759606 + - -0.68085873 + - 1.1450796 + - 0.45029712 + - -0.34702417 + - -0.3152488 + - -0.4676454 + - 0.27924708 + - 1.1201403 + - -1.1411572 + - 0.24936916 + - 0.25650638 + - 0.86590916 + - 0.58747184 + - 1.613175 + - 0.038384356 + - -0.4307359 + - -0.45356846 + - -0.3738889 + - -0.39818186 + - -0.13597617 + - 0.23557192 + - 0.09232538 + - -0.37537476 + - 0.014988182 + - 0.86802864 + - -1.0104651 + - 0.65414375 + - 0.83713305 + - 0.04791725 + - -0.50050837 + - -0.5016531 + - -0.91993743 + - 0.32171693 + - -0.97861797 + - -1.0178107 + - -0.7912801 + - -0.09151943 + - 0.43008506 + - -0.06499566 + - -0.527238 + - -0.1610351 + - 0.5656704 + - 0.6107801 + - 0.2658524 + - -0.5011143 + - -0.14535062 + - 0.010322048 + - -0.31582305 + - 0.14074059 + - 0.0735386 + - 0.5122398 + - -0.029892167 + - -0.6779863 + - 0.07279019 + - -1.015837 + - -0.03168201 + - 0.19624129 + - 0.49547663 + - -1.0912275 + - -0.95261824 + - 1.6531065 + - 0.12971008 + - -0.9805314 + - -0.9278009 + - 0.6982666 + - -0.39494884 + - -0.34082565 + - -0.19635068 + - -0.16794546 + - -0.17547582 + - -0.66650796 + - -0.40381774 + - 0.11612825 + - -0.16379057 + - 0.42184204 + - -0.107764095 + - -0.28812653 + - 0.253913 + - -0.29115003 + - 0.018476805 + - 0.21420841 + - -0.098294705 + - 0.5978118 + - -0.1810833 + - 0.39444044 + - -1.0415094 + - -0.5488902 + - 0.31879467 + - 0.59998816 + - -0.70196766 + - 0.27835104 + - -0.19817081 + - 0.7156917 + - -1.3535581 + - 0.069496505 + - -0.09209199 + - -0.48128107 + - 0.46079564 + - 0.99662095 + - 0.11516359 + - -0.7070588 + - -0.20418116 + - -0.08455231 + - -0.9084412 + - -0.32016835 + - -0.6555544 + - 0.17329949 + - 0.2930943 + - 0.31196702 + - -0.45529658 + - 0.5925529 + - -0.22599268 + - 0.09692205 + - 0.86910117 + - -0.1103263 + - 0.070659 + - 0.28252506 + - 0.020858629 + - -0.6138674 + - 0.33792263 + - -0.64226043 + - 0.9441462 + - 0.5114671 + - 0.37084973 + - 0.28121576 + - 0.32238618 + - -0.109533206 + - -0.6837618 + - -0.25998986 + - -0.06932549 + - 0.6872041 + - 0.41273814 + - -0.48280004 + - 0.5155872 + - 1.055783 + - -0.15991671 + - 0.7140948 + - 0.64371055 + - 0.31367597 + - -0.2692004 + - -1.0170095 + - 0.47263706 + - -0.7841394 + - -0.70838845 + - -0.20605408 + - 0.6560086 + - 0.039858647 + - 0.9382809 + - 0.29818508 + - 0.24467355 + - -0.95618063 + - 0.27826777 + - -0.5447142 + - 0.35891432 + - 1.1147388 + - -0.34420982 + - -0.50966895 + - -0.014634789 + - -0.4965168 + - 0.18895917 + - 0.36396387 + - -0.18436912 + - -0.7623922 + - 0.87830603 + - 0.3174972 + - -0.36555716 + - -0.5334701 + - 0.76752776 + - 0.6042617 + - -0.009881655 + - -0.22277743 + - 0.004877448 + - 0.21360268 + - -0.79044574 + - 0.8544991 + - 0.36922306 + - 0.011643817 + - -0.8292771 + - -1.1753708 + - -0.5352029 + - -1.126084 + - -0.06851117 + - -0.051656496 + - 0.62061703 + - -0.15491325 + - -0.09487902 + - 0.41853097 + - 0.49591154 + - -0.43852496 + - -0.054219373 + - 0.56137645 + - -0.38908476 + - 0.42106578 + - 0.09296416 + - -0.19067511 + - 0.3482142 + - 0.46412915 + - -0.7687171 + - -0.112867236 + - -0.35603553 + - 0.6170915 + - -0.15932806 + - -0.30480495 + - 0.25840363 + - -0.38399118 + - 0.59550375 + - -0.018121729 + - -0.075141266 + - -0.59128857 + - 0.66123134 + - 0.26673332 + - 0.73895293 + - -0.054289076 + - -0.54282594 + - -0.22124565 + - 0.118529804 + - -0.2250605 + - 0.42725232 + - -0.68968517 + - -0.2650548 + - -0.46809116 + - 0.25557497 + - -0.07555185 + - 0.72070014 + - -0.4352386 + - 0.31930554 + - 0.27100414 + - -0.06901903 + - -1.6595819 + - -0.042389557 + - -0.63137525 + - 0.7190117 + - 0.14456046 + - -0.35636455 + - -0.1423773 + - 0.7382025 + - 0.5025083 + - 1.3053406 + - -0.76739436 + - 0.696041 + - -0.75323373 + - -0.51944524 + - -0.4124928 + - 1.1454467 + - 0.054611042 + - -0.045644533 + - 0.59706163 + - 0.26378834 + - 0.36002257 + - 1.0681229 + - 0.7941774 + - 0.7098578 + - 0.42243558 + - -0.075039744 + - 0.43036443 + - -0.015357616 + - -12.33601 + - -0.63631696 + - -0.4159095 + - -0.17753081 + - 0.6135913 + - -0.3631662 + - -0.20762756 + - -0.39577118 + - -0.6201598 + - -1.203526 + - -0.72676 + - -0.08179598 + - -0.3887131 + - -0.18548046 + - 0.025935235 + - -0.13214019 + - -0.73362505 + - -0.14145541 + - 0.23491874 + - -0.87200975 + - -0.6150874 + - 0.13430493 + - -1.2201686 + - -0.7526823 + - 0.5849394 + - -0.41065195 + - 0.08522191 + - -0.5608172 + - 0.13985585 + - -0.37943757 + - -1.3579514 + - 0.7647781 + - -0.32459185 + - 0.43617395 + - -0.8730121 + - -0.07808779 + - -0.12808302 + - 0.07552341 + - 0.32986727 + - -0.5909443 + - -1.0570595 + - 0.09782582 + - -1.0090479 + - 0.0489083 + - 0.8414362 + - 0.107847475 + - -0.16699257 + - 0.24272338 + - -0.6974407 + - 1.0199512 + - -0.3548284 + - 0.6588212 + - -0.32406902 + - 0.56458116 + - -0.12879035 + - -0.7011373 + - -0.168996 + - -0.30116636 + - -0.114710525 + - -0.57154125 + - 0.33537614 + - 0.7440126 + - 0.4501821 + - 0.1353792 + - 0.5306287 + - -1.5245491 + - 0.19703312 + - -0.32203045 + - 0.22986314 + - 0.10574753 + - -0.62823385 + - -1.2996671 + - 0.24176486 + - 0.25238246 + - 0.34327742 + - 0.16178484 + - -0.80430204 + - -0.49741912 + - 0.39632398 + - 0.47108006 + - -0.3472895 + - -0.91583204 diff --git a/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_batch.snap b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_batch.snap new file mode 100644 index 00000000..7711cade --- /dev/null +++ b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_batch.snap @@ -0,0 +1,3076 @@ +--- +source: backends/candle/tests/test_dense.rs +expression: embeddings_batch +--- +- - -0.0014278395 + - 0.8564985 + - -0.56371284 + - -0.077162296 + - -1.3959801 + - 0.16868848 + - -0.0066606 + - -0.6935729 + - 0.7680596 + - -0.6885326 + - -0.7315665 + - 0.014762384 + - -0.07408829 + - -0.3171738 + - -0.45775723 + - -0.027198305 + - -0.31797674 + - 0.03447124 + - 0.26349705 + - -0.06770613 + - 0.22211355 + - -0.9706444 + - -0.20075502 + - -0.12733698 + - 0.4475564 + - -0.818189 + - -0.6589402 + - -0.80664897 + - -0.012445061 + - -0.299875 + - 0.8037751 + - 0.783486 + - -0.38686854 + - -0.8345378 + - 0.8456293 + - 0.060641773 + - -0.46693698 + - -0.75975704 + - -0.09569474 + - -0.43195814 + - -0.01045849 + - 1.4152633 + - 0.9630803 + - -0.3017511 + - -0.14166762 + - -0.5705037 + - 0.35540068 + - 0.30885217 + - -0.88800746 + - -0.41909313 + - 0.6866201 + - 0.22648033 + - -0.72892725 + - 0.21320158 + - 0.2854965 + - 0.24561587 + - -0.8959556 + - 0.5374439 + - 0.14885251 + - 0.16370402 + - 0.6889201 + - -0.52156854 + - 0.33412343 + - -0.5404771 + - 0.15279087 + - 1.0543426 + - -0.11641638 + - -0.22767082 + - 1.377584 + - 0.027651407 + - 0.013030482 + - 0.20004138 + - -1.4621748 + - -0.14566255 + - -0.8173601 + - 0.591269 + - -1.1070398 + - 0.39385313 + - 0.31373537 + - -0.6870262 + - -0.89926064 + - 1.0040805 + - 0.11994316 + - 1.2938809 + - -0.7388344 + - -0.68136215 + - -0.86092305 + - 0.17545614 + - -0.58350056 + - -0.24131991 + - 0.12882261 + - -0.29347694 + - -0.32107985 + - 0.7990383 + - 0.36803582 + - 0.22783057 + - 0.9452963 + - -0.29409137 + - -0.07162706 + - 0.7913012 + - -0.55161756 + - -0.38355213 + - 0.8577158 + - -0.6636874 + - -0.07505204 + - -0.028936006 + - 0.9943232 + - 0.88959944 + - -1.169181 + - 0.73296547 + - -0.239582 + - 1.1228241 + - 0.58872235 + - 0.5515939 + - -0.36207163 + - -1.0991017 + - -0.52109545 + - 0.05784373 + - 0.87615824 + - 0.23666331 + - 0.42431742 + - 0.32302937 + - 1.1064777 + - 0.38801908 + - -0.00650528 + - 1.4773686 + - 0.16791047 + - 0.10159061 + - 0.68253374 + - 0.6175261 + - 0.7408156 + - -0.86656404 + - 0.33377638 + - -0.3010463 + - -0.7296269 + - 0.105238736 + - -0.67472655 + - 1.2878289 + - -0.17186594 + - 0.3153095 + - -0.5765154 + - 0.20147346 + - -0.30400264 + - 1.0234276 + - -0.3370074 + - -0.2715305 + - -0.893636 + - -0.19322965 + - 0.025298197 + - 1.2759744 + - -0.3712418 + - 0.85969675 + - 0.8329356 + - 1.4318267 + - -0.9729594 + - 0.49634743 + - -0.008301608 + - -0.54760796 + - -1.1277554 + - -0.19990917 + - -0.09330505 + - -0.35682315 + - 0.5995969 + - -0.037311852 + - 0.54742575 + - -0.54079187 + - 0.92537194 + - -0.9461359 + - -1.2782127 + - -0.22866292 + - 0.31703445 + - 0.78213525 + - 1.84047 + - 1.3421893 + - 1.9887264 + - 0.052081026 + - 0.48948333 + - 0.2885021 + - 0.93934333 + - 0.58454853 + - -0.7747212 + - 0.19905978 + - 0.16807169 + - 0.6157373 + - 0.49593142 + - -0.60833687 + - 0.5455237 + - 0.69138116 + - 0.30746645 + - 0.3586419 + - 0.40374193 + - -0.69705904 + - -0.71801114 + - 1.1580749 + - -0.45524 + - -0.021989208 + - 0.40167862 + - -0.583871 + - 0.45318186 + - -0.49028802 + - -0.023927156 + - -0.70435584 + - -0.032907344 + - 1.4243655 + - -1.7540915 + - -0.046573117 + - -0.43008068 + - 0.19698568 + - -0.61650586 + - -0.74180025 + - -0.04461632 + - -0.7405187 + - 0.61665416 + - 1.0764165 + - 0.2594155 + - -0.42819247 + - -0.57580024 + - 0.2654174 + - -1.954933 + - -0.035195757 + - 0.7092524 + - 0.2637758 + - -0.35148627 + - -0.77112097 + - -0.77366537 + - -0.64676636 + - 0.45436355 + - 0.5076624 + - 0.7918469 + - 2.1426237 + - 0.020890541 + - 0.7455183 + - 0.026659388 + - -0.1077053 + - 0.38616404 + - 0.8438343 + - 0.91956383 + - 0.0971138 + - -0.26267716 + - -0.7883211 + - -0.022725243 + - 0.34956396 + - 0.3321481 + - 0.09669909 + - 1.2445072 + - -0.30863166 + - 0.99079394 + - -1.1875738 + - 1.337343 + - 0.23513585 + - 0.23539253 + - 0.113998264 + - 0.45109677 + - 1.4648498 + - -0.2619871 + - 0.8729254 + - -0.3726517 + - 1.3124776 + - 0.4928516 + - 0.89394724 + - -0.11975216 + - 1.2148577 + - -1.2999685 + - -0.26684552 + - 0.073947966 + - -1.4212005 + - -0.26876244 + - 1.1169258 + - -0.23341508 + - -0.20554651 + - 0.16080533 + - 0.97910327 + - -0.0027606636 + - -0.7898784 + - 0.11137235 + - 0.37050125 + - -0.73551893 + - 1.1598971 + - -0.4625655 + - -0.42943347 + - -0.0022569378 + - 0.8928249 + - -0.5450357 + - 0.46172872 + - 0.51259184 + - 0.29522097 + - -0.4956716 + - -1.1967921 + - 1.2894557 + - -0.6599275 + - -0.36151952 + - -1.3032105 + - -0.31509402 + - 0.62537295 + - -0.20479263 + - -1.0862913 + - 0.83935857 + - -0.43971616 + - 0.74689287 + - 0.2811537 + - -0.31536722 + - 0.9611962 + - 0.18160024 + - -0.4630222 + - 1.1151918 + - 0.56676525 + - -1.037882 + - -0.70215243 + - 0.65206844 + - -0.7508739 + - 0.52034056 + - 0.08337986 + - -0.5029751 + - -0.49964738 + - -0.45256352 + - 1.0267353 + - 0.006171384 + - 0.5149516 + - 0.19588733 + - 0.6381878 + - 0.94543904 + - 0.25832802 + - 0.43838388 + - -0.5942864 + - 0.40987185 + - 0.26561895 + - 1.2302992 + - 1.0252279 + - 0.13233446 + - -0.38165987 + - -0.18102203 + - 0.1782172 + - -1.3806758 + - -0.74322367 + - -0.008373423 + - 0.7087041 + - 0.24473004 + - 0.7338249 + - -0.66724014 + - 0.56036943 + - 0.010249855 + - 0.92869633 + - -0.9206654 + - 0.51358885 + - 0.8028294 + - -1.0313805 + - 0.15193102 + - 0.022452526 + - 0.29676232 + - 1.6086935 + - -0.6083663 + - -0.056561217 + - 0.6715695 + - -0.4773649 + - -0.05397636 + - -0.99575895 + - -0.30877495 + - -1.5602131 + - -0.3745798 + - -0.7250439 + - 0.26213205 + - 0.54799926 + - -0.34205937 + - -1.2293483 + - 0.004485772 + - -1.8011879 + - 0.07032429 + - 0.545581 + - 0.61607695 + - -0.41562283 + - 0.12793733 + - -0.4070687 + - -0.20783384 + - 0.31573188 + - 0.27809754 + - 0.4419935 + - 0.45673692 + - 0.6196787 + - 0.40913332 + - 0.25915185 + - -1.2054676 + - -0.7332389 + - -0.7251421 + - 0.0074286032 + - 0.3583672 + - -0.15188205 + - 0.31852636 + - 0.08150544 + - -0.13992758 + - -1.9413958 + - -0.47140455 + - -0.16063896 + - 0.58205575 + - -0.3183844 + - -1.2486186 + - 0.23416954 + - 0.838956 + - 1.1199996 + - 0.43661678 + - 0.3126852 + - -1.6130133 + - 0.8120902 + - 0.5300735 + - 0.75017273 + - 0.6138151 + - 0.4645229 + - -0.71319866 + - 0.6432554 + - 0.16147922 + - 1.8573819 + - 0.24313232 + - 1.4369327 + - 2.2141469 + - -0.04401333 + - -0.09830401 + - 0.3550884 + - -1.0592752 + - -0.629287 + - -0.33531702 + - 0.43419102 + - 1.0244741 + - -0.62107575 + - 0.25720438 + - 0.5240833 + - -0.059132032 + - -0.40176216 + - 0.7839997 + - -0.37356287 + - -0.39424428 + - -0.39541 + - 0.6420696 + - 0.049513757 + - 0.4978539 + - 0.7106369 + - 0.54774565 + - 0.25751126 + - -0.07279202 + - -0.08964451 + - -0.57915854 + - 0.8477608 + - -0.2268318 + - -0.25647607 + - -0.10150878 + - 0.7626515 + - 0.7491743 + - 1.0480971 + - 0.5556353 + - -0.012935473 + - -0.15476464 + - 1.0061204 + - 0.12904543 + - 1.2526407 + - 0.027618576 + - 0.7484304 + - 0.24041487 + - 0.04198889 + - 1.1810474 + - -0.5752582 + - 0.14713112 + - -0.85455924 + - 0.8214409 + - 0.15848458 + - 0.3146555 + - -0.0037392247 + - 0.32564932 + - -0.18543684 + - 0.8345826 + - -0.15631889 + - 0.29369903 + - -0.91548884 + - -1.4530405 + - -0.37504256 + - 1.1865065 + - -0.92989206 + - -0.29406232 + - 0.026921108 + - 0.17678767 + - 0.7064693 + - -0.324825 + - -0.6114866 + - 0.45012063 + - 0.7536831 + - -0.109068766 + - -0.2987717 + - -0.077455826 + - -0.515134 + - -0.7728877 + - -0.18424484 + - -1.6249285 + - 0.3809588 + - -1.04341 + - -0.30864388 + - -0.5177987 + - -0.41587126 + - -0.3653977 + - 1.2618902 + - 0.7747584 + - 0.003122734 + - -0.043963283 + - -0.00562883 + - -0.7323179 + - 0.30739534 + - -0.3720694 + - -0.10521738 + - 0.8481524 + - 0.59284234 + - 0.88113403 + - -0.96124107 + - 0.26172006 + - -0.470069 + - -0.42569926 + - -0.66602856 + - -0.22342177 + - -0.8109212 + - 1.5828595 + - 0.6960466 + - 0.41418537 + - 0.16946872 + - -0.4203509 + - 0.042592954 + - 0.3857417 + - -0.034878887 + - 0.21248993 + - 1.4583052 + - 1.3151987 + - -0.6625655 + - 0.92541856 + - -0.72420883 + - -0.39575565 + - -0.27618992 + - 0.77082056 + - 0.44359133 + - 1.0814362 + - -0.83289796 + - 0.065057494 + - 0.79225785 + - -0.09027848 + - -0.42096564 + - -0.18896155 + - -1.8084656 + - -0.2712201 + - -1.1223836 + - -0.5645305 + - 0.2901535 + - 0.2531674 + - 1.4786267 + - 0.34058163 + - -0.85071427 + - -0.3604146 + - -1.0870409 + - -0.2684465 + - -0.6065061 + - 0.5974481 + - 0.37144575 + - 0.58119273 + - 0.27692 + - 1.34744 + - -0.84245324 + - -1.3584973 + - 1.326047 + - 0.01073868 + - 0.390512 + - -0.27108517 + - 0.07563143 + - 0.8505032 + - 1.0671479 + - -0.9044585 + - -1.2797496 + - -0.38518405 + - 0.24140917 + - 0.4041085 + - -0.36962008 + - 0.3973808 + - 0.5385126 + - 0.39346886 + - 0.0104193995 + - -0.43243212 + - 0.8900615 + - -0.60094184 + - 1.5856107 + - 0.13728781 + - -0.5804206 + - 0.038907446 + - 0.29046088 + - -1.2125021 + - -0.00353311 + - 1.3653914 + - 0.23866689 + - 0.5206174 + - -0.3356276 + - 0.5662387 + - -1.315749 + - 0.48252842 + - 0.62173676 + - -1.7036545 + - 0.2775355 + - -0.07042356 + - 0.39912802 + - -0.3664452 + - -0.778048 + - 0.43697444 + - 0.35653812 + - -0.19351342 + - -0.4802999 + - 0.59974027 + - 0.074016176 + - 0.20843613 + - 0.6878496 + - 1.2297091 + - 1.1302242 + - -1.1312642 + - -0.24052395 + - -0.30979577 + - -0.36895898 + - 0.33105034 + - -0.96980554 + - 0.0634701 + - 1.1072088 + - -0.40669075 + - 0.3031543 + - 1.1989367 + - -0.36853084 + - 0.7372977 + - 0.11837225 + - 0.26552972 + - -0.20116872 + - 0.13301952 + - 1.2576036 + - -0.24281603 + - -0.51277643 + - -0.38303295 + - -0.013993908 + - -0.83533585 + - 0.4044474 + - 1.102573 + - 0.55688566 + - -0.46545514 + - 1.1817125 + - 0.6510453 + - -0.18386656 + - 0.19067746 + - 0.6996072 + - -0.177556 + - -0.48384777 + - -0.69122475 + - -0.005699061 + - -0.037157595 + - -1.4467579 + - 1.3691585 + - 0.0743089 + - -0.58958936 + - 0.20893121 + - -1.5452497 + - -0.8475164 + - -0.1779882 + - -1.0291606 + - -0.07871551 + - -0.55474645 + - -0.49345034 + - 0.13970415 + - -0.7374356 + - -0.20657794 + - -0.39123735 + - -0.8634875 + - 0.17048673 + - 0.10076537 + - -0.099436305 + - -0.5265009 + - 0.059836663 + - 0.11785293 + - -0.7012067 + - 1.2623885 + - -0.9573755 + - 0.014721398 + - -1.1469102 + - -2.2911015 + - 0.04293289 + - -0.743616 + - -0.48387223 + - 0.72650576 + - -0.2153663 + - -0.29720604 + - -0.8030761 + - -0.32397562 + - 0.40221965 + - 1.1251396 + - 0.5807987 + - 0.32796085 + - -0.18837826 + - -0.38465053 + - 0.239661 + - 1.6462294 + - -0.31729695 + - 0.8855286 + - -0.33356002 + - -1.1560462 + - 1.2232682 + - 0.2271166 + - -0.47637466 + - -0.12770933 + - 0.6360809 + - -0.5028758 + - -0.1743203 + - 0.77175856 + - 0.1784629 + - 0.058459334 + - 0.06867351 + - 0.9041299 + - 0.13815935 + - -0.15670562 + - 1.461369 + - -0.04312697 + - 0.30181086 + - 0.5559397 + - 0.8436954 + - -0.18134037 + - -0.09988105 + - -0.3723505 + - -0.47321302 + - -0.83520865 + - -0.11341758 + - 0.23625141 + - -0.010226063 + - -0.2648691 + - 0.06513404 + - 1.4228381 + - 0.13060841 + - -0.6207359 + - -0.34725493 + - 0.23584627 + - -0.9851557 + - -0.47266334 + - 0.7085393 + - -0.09065738 + - -0.70951533 + - -0.23054957 + - 0.5413324 + - -0.6678793 + - 1.7193857 + - 0.34274057 + - 1.0559349 + - -0.21271838 + - -1.2517906 + - 0.04829283 + - 0.05489319 + - 0.020226153 + - 0.49912614 + - 0.38887888 + - 0.38816816 + - -1.2442292 + - 0.3303808 + - -0.23337239 + - 0.5005021 + - -0.017345853 + - -1.0540743 + - -0.31211472 + - -0.7004706 + - -0.70864654 + - -0.44131273 + - -0.045611747 + - 0.429386 + - 0.6866664 + - 0.26310062 + - -0.5312542 + - 0.7077787 + - 0.60505986 + - 1.06185 + - -0.455896 + - -2.0135772 + - -1.5204511 + - 0.37245855 + - -0.15544541 + - -0.50282276 + - -0.7293818 + - -0.44446564 + - -0.60254925 + - 0.3934211 + - 1.2516396 + - 0.13686018 + - 0.5742132 + - -0.0018423083 + - 0.0984916 + - -0.10193388 + - 0.23821175 + - 0.50205487 + - 1.0433462 + - 0.9704495 + - -0.99784267 + - 0.085699745 + - 0.44999978 + - -1.0116285 + - 0.16715544 + - -0.2390194 + - -0.56007695 + - 0.12316808 + - 0.2365913 + - -0.085595965 + - -0.68477076 + - 0.5434077 + - -0.95075494 + - 2.1889944 + - 0.67297935 + - -2.4122968 + - 0.010907327 + - 0.48515698 + - 0.44414812 + - 0.041791413 + - -0.7623137 + - 0.3858116 + - -0.05625426 + - -0.65012795 + - -0.90224135 + - -0.81306666 + - 0.5685623 + - 0.20120904 + - 0.16015992 + - -0.12771639 + - -0.35988232 + - 0.68884975 + - 0.4729793 + - -0.0685159 + - 0.9956983 + - 0.38442174 + - -0.045943215 + - 0.75367254 + - 0.76825184 + - 0.3122699 + - 0.47207925 + - 0.2100074 + - 0.6169511 + - -0.8817591 + - 0.6004135 + - -0.40760425 + - 0.11503476 + - -0.23441753 + - -0.48133728 + - -0.81484467 + - 0.43458405 + - -0.7994372 + - 0.005896041 + - -0.9514647 + - 0.7154443 + - -0.7419076 + - -1.479343 + - -0.6813091 + - 0.0880599 + - -0.45195433 + - -0.35312283 + - -0.40824693 + - -1.2019483 + - 0.9852041 + - -0.7052331 + - 0.15257955 + - 0.24453434 + - 1.0901799 + - 0.5125673 + - 1.2270347 + - 0.8762644 + - -1.2533246 + - 0.33012614 + - -0.088065594 + - -0.53963065 + - 0.30941412 + - 0.40618733 + - -0.34078464 + - -0.29656804 + - -0.15419228 + - 0.98129976 + - 0.86919224 + - -0.08816816 + - 0.5834986 + - 0.92669934 + - -0.29608282 + - 0.26200694 + - -0.14257035 + - 0.80186856 + - 0.26013556 + - -0.8192661 + - 0.0673126 + - 1.3559809 + - 0.15953122 + - 0.12193849 + - -0.9855138 + - 1.1901648 + - -0.4618241 + - -0.0911454 + - 0.802613 + - 1.2701794 + - -0.23677644 + - -1.2519453 + - 0.71607137 + - 0.92035747 + - -0.62538624 + - 1.5103241 + - -0.80007315 + - 0.33570737 + - -0.5900537 + - -1.105646 + - 0.26965466 + - -0.56524664 + - -1.0891707 + - 0.80500734 + - 1.0073261 + - 0.8516231 + - 0.2846341 + - 0.021863783 + - -0.030895697 + - 0.4531852 + - 0.057674393 + - -1.3860906 + - 0.2807191 + - 0.6454668 + - -0.086350024 + - -0.22122198 + - -0.91251653 + - -0.30233338 + - 1.745604 + - -0.34630272 + - 1.0705025 + - 0.5886306 + - -0.557568 + - -0.42312482 + - 0.38263345 + - -0.03148527 + - -0.10465591 + - -0.34823352 + - 0.175807 + - 0.2505495 + - 0.23488253 + - -0.3790916 + - 0.080328636 + - -1.2244072 + - -0.59671885 + - 0.26484057 + - -0.007500753 + - -0.012369186 + - 0.095170885 + - -0.17913562 + - 0.7619838 + - 0.017722324 + - -0.5795547 + - -0.33227792 + - -0.15362066 + - -0.4837142 + - 0.48488715 + - 0.647977 + - -0.57872444 + - -0.81019527 + - 0.26567167 + - -0.1130701 + - -0.87123144 + - -0.0011230484 + - -0.5436704 + - -0.112206735 + - -0.51583534 + - -0.9498925 + - 0.1913439 + - 0.9314634 + - -0.9389002 + - -0.98477894 + - 0.3892994 + - -1.5344486 + - 0.3713038 + - 0.31109813 + - 1.2189252 + - 0.42187315 + - -0.016448878 + - 0.73511153 + - 0.61532474 + - 1.5558999 + - -0.287105 + - 1.6534475 + - -0.1625312 + - 1.1613071 + - 1.1697739 + - 1.0525866 + - 1.1106617 + - -0.86007065 + - 0.08663578 + - 0.7755933 + - -0.95357794 + - -0.46578205 + - -0.09211773 + - 0.21454361 + - -0.6230775 + - -0.4261074 + - -0.3109684 + - 0.37499413 + - 0.08089639 + - -1.0834663 + - 0.10616147 + - -0.17668453 + - 0.90584713 + - -0.019472152 + - 0.32551757 + - 0.2846677 + - 0.27126756 + - 0.15429564 + - -0.5521498 + - -1.3901165 + - -1.3631778 + - 0.15322357 + - -0.2693038 + - 0.65931535 + - -0.2566841 + - 0.8994683 + - 0.64375407 + - -0.5499315 + - 0.5510456 + - -1.0688804 + - 0.5970924 + - 1.421563 + - 0.23332255 + - 0.5070604 + - 0.016981704 + - 0.5529369 + - 0.046189755 + - -0.5046995 + - -1.287487 + - -0.23180762 + - -1.1458402 + - -0.5620824 + - -1.1722195 + - -0.8142969 +- - 0.57556933 + - 0.6888636 + - -1.3385231 + - -0.16830908 + - -0.79682255 + - 0.27963012 + - 0.3252835 + - -0.5780263 + - 0.65119827 + - -0.4861329 + - -0.8838503 + - -0.59131044 + - -0.13417791 + - -0.45487377 + - -0.3195841 + - -0.60047466 + - -0.81527925 + - -0.18186498 + - -0.012527674 + - -0.19841462 + - 0.9751408 + - -1.436238 + - -0.069207355 + - -0.29235488 + - 0.07681462 + - -0.7706285 + - -0.54493064 + - -0.43271098 + - -0.07641651 + - -0.0912004 + - 0.6760364 + - 0.48459783 + - -0.14032488 + - -0.6554079 + - 0.31233424 + - -0.08411017 + - -0.72901535 + - -0.7336746 + - 0.10493524 + - -0.2090752 + - 0.11645827 + - 1.2976074 + - 1.1765562 + - -0.5868863 + - -0.14256692 + - -0.3375452 + - 0.24093713 + - -0.34566477 + - -0.27613556 + - -0.62335104 + - 0.38954479 + - 0.040892676 + - -0.58288413 + - -0.54240197 + - -0.5190488 + - 0.1188262 + - -0.4237966 + - 0.30173358 + - -0.14619459 + - 0.46929654 + - 0.26689866 + - -0.6898794 + - -0.18933268 + - -0.36561498 + - 0.49830073 + - 0.8626989 + - 0.1857104 + - 0.4623385 + - 0.8083529 + - -0.16098551 + - 0.17947575 + - 0.49368706 + - -1.1992853 + - -0.19065168 + - -0.5175036 + - -0.18459027 + - -0.48541006 + - -0.20724605 + - 0.31735998 + - -0.28263232 + - -0.65863854 + - 0.5907491 + - 0.633445 + - 1.426707 + - -0.93273896 + - -0.018515065 + - -0.8461513 + - -0.14328258 + - -0.2344357 + - 0.1435478 + - 0.015824689 + - 0.03659737 + - -0.42816475 + - 0.53878266 + - 0.45950177 + - -0.100277394 + - 0.6875157 + - 0.14624807 + - -0.6582032 + - 0.7462771 + - -0.14257412 + - -0.7778356 + - 0.5605584 + - -0.5951809 + - -0.7394612 + - -0.6126611 + - 0.50962514 + - 0.9012645 + - -0.46576473 + - 0.9962075 + - -0.23937443 + - 1.348888 + - 0.6203366 + - 0.5944518 + - 0.105482906 + - -1.0672364 + - -0.3171658 + - 0.17180069 + - 0.5236872 + - 0.3818401 + - -0.2886435 + - 0.035075013 + - 0.7469792 + - 0.16781344 + - 0.13256961 + - 0.93247485 + - 0.099038005 + - -0.43625888 + - 0.31181887 + - 0.5439013 + - 0.9284295 + - -0.9424885 + - 0.42285573 + - -0.5667155 + - -1.1868373 + - 0.031016035 + - 0.03219717 + - 2.0808268 + - 0.35476336 + - 0.2987528 + - -0.31070834 + - -0.15866593 + - -0.54167545 + - 1.0102373 + - -0.17433585 + - 0.26586315 + - -1.1329572 + - 0.17033881 + - -0.5549876 + - 1.004178 + - 0.21702933 + - 0.94400275 + - 0.08403226 + - 1.5585517 + - -1.0354317 + - 0.27898002 + - 0.015233438 + - -0.32623363 + - -1.1938442 + - -0.25377032 + - -0.16856599 + - -0.27539486 + - -0.21746606 + - -0.12589918 + - 0.56130934 + - -0.33690917 + - 0.8592731 + - -0.45543778 + - -0.99513614 + - 0.0643499 + - -0.42181662 + - 0.5460168 + - 1.2713585 + - 0.9897227 + - 1.94404 + - 0.25257066 + - 0.10312697 + - 0.119650766 + - 1.1148812 + - 0.7478205 + - -0.90827525 + - 0.17299765 + - 0.3356536 + - 0.25959513 + - 0.6466571 + - -0.3880988 + - 0.8886219 + - 1.2994696 + - 0.22786573 + - 0.4817386 + - 0.9206533 + - -0.35105902 + - -0.55790025 + - 1.381508 + - 0.30226386 + - -0.114891455 + - 0.6972745 + - -1.1787791 + - 0.15146327 + - -0.7520061 + - -0.38536415 + - -0.676523 + - -0.3312794 + - 1.2618192 + - -1.4401622 + - -0.10300486 + - -0.41828611 + - -0.1956357 + - -0.4578545 + - -0.41440922 + - 0.17940834 + - -0.54178333 + - 0.5253072 + - 1.3627388 + - 0.4856252 + - -0.07172012 + - -0.43157396 + - 0.36037105 + - -1.2548919 + - 0.08319964 + - 0.9641597 + - -0.116866276 + - 0.21548903 + - -0.61714464 + - -0.5023038 + - -0.2970972 + - 1.0248935 + - 0.37465823 + - 0.87189645 + - 1.8059905 + - 0.080962256 + - 0.9489083 + - 0.16328198 + - -0.2616294 + - 0.61563987 + - 0.80685663 + - 0.6458688 + - 0.07879592 + - -0.105016746 + - -0.6708843 + - 0.5659421 + - 0.31802535 + - 0.3962313 + - 0.008853429 + - 1.1789495 + - -0.2762611 + - 0.93570226 + - -1.3750585 + - 0.8561104 + - 0.18734866 + - 0.4483887 + - -0.15289855 + - 0.11655848 + - 0.8669966 + - -0.326963 + - 0.52731097 + - -0.4243282 + - 1.5331235 + - 0.7316634 + - 0.5483978 + - -0.35172606 + - 0.6922502 + - -0.6809691 + - 0.14644721 + - 0.40549725 + - -1.4468234 + - 0.21425119 + - 0.60751915 + - -0.15198466 + - -0.3764981 + - -0.37846747 + - 0.32734215 + - 0.19680652 + - -0.90674376 + - 0.25072223 + - 0.54721916 + - -0.8853576 + - 0.62934786 + - -0.045189258 + - -0.32507002 + - -0.29414743 + - 0.9109961 + - -0.47647673 + - 0.41665033 + - 0.9482318 + - 0.07305788 + - -0.6495288 + - -1.1093687 + - 1.2912838 + - -0.5716026 + - -0.11654581 + - -1.401065 + - -0.20916389 + - 0.44712275 + - 0.2106957 + - -0.8599964 + - 0.44956663 + - -0.34135345 + - -0.17813098 + - -0.10417843 + - -0.9710501 + - 1.1688303 + - 0.079166725 + - -0.44970465 + - 1.069361 + - 0.2867479 + - -0.5776533 + - -0.6393113 + - 0.80208755 + - -0.46721384 + - 0.7183213 + - -0.19146247 + - -0.35826534 + - -0.37313652 + - -0.7209252 + - 1.3699661 + - -0.22640173 + - 0.2741416 + - 0.28298774 + - 1.4685649 + - 1.04602 + - 0.34182224 + - 0.7067245 + - -0.22919255 + - 0.27925578 + - 0.21909043 + - 1.0793623 + - 1.2752925 + - -0.1408356 + - -0.38516343 + - -0.090087555 + - -0.12717706 + - -1.9581978 + - -0.6434336 + - 0.09943403 + - 0.93845034 + - 0.5662913 + - 0.40541103 + - -0.9824145 + - 0.82306933 + - 0.23412418 + - 0.08166294 + - -1.2123978 + - 0.79628104 + - 0.8675138 + - -1.067 + - 0.46122658 + - 0.05838367 + - -0.06665836 + - 1.4991924 + - -0.63644797 + - -0.04351598 + - 0.91709316 + - -0.3971399 + - -0.25696784 + - -0.62767935 + - -0.087430954 + - -1.546038 + - -0.6626794 + - -0.8475457 + - -0.0207314 + - 0.5379955 + - -0.8391703 + - -0.8132244 + - -0.24823691 + - -1.6305588 + - -0.37946296 + - 0.040976312 + - 0.0059109414 + - -0.35684663 + - 0.061395504 + - -0.60684675 + - -0.08036277 + - 0.4970868 + - 0.23239091 + - 0.65738726 + - 0.6357141 + - 0.31962606 + - 0.164518 + - 0.17979832 + - -1.4260901 + - -0.47512856 + - -0.15359052 + - -0.17950533 + - 0.33011594 + - -0.17411914 + - 0.41081125 + - 0.018232316 + - -0.3217324 + - -1.5874921 + - 0.11395568 + - -0.08238956 + - 0.7198519 + - -0.14512196 + - -0.66898817 + - 0.42809305 + - 0.23999432 + - 1.5809567 + - -0.111888915 + - 0.8276386 + - -1.9852655 + - 0.404928 + - 0.12463452 + - 1.1454594 + - 0.36120352 + - 0.043263234 + - -1.0495765 + - 0.12913063 + - -0.1535878 + - 1.6332724 + - 0.68827546 + - 0.40795392 + - 2.2903233 + - -0.19271377 + - 0.17724863 + - 0.24507126 + - -1.2766331 + - -0.44054556 + - -0.35428908 + - 0.54936975 + - 0.8912681 + - -0.42690912 + - 0.25501364 + - 0.33108026 + - 0.18316461 + - -0.51941025 + - 0.49021715 + - -0.008003557 + - -0.8691308 + - -0.16561213 + - -0.26299518 + - 0.30003506 + - 0.4156723 + - 0.5419449 + - 0.5079478 + - 0.05402937 + - -0.38082597 + - -0.41031417 + - -0.58396906 + - 1.1630265 + - -0.33905756 + - -0.28613478 + - 0.09924755 + - 1.1058006 + - 0.75883627 + - 1.0266459 + - 0.050653387 + - 0.237297 + - 0.1509256 + - 0.39801818 + - 0.26715043 + - 1.1480651 + - 0.38216478 + - 0.59689224 + - -0.37096313 + - 0.21735866 + - 0.84369093 + - -0.27672303 + - -0.21128535 + - -0.8006988 + - 0.191027 + - -0.14281188 + - -0.106090024 + - -0.39317906 + - 0.64134353 + - -0.6662092 + - 0.21965612 + - -0.29725668 + - 0.6950122 + - -0.7690753 + - -1.269828 + - -0.27851817 + - 1.021209 + - -0.40435457 + - -0.14233123 + - 0.045947623 + - 0.013870632 + - 0.6620679 + - -0.25224674 + - -0.13281389 + - 0.5478639 + - 0.3932274 + - -0.11489776 + - 0.3746772 + - -0.08227297 + - -0.52534616 + - -0.79247457 + - -0.15982662 + - -1.5980164 + - 0.3847406 + - -0.8999027 + - -0.00781783 + - -0.26862568 + - -0.56859934 + - 0.17280695 + - 0.91916883 + - 0.74975777 + - 0.06689796 + - -0.28295362 + - 0.044267803 + - -0.35667834 + - -0.26501366 + - -0.37269542 + - 0.012618005 + - 0.31026745 + - 0.95659757 + - 0.95202625 + - 0.2708585 + - 0.0067020487 + - -0.68017226 + - -1.0126009 + - -0.006375421 + - -0.9249583 + - -0.93926334 + - 1.2462221 + - 1.0395485 + - 0.52829015 + - -0.3939165 + - -0.6587392 + - 0.56534517 + - 1.0098054 + - -0.06510373 + - 0.20907107 + - 1.1140336 + - 0.95258987 + - -0.53036314 + - 0.34114626 + - -0.80742556 + - -0.202509 + - -0.14391792 + - 1.1227268 + - 0.45183718 + - 1.092169 + - -0.045993734 + - -0.37784496 + - 0.14328437 + - 0.33506137 + - -0.6708358 + - 0.11220839 + - -1.7107195 + - -0.46620455 + - -1.2224282 + - -0.015334156 + - 0.86068225 + - 0.5557377 + - 1.2311354 + - -0.09027468 + - -0.5307434 + - -0.13954373 + - -1.1173403 + - 0.36584723 + - -0.9385283 + - 1.196857 + - 0.41978833 + - 1.0126806 + - 0.1531352 + - 1.1283474 + - -0.61053246 + - -1.1274297 + - 0.9717279 + - 0.0861807 + - 0.17120495 + - -0.22733746 + - -0.3384215 + - 0.39842957 + - 1.2565709 + - -0.69482344 + - -1.1205585 + - -0.7005049 + - 0.40309322 + - 0.6151419 + - -0.24687953 + - 0.71049654 + - 0.25648603 + - 0.70593077 + - -0.4173748 + - -0.38115838 + - 0.60504943 + - -0.3069224 + - 2.2496288 + - 0.23542978 + - -0.37555346 + - 0.032865413 + - 0.21266201 + - -1.6336099 + - 0.20089912 + - 0.7439879 + - 0.098889366 + - 0.393292 + - 0.32870713 + - 0.12275634 + - -0.9393177 + - 0.952873 + - 0.6227778 + - -1.3714689 + - 0.37149268 + - 0.6000113 + - -0.030030493 + - 0.3871152 + - -0.23440352 + - 0.6808094 + - 0.15130207 + - -0.45065287 + - -0.08342544 + - 0.36970228 + - 0.93248844 + - 0.5424447 + - 0.3034842 + - 1.1916674 + - 0.86821014 + - -1.0515537 + - -0.6737584 + - -0.35981667 + - 0.38980284 + - 0.6360013 + - -0.8188969 + - -0.13915715 + - 1.229095 + - -0.20353891 + - 0.019635923 + - 1.3898424 + - -0.8341084 + - 0.82499117 + - 0.35154703 + - 0.17452185 + - 0.46346712 + - -0.027782 + - 0.8200378 + - 0.29860017 + - -0.07677769 + - -0.43654674 + - -0.12450571 + - -1.2286189 + - 0.6397712 + - 1.1627825 + - -0.23983133 + - -0.23894945 + - 0.88650167 + - 0.7655909 + - -0.21047564 + - 0.87394035 + - 0.45494434 + - 0.039806217 + - -0.08444228 + - -0.397811 + - -0.13503967 + - -0.21194373 + - -1.2898479 + - 1.3973614 + - 0.33105785 + - -0.07450147 + - 0.2905072 + - -1.4936208 + - -1.2527648 + - -0.3605406 + - -0.9159492 + - -0.39972937 + - -0.2224389 + - -0.8478347 + - -0.073610336 + - -0.85866535 + - -0.13988158 + - -0.08359209 + - -1.2204595 + - 0.16831332 + - 0.1366328 + - -0.54231626 + - -0.78696716 + - 0.34036487 + - -0.030612273 + - -0.5591279 + - 1.3825369 + - -1.2589506 + - -0.046820622 + - -0.84963465 + - -2.10145 + - -0.28959715 + - -1.0917126 + - -0.55262256 + - 0.8645379 + - 0.03901723 + - -1.0707494 + - -0.40164614 + - -0.29285187 + - 0.31071663 + - 1.059661 + - 0.8258847 + - 0.16304097 + - -0.20988366 + - -0.519325 + - 0.7349029 + - 1.605962 + - 0.11480269 + - 0.4147561 + - -0.5479051 + - -0.8935198 + - 1.1161404 + - 0.66067785 + - 0.08677435 + - -0.025754075 + - 0.8946275 + - -0.3136168 + - -0.023652257 + - 0.5381391 + - 0.15516736 + - -0.40285748 + - -0.02117005 + - 0.9087424 + - 0.6523889 + - -0.025464961 + - 1.5017724 + - -0.09168724 + - 0.3386724 + - 1.24998 + - 0.2668269 + - -0.18217489 + - -0.042293318 + - -0.81281936 + - -0.33167028 + - -0.7730811 + - -0.246816 + - 0.43256554 + - -0.057428025 + - 0.07269757 + - 0.14551625 + - 1.5914994 + - 0.17078932 + - -0.14280725 + - -0.73079866 + - 0.24226281 + - -0.5636533 + - -0.16230938 + - 0.63025475 + - 0.19580698 + - 0.14028257 + - -0.14621432 + - 0.8562453 + - -0.67526686 + - 0.9043665 + - -0.08513083 + - 0.85011065 + - -0.47296873 + - -1.6622362 + - -0.08794584 + - 0.19815677 + - -0.1029834 + - 0.52264446 + - 0.37724108 + - 0.5169713 + - -0.6840728 + - 0.7037545 + - -0.33908316 + - 0.19040431 + - -0.18705253 + - -0.9434498 + - -0.41265196 + - -0.92957985 + - -0.50254303 + - -0.24581878 + - -0.2132754 + - 0.5612496 + - 0.45163846 + - 0.19109187 + - -0.99250233 + - 0.20690235 + - 0.582744 + - 1.0376638 + - -0.08738792 + - -1.6934576 + - -1.1319288 + - 0.52101475 + - 0.028485242 + - -0.4387573 + - -0.9006171 + - -0.28287262 + - -0.1539908 + - 0.37338617 + - 1.0388696 + - -0.11964413 + - 0.60581917 + - -0.07236088 + - -0.18953103 + - -0.57286674 + - 0.2921868 + - 0.62011474 + - 1.1850213 + - 1.2884145 + - -0.1336467 + - -0.19672847 + - 0.25420517 + - -0.733008 + - -0.657286 + - -0.54156417 + - 0.42431372 + - -0.30292767 + - 0.32161286 + - -0.06099212 + - -0.7282314 + - 0.8126104 + - -0.738827 + - 1.7992681 + - 0.48879534 + - -1.982494 + - -0.2667456 + - 0.31666404 + - 0.6959654 + - -0.7190314 + - -1.3169459 + - -0.015871193 + - -0.1600178 + - -0.46259627 + - -0.60929936 + - -1.4039382 + - 0.094811864 + - 0.12860698 + - 0.20823959 + - -0.40943822 + - -0.966474 + - 0.23929994 + - 1.1988298 + - -0.45103666 + - 1.163009 + - 0.6373533 + - -0.015732557 + - 1.3135775 + - 0.7464949 + - 0.8439204 + - -0.02288128 + - 0.7392136 + - 0.7814066 + - -0.18699029 + - 0.40212014 + - -0.19581285 + - -0.15811522 + - 0.19281745 + - 0.13839823 + - -0.4952413 + - 0.6735318 + - -0.7343913 + - 0.08784869 + - -0.55440986 + - 0.34614325 + - -0.64355725 + - -1.5235144 + - -0.11691485 + - -0.11471526 + - -0.6629276 + - -0.05693163 + - -0.28878433 + - -1.1070349 + - 0.57661194 + - -0.60906845 + - 0.591349 + - 0.585047 + - 0.93040925 + - 0.025522478 + - 0.7991121 + - 0.95004827 + - -1.1361719 + - 0.4299282 + - 0.68193597 + - -0.8322585 + - 0.33188143 + - 0.3375527 + - -0.2520109 + - -0.5790561 + - -0.37741295 + - 0.61465156 + - 0.7769468 + - -0.015717221 + - 0.18840225 + - 1.3010074 + - -0.8179822 + - 0.48051727 + - 0.44476676 + - 0.6343203 + - 0.17421283 + - -0.62685627 + - -0.17708893 + - 0.874567 + - 0.2139834 + - 0.5289606 + - -0.8397213 + - 0.48552734 + - -1.068048 + - 0.1327742 + - 0.7656644 + - 0.21465798 + - -0.18657985 + - -0.72588784 + - 0.68126166 + - 1.1779602 + - -0.83773696 + - 1.2913257 + - -0.37906575 + - 0.10039904 + - -0.7604364 + - -0.58398503 + - 0.6494769 + - -0.49284375 + - -0.31347182 + - 0.5019669 + - 0.52251977 + - 1.1506046 + - 0.40717208 + - 0.21329221 + - -0.19992629 + - 0.17370999 + - 0.0317676 + - -1.1980039 + - 0.20759946 + - 0.5869395 + - 0.2109202 + - -0.4146009 + - -0.973231 + - -0.16854276 + - 1.4863137 + - -0.17981464 + - 0.9070098 + - 0.07002522 + - -0.731967 + - -0.28592807 + - 0.41912735 + - 0.16090174 + - 0.2347964 + - -0.5887024 + - 0.11602311 + - -0.01650852 + - 0.30718428 + - -0.39890286 + - -0.0856157 + - -0.89154565 + - -0.39993545 + - 0.7091909 + - -0.4703228 + - 0.32313165 + - 0.64462876 + - -0.22067146 + - 0.29798663 + - 0.08840625 + - -0.5465535 + - 0.38130072 + - 0.18482621 + - -0.3970569 + - 0.38701332 + - 0.565935 + - -0.92066985 + - -1.0097194 + - 0.49959993 + - -0.19624679 + - -0.6292326 + - -0.3330593 + - -1.0162587 + - -0.5231736 + - -0.19422188 + - -0.63358104 + - 0.7101057 + - 1.1315941 + - -1.1419257 + - -0.7017915 + - 0.4176537 + - -1.2202699 + - 0.44971266 + - 0.52872 + - 1.0097802 + - 0.3346612 + - -0.28133252 + - 1.0899616 + - 0.5335402 + - 2.144771 + - -0.03085353 + - 1.5963402 + - 0.2946555 + - 0.8918903 + - 1.0798763 + - 0.4549633 + - 0.752871 + - -0.5362915 + - 0.090553716 + - 0.5452343 + - -0.86886656 + - 0.115329936 + - 0.07754184 + - 0.13685054 + - -0.91402334 + - -0.78622377 + - -0.8729133 + - 0.65065384 + - -0.4569467 + - -0.52232033 + - 0.23743455 + - 0.089589864 + - 0.9826995 + - 0.6590145 + - 0.13580915 + - 0.6999628 + - 0.069311105 + - 0.69155335 + - -0.3570859 + - -0.94150144 + - -1.2715375 + - 0.788576 + - -0.11609632 + - 1.2266772 + - -0.23433998 + - 0.8102666 + - 0.88711244 + - -0.8360331 + - 0.90899813 + - -0.76769537 + - 0.45687318 + - 0.9382093 + - 0.3888737 + - 0.54022515 + - -0.4641201 + - 0.54530627 + - 0.3074875 + - -0.26540583 + - -1.0123811 + - -0.569029 + - -0.98726034 + - -0.46384445 + - -0.878536 + - -0.8230209 +- - -0.0014278395 + - 0.8564985 + - -0.56371284 + - -0.077162296 + - -1.3959801 + - 0.16868848 + - -0.0066606 + - -0.6935729 + - 0.7680596 + - -0.6885326 + - -0.7315665 + - 0.014762384 + - -0.07408829 + - -0.3171738 + - -0.45775723 + - -0.027198305 + - -0.31797674 + - 0.03447124 + - 0.26349705 + - -0.06770613 + - 0.22211355 + - -0.9706444 + - -0.20075502 + - -0.12733698 + - 0.4475564 + - -0.818189 + - -0.6589402 + - -0.80664897 + - -0.012445061 + - -0.299875 + - 0.8037751 + - 0.783486 + - -0.38686854 + - -0.8345378 + - 0.8456293 + - 0.060641773 + - -0.46693698 + - -0.75975704 + - -0.09569474 + - -0.43195814 + - -0.01045849 + - 1.4152633 + - 0.9630803 + - -0.3017511 + - -0.14166762 + - -0.5705037 + - 0.35540068 + - 0.30885217 + - -0.88800746 + - -0.41909313 + - 0.6866201 + - 0.22648033 + - -0.72892725 + - 0.21320158 + - 0.2854965 + - 0.24561587 + - -0.8959556 + - 0.5374439 + - 0.14885251 + - 0.16370402 + - 0.6889201 + - -0.52156854 + - 0.33412343 + - -0.5404771 + - 0.15279087 + - 1.0543426 + - -0.11641638 + - -0.22767082 + - 1.377584 + - 0.027651407 + - 0.013030482 + - 0.20004138 + - -1.4621748 + - -0.14566255 + - -0.8173601 + - 0.591269 + - -1.1070398 + - 0.39385313 + - 0.31373537 + - -0.6870262 + - -0.89926064 + - 1.0040805 + - 0.11994316 + - 1.2938809 + - -0.7388344 + - -0.68136215 + - -0.86092305 + - 0.17545614 + - -0.58350056 + - -0.24131991 + - 0.12882261 + - -0.29347694 + - -0.32107985 + - 0.7990383 + - 0.36803582 + - 0.22783057 + - 0.9452963 + - -0.29409137 + - -0.07162706 + - 0.7913012 + - -0.55161756 + - -0.38355213 + - 0.8577158 + - -0.6636874 + - -0.07505204 + - -0.028936006 + - 0.9943232 + - 0.88959944 + - -1.169181 + - 0.73296547 + - -0.239582 + - 1.1228241 + - 0.58872235 + - 0.5515939 + - -0.36207163 + - -1.0991017 + - -0.52109545 + - 0.05784373 + - 0.87615824 + - 0.23666331 + - 0.42431742 + - 0.32302937 + - 1.1064777 + - 0.38801908 + - -0.00650528 + - 1.4773686 + - 0.16791047 + - 0.10159061 + - 0.68253374 + - 0.6175261 + - 0.7408156 + - -0.86656404 + - 0.33377638 + - -0.3010463 + - -0.7296269 + - 0.105238736 + - -0.67472655 + - 1.2878289 + - -0.17186594 + - 0.3153095 + - -0.5765154 + - 0.20147346 + - -0.30400264 + - 1.0234276 + - -0.3370074 + - -0.2715305 + - -0.893636 + - -0.19322965 + - 0.025298197 + - 1.2759744 + - -0.3712418 + - 0.85969675 + - 0.8329356 + - 1.4318267 + - -0.9729594 + - 0.49634743 + - -0.008301608 + - -0.54760796 + - -1.1277554 + - -0.19990917 + - -0.09330505 + - -0.35682315 + - 0.5995969 + - -0.037311852 + - 0.54742575 + - -0.54079187 + - 0.92537194 + - -0.9461359 + - -1.2782127 + - -0.22866292 + - 0.31703445 + - 0.78213525 + - 1.84047 + - 1.3421893 + - 1.9887264 + - 0.052081026 + - 0.48948333 + - 0.2885021 + - 0.93934333 + - 0.58454853 + - -0.7747212 + - 0.19905978 + - 0.16807169 + - 0.6157373 + - 0.49593142 + - -0.60833687 + - 0.5455237 + - 0.69138116 + - 0.30746645 + - 0.3586419 + - 0.40374193 + - -0.69705904 + - -0.71801114 + - 1.1580749 + - -0.45524 + - -0.021989208 + - 0.40167862 + - -0.583871 + - 0.45318186 + - -0.49028802 + - -0.023927156 + - -0.70435584 + - -0.032907344 + - 1.4243655 + - -1.7540915 + - -0.046573117 + - -0.43008068 + - 0.19698568 + - -0.61650586 + - -0.74180025 + - -0.04461632 + - -0.7405187 + - 0.61665416 + - 1.0764165 + - 0.2594155 + - -0.42819247 + - -0.57580024 + - 0.2654174 + - -1.954933 + - -0.035195757 + - 0.7092524 + - 0.2637758 + - -0.35148627 + - -0.77112097 + - -0.77366537 + - -0.64676636 + - 0.45436355 + - 0.5076624 + - 0.7918469 + - 2.1426237 + - 0.020890541 + - 0.7455183 + - 0.026659388 + - -0.1077053 + - 0.38616404 + - 0.8438343 + - 0.91956383 + - 0.0971138 + - -0.26267716 + - -0.7883211 + - -0.022725243 + - 0.34956396 + - 0.3321481 + - 0.09669909 + - 1.2445072 + - -0.30863166 + - 0.99079394 + - -1.1875738 + - 1.337343 + - 0.23513585 + - 0.23539253 + - 0.113998264 + - 0.45109677 + - 1.4648498 + - -0.2619871 + - 0.8729254 + - -0.3726517 + - 1.3124776 + - 0.4928516 + - 0.89394724 + - -0.11975216 + - 1.2148577 + - -1.2999685 + - -0.26684552 + - 0.073947966 + - -1.4212005 + - -0.26876244 + - 1.1169258 + - -0.23341508 + - -0.20554651 + - 0.16080533 + - 0.97910327 + - -0.0027606636 + - -0.7898784 + - 0.11137235 + - 0.37050125 + - -0.73551893 + - 1.1598971 + - -0.4625655 + - -0.42943347 + - -0.0022569378 + - 0.8928249 + - -0.5450357 + - 0.46172872 + - 0.51259184 + - 0.29522097 + - -0.4956716 + - -1.1967921 + - 1.2894557 + - -0.6599275 + - -0.36151952 + - -1.3032105 + - -0.31509402 + - 0.62537295 + - -0.20479263 + - -1.0862913 + - 0.83935857 + - -0.43971616 + - 0.74689287 + - 0.2811537 + - -0.31536722 + - 0.9611962 + - 0.18160024 + - -0.4630222 + - 1.1151918 + - 0.56676525 + - -1.037882 + - -0.70215243 + - 0.65206844 + - -0.7508739 + - 0.52034056 + - 0.08337986 + - -0.5029751 + - -0.49964738 + - -0.45256352 + - 1.0267353 + - 0.006171384 + - 0.5149516 + - 0.19588733 + - 0.6381878 + - 0.94543904 + - 0.25832802 + - 0.43838388 + - -0.5942864 + - 0.40987185 + - 0.26561895 + - 1.2302992 + - 1.0252279 + - 0.13233446 + - -0.38165987 + - -0.18102203 + - 0.1782172 + - -1.3806758 + - -0.74322367 + - -0.008373423 + - 0.7087041 + - 0.24473004 + - 0.7338249 + - -0.66724014 + - 0.56036943 + - 0.010249855 + - 0.92869633 + - -0.9206654 + - 0.51358885 + - 0.8028294 + - -1.0313805 + - 0.15193102 + - 0.022452526 + - 0.29676232 + - 1.6086935 + - -0.6083663 + - -0.056561217 + - 0.6715695 + - -0.4773649 + - -0.05397636 + - -0.99575895 + - -0.30877495 + - -1.5602131 + - -0.3745798 + - -0.7250439 + - 0.26213205 + - 0.54799926 + - -0.34205937 + - -1.2293483 + - 0.004485772 + - -1.8011879 + - 0.07032429 + - 0.545581 + - 0.61607695 + - -0.41562283 + - 0.12793733 + - -0.4070687 + - -0.20783384 + - 0.31573188 + - 0.27809754 + - 0.4419935 + - 0.45673692 + - 0.6196787 + - 0.40913332 + - 0.25915185 + - -1.2054676 + - -0.7332389 + - -0.7251421 + - 0.0074286032 + - 0.3583672 + - -0.15188205 + - 0.31852636 + - 0.08150544 + - -0.13992758 + - -1.9413958 + - -0.47140455 + - -0.16063896 + - 0.58205575 + - -0.3183844 + - -1.2486186 + - 0.23416954 + - 0.838956 + - 1.1199996 + - 0.43661678 + - 0.3126852 + - -1.6130133 + - 0.8120902 + - 0.5300735 + - 0.75017273 + - 0.6138151 + - 0.4645229 + - -0.71319866 + - 0.6432554 + - 0.16147922 + - 1.8573819 + - 0.24313232 + - 1.4369327 + - 2.2141469 + - -0.04401333 + - -0.09830401 + - 0.3550884 + - -1.0592752 + - -0.629287 + - -0.33531702 + - 0.43419102 + - 1.0244741 + - -0.62107575 + - 0.25720438 + - 0.5240833 + - -0.059132032 + - -0.40176216 + - 0.7839997 + - -0.37356287 + - -0.39424428 + - -0.39541 + - 0.6420696 + - 0.049513757 + - 0.4978539 + - 0.7106369 + - 0.54774565 + - 0.25751126 + - -0.07279202 + - -0.08964451 + - -0.57915854 + - 0.8477608 + - -0.2268318 + - -0.25647607 + - -0.10150878 + - 0.7626515 + - 0.7491743 + - 1.0480971 + - 0.5556353 + - -0.012935473 + - -0.15476464 + - 1.0061204 + - 0.12904543 + - 1.2526407 + - 0.027618576 + - 0.7484304 + - 0.24041487 + - 0.04198889 + - 1.1810474 + - -0.5752582 + - 0.14713112 + - -0.85455924 + - 0.8214409 + - 0.15848458 + - 0.3146555 + - -0.0037392247 + - 0.32564932 + - -0.18543684 + - 0.8345826 + - -0.15631889 + - 0.29369903 + - -0.91548884 + - -1.4530405 + - -0.37504256 + - 1.1865065 + - -0.92989206 + - -0.29406232 + - 0.026921108 + - 0.17678767 + - 0.7064693 + - -0.324825 + - -0.6114866 + - 0.45012063 + - 0.7536831 + - -0.109068766 + - -0.2987717 + - -0.077455826 + - -0.515134 + - -0.7728877 + - -0.18424484 + - -1.6249285 + - 0.3809588 + - -1.04341 + - -0.30864388 + - -0.5177987 + - -0.41587126 + - -0.3653977 + - 1.2618902 + - 0.7747584 + - 0.003122734 + - -0.043963283 + - -0.00562883 + - -0.7323179 + - 0.30739534 + - -0.3720694 + - -0.10521738 + - 0.8481524 + - 0.59284234 + - 0.88113403 + - -0.96124107 + - 0.26172006 + - -0.470069 + - -0.42569926 + - -0.66602856 + - -0.22342177 + - -0.8109212 + - 1.5828595 + - 0.6960466 + - 0.41418537 + - 0.16946872 + - -0.4203509 + - 0.042592954 + - 0.3857417 + - -0.034878887 + - 0.21248993 + - 1.4583052 + - 1.3151987 + - -0.6625655 + - 0.92541856 + - -0.72420883 + - -0.39575565 + - -0.27618992 + - 0.77082056 + - 0.44359133 + - 1.0814362 + - -0.83289796 + - 0.065057494 + - 0.79225785 + - -0.09027848 + - -0.42096564 + - -0.18896155 + - -1.8084656 + - -0.2712201 + - -1.1223836 + - -0.5645305 + - 0.2901535 + - 0.2531674 + - 1.4786267 + - 0.34058163 + - -0.85071427 + - -0.3604146 + - -1.0870409 + - -0.2684465 + - -0.6065061 + - 0.5974481 + - 0.37144575 + - 0.58119273 + - 0.27692 + - 1.34744 + - -0.84245324 + - -1.3584973 + - 1.326047 + - 0.01073868 + - 0.390512 + - -0.27108517 + - 0.07563143 + - 0.8505032 + - 1.0671479 + - -0.9044585 + - -1.2797496 + - -0.38518405 + - 0.24140917 + - 0.4041085 + - -0.36962008 + - 0.3973808 + - 0.5385126 + - 0.39346886 + - 0.0104193995 + - -0.43243212 + - 0.8900615 + - -0.60094184 + - 1.5856107 + - 0.13728781 + - -0.5804206 + - 0.038907446 + - 0.29046088 + - -1.2125021 + - -0.00353311 + - 1.3653914 + - 0.23866689 + - 0.5206174 + - -0.3356276 + - 0.5662387 + - -1.315749 + - 0.48252842 + - 0.62173676 + - -1.7036545 + - 0.2775355 + - -0.07042356 + - 0.39912802 + - -0.3664452 + - -0.778048 + - 0.43697444 + - 0.35653812 + - -0.19351342 + - -0.4802999 + - 0.59974027 + - 0.074016176 + - 0.20843613 + - 0.6878496 + - 1.2297091 + - 1.1302242 + - -1.1312642 + - -0.24052395 + - -0.30979577 + - -0.36895898 + - 0.33105034 + - -0.96980554 + - 0.0634701 + - 1.1072088 + - -0.40669075 + - 0.3031543 + - 1.1989367 + - -0.36853084 + - 0.7372977 + - 0.11837225 + - 0.26552972 + - -0.20116872 + - 0.13301952 + - 1.2576036 + - -0.24281603 + - -0.51277643 + - -0.38303295 + - -0.013993908 + - -0.83533585 + - 0.4044474 + - 1.102573 + - 0.55688566 + - -0.46545514 + - 1.1817125 + - 0.6510453 + - -0.18386656 + - 0.19067746 + - 0.6996072 + - -0.177556 + - -0.48384777 + - -0.69122475 + - -0.005699061 + - -0.037157595 + - -1.4467579 + - 1.3691585 + - 0.0743089 + - -0.58958936 + - 0.20893121 + - -1.5452497 + - -0.8475164 + - -0.1779882 + - -1.0291606 + - -0.07871551 + - -0.55474645 + - -0.49345034 + - 0.13970415 + - -0.7374356 + - -0.20657794 + - -0.39123735 + - -0.8634875 + - 0.17048673 + - 0.10076537 + - -0.099436305 + - -0.5265009 + - 0.059836663 + - 0.11785293 + - -0.7012067 + - 1.2623885 + - -0.9573755 + - 0.014721398 + - -1.1469102 + - -2.2911015 + - 0.04293289 + - -0.743616 + - -0.48387223 + - 0.72650576 + - -0.2153663 + - -0.29720604 + - -0.8030761 + - -0.32397562 + - 0.40221965 + - 1.1251396 + - 0.5807987 + - 0.32796085 + - -0.18837826 + - -0.38465053 + - 0.239661 + - 1.6462294 + - -0.31729695 + - 0.8855286 + - -0.33356002 + - -1.1560462 + - 1.2232682 + - 0.2271166 + - -0.47637466 + - -0.12770933 + - 0.6360809 + - -0.5028758 + - -0.1743203 + - 0.77175856 + - 0.1784629 + - 0.058459334 + - 0.06867351 + - 0.9041299 + - 0.13815935 + - -0.15670562 + - 1.461369 + - -0.04312697 + - 0.30181086 + - 0.5559397 + - 0.8436954 + - -0.18134037 + - -0.09988105 + - -0.3723505 + - -0.47321302 + - -0.83520865 + - -0.11341758 + - 0.23625141 + - -0.010226063 + - -0.2648691 + - 0.06513404 + - 1.4228381 + - 0.13060841 + - -0.6207359 + - -0.34725493 + - 0.23584627 + - -0.9851557 + - -0.47266334 + - 0.7085393 + - -0.09065738 + - -0.70951533 + - -0.23054957 + - 0.5413324 + - -0.6678793 + - 1.7193857 + - 0.34274057 + - 1.0559349 + - -0.21271838 + - -1.2517906 + - 0.04829283 + - 0.05489319 + - 0.020226153 + - 0.49912614 + - 0.38887888 + - 0.38816816 + - -1.2442292 + - 0.3303808 + - -0.23337239 + - 0.5005021 + - -0.017345853 + - -1.0540743 + - -0.31211472 + - -0.7004706 + - -0.70864654 + - -0.44131273 + - -0.045611747 + - 0.429386 + - 0.6866664 + - 0.26310062 + - -0.5312542 + - 0.7077787 + - 0.60505986 + - 1.06185 + - -0.455896 + - -2.0135772 + - -1.5204511 + - 0.37245855 + - -0.15544541 + - -0.50282276 + - -0.7293818 + - -0.44446564 + - -0.60254925 + - 0.3934211 + - 1.2516396 + - 0.13686018 + - 0.5742132 + - -0.0018423083 + - 0.0984916 + - -0.10193388 + - 0.23821175 + - 0.50205487 + - 1.0433462 + - 0.9704495 + - -0.99784267 + - 0.085699745 + - 0.44999978 + - -1.0116285 + - 0.16715544 + - -0.2390194 + - -0.56007695 + - 0.12316808 + - 0.2365913 + - -0.085595965 + - -0.68477076 + - 0.5434077 + - -0.95075494 + - 2.1889944 + - 0.67297935 + - -2.4122968 + - 0.010907327 + - 0.48515698 + - 0.44414812 + - 0.041791413 + - -0.7623137 + - 0.3858116 + - -0.05625426 + - -0.65012795 + - -0.90224135 + - -0.81306666 + - 0.5685623 + - 0.20120904 + - 0.16015992 + - -0.12771639 + - -0.35988232 + - 0.68884975 + - 0.4729793 + - -0.0685159 + - 0.9956983 + - 0.38442174 + - -0.045943215 + - 0.75367254 + - 0.76825184 + - 0.3122699 + - 0.47207925 + - 0.2100074 + - 0.6169511 + - -0.8817591 + - 0.6004135 + - -0.40760425 + - 0.11503476 + - -0.23441753 + - -0.48133728 + - -0.81484467 + - 0.43458405 + - -0.7994372 + - 0.005896041 + - -0.9514647 + - 0.7154443 + - -0.7419076 + - -1.479343 + - -0.6813091 + - 0.0880599 + - -0.45195433 + - -0.35312283 + - -0.40824693 + - -1.2019483 + - 0.9852041 + - -0.7052331 + - 0.15257955 + - 0.24453434 + - 1.0901799 + - 0.5125673 + - 1.2270347 + - 0.8762644 + - -1.2533246 + - 0.33012614 + - -0.088065594 + - -0.53963065 + - 0.30941412 + - 0.40618733 + - -0.34078464 + - -0.29656804 + - -0.15419228 + - 0.98129976 + - 0.86919224 + - -0.08816816 + - 0.5834986 + - 0.92669934 + - -0.29608282 + - 0.26200694 + - -0.14257035 + - 0.80186856 + - 0.26013556 + - -0.8192661 + - 0.0673126 + - 1.3559809 + - 0.15953122 + - 0.12193849 + - -0.9855138 + - 1.1901648 + - -0.4618241 + - -0.0911454 + - 0.802613 + - 1.2701794 + - -0.23677644 + - -1.2519453 + - 0.71607137 + - 0.92035747 + - -0.62538624 + - 1.5103241 + - -0.80007315 + - 0.33570737 + - -0.5900537 + - -1.105646 + - 0.26965466 + - -0.56524664 + - -1.0891707 + - 0.80500734 + - 1.0073261 + - 0.8516231 + - 0.2846341 + - 0.021863783 + - -0.030895697 + - 0.4531852 + - 0.057674393 + - -1.3860906 + - 0.2807191 + - 0.6454668 + - -0.086350024 + - -0.22122198 + - -0.91251653 + - -0.30233338 + - 1.745604 + - -0.34630272 + - 1.0705025 + - 0.5886306 + - -0.557568 + - -0.42312482 + - 0.38263345 + - -0.03148527 + - -0.10465591 + - -0.34823352 + - 0.175807 + - 0.2505495 + - 0.23488253 + - -0.3790916 + - 0.080328636 + - -1.2244072 + - -0.59671885 + - 0.26484057 + - -0.007500753 + - -0.012369186 + - 0.095170885 + - -0.17913562 + - 0.7619838 + - 0.017722324 + - -0.5795547 + - -0.33227792 + - -0.15362066 + - -0.4837142 + - 0.48488715 + - 0.647977 + - -0.57872444 + - -0.81019527 + - 0.26567167 + - -0.1130701 + - -0.87123144 + - -0.0011230484 + - -0.5436704 + - -0.112206735 + - -0.51583534 + - -0.9498925 + - 0.1913439 + - 0.9314634 + - -0.9389002 + - -0.98477894 + - 0.3892994 + - -1.5344486 + - 0.3713038 + - 0.31109813 + - 1.2189252 + - 0.42187315 + - -0.016448878 + - 0.73511153 + - 0.61532474 + - 1.5558999 + - -0.287105 + - 1.6534475 + - -0.1625312 + - 1.1613071 + - 1.1697739 + - 1.0525866 + - 1.1106617 + - -0.86007065 + - 0.08663578 + - 0.7755933 + - -0.95357794 + - -0.46578205 + - -0.09211773 + - 0.21454361 + - -0.6230775 + - -0.4261074 + - -0.3109684 + - 0.37499413 + - 0.08089639 + - -1.0834663 + - 0.10616147 + - -0.17668453 + - 0.90584713 + - -0.019472152 + - 0.32551757 + - 0.2846677 + - 0.27126756 + - 0.15429564 + - -0.5521498 + - -1.3901165 + - -1.3631778 + - 0.15322357 + - -0.2693038 + - 0.65931535 + - -0.2566841 + - 0.8994683 + - 0.64375407 + - -0.5499315 + - 0.5510456 + - -1.0688804 + - 0.5970924 + - 1.421563 + - 0.23332255 + - 0.5070604 + - 0.016981704 + - 0.5529369 + - 0.046189755 + - -0.5046995 + - -1.287487 + - -0.23180762 + - -1.1458402 + - -0.5620824 + - -1.1722195 + - -0.8142969 diff --git a/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_single.snap b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_single.snap new file mode 100644 index 00000000..b9d00ee0 --- /dev/null +++ b/backends/candle/tests/snapshots/test_dense__stella_en_400m_v5_dense_1024_single.snap @@ -0,0 +1,1028 @@ +--- +source: backends/candle/tests/test_dense.rs +expression: embeddings_single +--- +- - -0.0014278395 + - 0.8564985 + - -0.56371284 + - -0.077162296 + - -1.3959801 + - 0.16868848 + - -0.0066606 + - -0.6935729 + - 0.7680596 + - -0.6885326 + - -0.7315665 + - 0.014762384 + - -0.07408829 + - -0.3171738 + - -0.45775723 + - -0.027198305 + - -0.31797674 + - 0.03447124 + - 0.26349705 + - -0.06770613 + - 0.22211355 + - -0.9706444 + - -0.20075502 + - -0.12733698 + - 0.4475564 + - -0.818189 + - -0.6589402 + - -0.80664897 + - -0.012445061 + - -0.299875 + - 0.8037751 + - 0.783486 + - -0.38686854 + - -0.8345378 + - 0.8456293 + - 0.060641773 + - -0.46693698 + - -0.75975704 + - -0.09569474 + - -0.43195814 + - -0.01045849 + - 1.4152633 + - 0.9630803 + - -0.3017511 + - -0.14166762 + - -0.5705037 + - 0.35540068 + - 0.30885217 + - -0.88800746 + - -0.41909313 + - 0.6866201 + - 0.22648033 + - -0.72892725 + - 0.21320158 + - 0.2854965 + - 0.24561587 + - -0.8959556 + - 0.5374439 + - 0.14885251 + - 0.16370402 + - 0.6889201 + - -0.52156854 + - 0.33412343 + - -0.5404771 + - 0.15279087 + - 1.0543426 + - -0.11641638 + - -0.22767082 + - 1.377584 + - 0.027651407 + - 0.013030482 + - 0.20004138 + - -1.4621748 + - -0.14566255 + - -0.8173601 + - 0.591269 + - -1.1070398 + - 0.39385313 + - 0.31373537 + - -0.6870262 + - -0.89926064 + - 1.0040805 + - 0.11994316 + - 1.2938809 + - -0.7388344 + - -0.68136215 + - -0.86092305 + - 0.17545614 + - -0.58350056 + - -0.24131991 + - 0.12882261 + - -0.29347694 + - -0.32107985 + - 0.7990383 + - 0.36803582 + - 0.22783057 + - 0.9452963 + - -0.29409137 + - -0.07162706 + - 0.7913012 + - -0.55161756 + - -0.38355213 + - 0.8577158 + - -0.6636874 + - -0.07505204 + - -0.028936006 + - 0.9943232 + - 0.88959944 + - -1.169181 + - 0.73296547 + - -0.239582 + - 1.1228241 + - 0.58872235 + - 0.5515939 + - -0.36207163 + - -1.0991017 + - -0.52109545 + - 0.05784373 + - 0.87615824 + - 0.23666331 + - 0.42431742 + - 0.32302937 + - 1.1064777 + - 0.38801908 + - -0.00650528 + - 1.4773686 + - 0.16791047 + - 0.10159061 + - 0.68253374 + - 0.6175261 + - 0.7408156 + - -0.86656404 + - 0.33377638 + - -0.3010463 + - -0.7296269 + - 0.105238736 + - -0.67472655 + - 1.2878289 + - -0.17186594 + - 0.3153095 + - -0.5765154 + - 0.20147346 + - -0.30400264 + - 1.0234276 + - -0.3370074 + - -0.2715305 + - -0.893636 + - -0.19322965 + - 0.025298197 + - 1.2759744 + - -0.3712418 + - 0.85969675 + - 0.8329356 + - 1.4318267 + - -0.9729594 + - 0.49634743 + - -0.008301608 + - -0.54760796 + - -1.1277554 + - -0.19990917 + - -0.09330505 + - -0.35682315 + - 0.5995969 + - -0.037311852 + - 0.54742575 + - -0.54079187 + - 0.92537194 + - -0.9461359 + - -1.2782127 + - -0.22866292 + - 0.31703445 + - 0.78213525 + - 1.84047 + - 1.3421893 + - 1.9887264 + - 0.052081026 + - 0.48948333 + - 0.2885021 + - 0.93934333 + - 0.58454853 + - -0.7747212 + - 0.19905978 + - 0.16807169 + - 0.6157373 + - 0.49593142 + - -0.60833687 + - 0.5455237 + - 0.69138116 + - 0.30746645 + - 0.3586419 + - 0.40374193 + - -0.69705904 + - -0.71801114 + - 1.1580749 + - -0.45524 + - -0.021989208 + - 0.40167862 + - -0.583871 + - 0.45318186 + - -0.49028802 + - -0.023927156 + - -0.70435584 + - -0.032907344 + - 1.4243655 + - -1.7540915 + - -0.046573117 + - -0.43008068 + - 0.19698568 + - -0.61650586 + - -0.74180025 + - -0.04461632 + - -0.7405187 + - 0.61665416 + - 1.0764165 + - 0.2594155 + - -0.42819247 + - -0.57580024 + - 0.2654174 + - -1.954933 + - -0.035195757 + - 0.7092524 + - 0.2637758 + - -0.35148627 + - -0.77112097 + - -0.77366537 + - -0.64676636 + - 0.45436355 + - 0.5076624 + - 0.7918469 + - 2.1426237 + - 0.020890541 + - 0.7455183 + - 0.026659388 + - -0.1077053 + - 0.38616404 + - 0.8438343 + - 0.91956383 + - 0.0971138 + - -0.26267716 + - -0.7883211 + - -0.022725243 + - 0.34956396 + - 0.3321481 + - 0.09669909 + - 1.2445072 + - -0.30863166 + - 0.99079394 + - -1.1875738 + - 1.337343 + - 0.23513585 + - 0.23539253 + - 0.113998264 + - 0.45109677 + - 1.4648498 + - -0.2619871 + - 0.8729254 + - -0.3726517 + - 1.3124776 + - 0.4928516 + - 0.89394724 + - -0.11975216 + - 1.2148577 + - -1.2999685 + - -0.26684552 + - 0.073947966 + - -1.4212005 + - -0.26876244 + - 1.1169258 + - -0.23341508 + - -0.20554651 + - 0.16080533 + - 0.97910327 + - -0.0027606636 + - -0.7898784 + - 0.11137235 + - 0.37050125 + - -0.73551893 + - 1.1598971 + - -0.4625655 + - -0.42943347 + - -0.0022569378 + - 0.8928249 + - -0.5450357 + - 0.46172872 + - 0.51259184 + - 0.29522097 + - -0.4956716 + - -1.1967921 + - 1.2894557 + - -0.6599275 + - -0.36151952 + - -1.3032105 + - -0.31509402 + - 0.62537295 + - -0.20479263 + - -1.0862913 + - 0.83935857 + - -0.43971616 + - 0.74689287 + - 0.2811537 + - -0.31536722 + - 0.9611962 + - 0.18160024 + - -0.4630222 + - 1.1151918 + - 0.56676525 + - -1.037882 + - -0.70215243 + - 0.65206844 + - -0.7508739 + - 0.52034056 + - 0.08337986 + - -0.5029751 + - -0.49964738 + - -0.45256352 + - 1.0267353 + - 0.006171384 + - 0.5149516 + - 0.19588733 + - 0.6381878 + - 0.94543904 + - 0.25832802 + - 0.43838388 + - -0.5942864 + - 0.40987185 + - 0.26561895 + - 1.2302992 + - 1.0252279 + - 0.13233446 + - -0.38165987 + - -0.18102203 + - 0.1782172 + - -1.3806758 + - -0.74322367 + - -0.008373423 + - 0.7087041 + - 0.24473004 + - 0.7338249 + - -0.66724014 + - 0.56036943 + - 0.010249855 + - 0.92869633 + - -0.9206654 + - 0.51358885 + - 0.8028294 + - -1.0313805 + - 0.15193102 + - 0.022452526 + - 0.29676232 + - 1.6086935 + - -0.6083663 + - -0.056561217 + - 0.6715695 + - -0.4773649 + - -0.05397636 + - -0.99575895 + - -0.30877495 + - -1.5602131 + - -0.3745798 + - -0.7250439 + - 0.26213205 + - 0.54799926 + - -0.34205937 + - -1.2293483 + - 0.004485772 + - -1.8011879 + - 0.07032429 + - 0.545581 + - 0.61607695 + - -0.41562283 + - 0.12793733 + - -0.4070687 + - -0.20783384 + - 0.31573188 + - 0.27809754 + - 0.4419935 + - 0.45673692 + - 0.6196787 + - 0.40913332 + - 0.25915185 + - -1.2054676 + - -0.7332389 + - -0.7251421 + - 0.0074286032 + - 0.3583672 + - -0.15188205 + - 0.31852636 + - 0.08150544 + - -0.13992758 + - -1.9413958 + - -0.47140455 + - -0.16063896 + - 0.58205575 + - -0.3183844 + - -1.2486186 + - 0.23416954 + - 0.838956 + - 1.1199996 + - 0.43661678 + - 0.3126852 + - -1.6130133 + - 0.8120902 + - 0.5300735 + - 0.75017273 + - 0.6138151 + - 0.4645229 + - -0.71319866 + - 0.6432554 + - 0.16147922 + - 1.8573819 + - 0.24313232 + - 1.4369327 + - 2.2141469 + - -0.04401333 + - -0.09830401 + - 0.3550884 + - -1.0592752 + - -0.629287 + - -0.33531702 + - 0.43419102 + - 1.0244741 + - -0.62107575 + - 0.25720438 + - 0.5240833 + - -0.059132032 + - -0.40176216 + - 0.7839997 + - -0.37356287 + - -0.39424428 + - -0.39541 + - 0.6420696 + - 0.049513757 + - 0.4978539 + - 0.7106369 + - 0.54774565 + - 0.25751126 + - -0.07279202 + - -0.08964451 + - -0.57915854 + - 0.8477608 + - -0.2268318 + - -0.25647607 + - -0.10150878 + - 0.7626515 + - 0.7491743 + - 1.0480971 + - 0.5556353 + - -0.012935473 + - -0.15476464 + - 1.0061204 + - 0.12904543 + - 1.2526407 + - 0.027618576 + - 0.7484304 + - 0.24041487 + - 0.04198889 + - 1.1810474 + - -0.5752582 + - 0.14713112 + - -0.85455924 + - 0.8214409 + - 0.15848458 + - 0.3146555 + - -0.0037392247 + - 0.32564932 + - -0.18543684 + - 0.8345826 + - -0.15631889 + - 0.29369903 + - -0.91548884 + - -1.4530405 + - -0.37504256 + - 1.1865065 + - -0.92989206 + - -0.29406232 + - 0.026921108 + - 0.17678767 + - 0.7064693 + - -0.324825 + - -0.6114866 + - 0.45012063 + - 0.7536831 + - -0.109068766 + - -0.2987717 + - -0.077455826 + - -0.515134 + - -0.7728877 + - -0.18424484 + - -1.6249285 + - 0.3809588 + - -1.04341 + - -0.30864388 + - -0.5177987 + - -0.41587126 + - -0.3653977 + - 1.2618902 + - 0.7747584 + - 0.003122734 + - -0.043963283 + - -0.00562883 + - -0.7323179 + - 0.30739534 + - -0.3720694 + - -0.10521738 + - 0.8481524 + - 0.59284234 + - 0.88113403 + - -0.96124107 + - 0.26172006 + - -0.470069 + - -0.42569926 + - -0.66602856 + - -0.22342177 + - -0.8109212 + - 1.5828595 + - 0.6960466 + - 0.41418537 + - 0.16946872 + - -0.4203509 + - 0.042592954 + - 0.3857417 + - -0.034878887 + - 0.21248993 + - 1.4583052 + - 1.3151987 + - -0.6625655 + - 0.92541856 + - -0.72420883 + - -0.39575565 + - -0.27618992 + - 0.77082056 + - 0.44359133 + - 1.0814362 + - -0.83289796 + - 0.065057494 + - 0.79225785 + - -0.09027848 + - -0.42096564 + - -0.18896155 + - -1.8084656 + - -0.2712201 + - -1.1223836 + - -0.5645305 + - 0.2901535 + - 0.2531674 + - 1.4786267 + - 0.34058163 + - -0.85071427 + - -0.3604146 + - -1.0870409 + - -0.2684465 + - -0.6065061 + - 0.5974481 + - 0.37144575 + - 0.58119273 + - 0.27692 + - 1.34744 + - -0.84245324 + - -1.3584973 + - 1.326047 + - 0.01073868 + - 0.390512 + - -0.27108517 + - 0.07563143 + - 0.8505032 + - 1.0671479 + - -0.9044585 + - -1.2797496 + - -0.38518405 + - 0.24140917 + - 0.4041085 + - -0.36962008 + - 0.3973808 + - 0.5385126 + - 0.39346886 + - 0.0104193995 + - -0.43243212 + - 0.8900615 + - -0.60094184 + - 1.5856107 + - 0.13728781 + - -0.5804206 + - 0.038907446 + - 0.29046088 + - -1.2125021 + - -0.00353311 + - 1.3653914 + - 0.23866689 + - 0.5206174 + - -0.3356276 + - 0.5662387 + - -1.315749 + - 0.48252842 + - 0.62173676 + - -1.7036545 + - 0.2775355 + - -0.07042356 + - 0.39912802 + - -0.3664452 + - -0.778048 + - 0.43697444 + - 0.35653812 + - -0.19351342 + - -0.4802999 + - 0.59974027 + - 0.074016176 + - 0.20843613 + - 0.6878496 + - 1.2297091 + - 1.1302242 + - -1.1312642 + - -0.24052395 + - -0.30979577 + - -0.36895898 + - 0.33105034 + - -0.96980554 + - 0.0634701 + - 1.1072088 + - -0.40669075 + - 0.3031543 + - 1.1989367 + - -0.36853084 + - 0.7372977 + - 0.11837225 + - 0.26552972 + - -0.20116872 + - 0.13301952 + - 1.2576036 + - -0.24281603 + - -0.51277643 + - -0.38303295 + - -0.013993908 + - -0.83533585 + - 0.4044474 + - 1.102573 + - 0.55688566 + - -0.46545514 + - 1.1817125 + - 0.6510453 + - -0.18386656 + - 0.19067746 + - 0.6996072 + - -0.177556 + - -0.48384777 + - -0.69122475 + - -0.005699061 + - -0.037157595 + - -1.4467579 + - 1.3691585 + - 0.0743089 + - -0.58958936 + - 0.20893121 + - -1.5452497 + - -0.8475164 + - -0.1779882 + - -1.0291606 + - -0.07871551 + - -0.55474645 + - -0.49345034 + - 0.13970415 + - -0.7374356 + - -0.20657794 + - -0.39123735 + - -0.8634875 + - 0.17048673 + - 0.10076537 + - -0.099436305 + - -0.5265009 + - 0.059836663 + - 0.11785293 + - -0.7012067 + - 1.2623885 + - -0.9573755 + - 0.014721398 + - -1.1469102 + - -2.2911015 + - 0.04293289 + - -0.743616 + - -0.48387223 + - 0.72650576 + - -0.2153663 + - -0.29720604 + - -0.8030761 + - -0.32397562 + - 0.40221965 + - 1.1251396 + - 0.5807987 + - 0.32796085 + - -0.18837826 + - -0.38465053 + - 0.239661 + - 1.6462294 + - -0.31729695 + - 0.8855286 + - -0.33356002 + - -1.1560462 + - 1.2232682 + - 0.2271166 + - -0.47637466 + - -0.12770933 + - 0.6360809 + - -0.5028758 + - -0.1743203 + - 0.77175856 + - 0.1784629 + - 0.058459334 + - 0.06867351 + - 0.9041299 + - 0.13815935 + - -0.15670562 + - 1.461369 + - -0.04312697 + - 0.30181086 + - 0.5559397 + - 0.8436954 + - -0.18134037 + - -0.09988105 + - -0.3723505 + - -0.47321302 + - -0.83520865 + - -0.11341758 + - 0.23625141 + - -0.010226063 + - -0.2648691 + - 0.06513404 + - 1.4228381 + - 0.13060841 + - -0.6207359 + - -0.34725493 + - 0.23584627 + - -0.9851557 + - -0.47266334 + - 0.7085393 + - -0.09065738 + - -0.70951533 + - -0.23054957 + - 0.5413324 + - -0.6678793 + - 1.7193857 + - 0.34274057 + - 1.0559349 + - -0.21271838 + - -1.2517906 + - 0.04829283 + - 0.05489319 + - 0.020226153 + - 0.49912614 + - 0.38887888 + - 0.38816816 + - -1.2442292 + - 0.3303808 + - -0.23337239 + - 0.5005021 + - -0.017345853 + - -1.0540743 + - -0.31211472 + - -0.7004706 + - -0.70864654 + - -0.44131273 + - -0.045611747 + - 0.429386 + - 0.6866664 + - 0.26310062 + - -0.5312542 + - 0.7077787 + - 0.60505986 + - 1.06185 + - -0.455896 + - -2.0135772 + - -1.5204511 + - 0.37245855 + - -0.15544541 + - -0.50282276 + - -0.7293818 + - -0.44446564 + - -0.60254925 + - 0.3934211 + - 1.2516396 + - 0.13686018 + - 0.5742132 + - -0.0018423083 + - 0.0984916 + - -0.10193388 + - 0.23821175 + - 0.50205487 + - 1.0433462 + - 0.9704495 + - -0.99784267 + - 0.085699745 + - 0.44999978 + - -1.0116285 + - 0.16715544 + - -0.2390194 + - -0.56007695 + - 0.12316808 + - 0.2365913 + - -0.085595965 + - -0.68477076 + - 0.5434077 + - -0.95075494 + - 2.1889944 + - 0.67297935 + - -2.4122968 + - 0.010907327 + - 0.48515698 + - 0.44414812 + - 0.041791413 + - -0.7623137 + - 0.3858116 + - -0.05625426 + - -0.65012795 + - -0.90224135 + - -0.81306666 + - 0.5685623 + - 0.20120904 + - 0.16015992 + - -0.12771639 + - -0.35988232 + - 0.68884975 + - 0.4729793 + - -0.0685159 + - 0.9956983 + - 0.38442174 + - -0.045943215 + - 0.75367254 + - 0.76825184 + - 0.3122699 + - 0.47207925 + - 0.2100074 + - 0.6169511 + - -0.8817591 + - 0.6004135 + - -0.40760425 + - 0.11503476 + - -0.23441753 + - -0.48133728 + - -0.81484467 + - 0.43458405 + - -0.7994372 + - 0.005896041 + - -0.9514647 + - 0.7154443 + - -0.7419076 + - -1.479343 + - -0.6813091 + - 0.0880599 + - -0.45195433 + - -0.35312283 + - -0.40824693 + - -1.2019483 + - 0.9852041 + - -0.7052331 + - 0.15257955 + - 0.24453434 + - 1.0901799 + - 0.5125673 + - 1.2270347 + - 0.8762644 + - -1.2533246 + - 0.33012614 + - -0.088065594 + - -0.53963065 + - 0.30941412 + - 0.40618733 + - -0.34078464 + - -0.29656804 + - -0.15419228 + - 0.98129976 + - 0.86919224 + - -0.08816816 + - 0.5834986 + - 0.92669934 + - -0.29608282 + - 0.26200694 + - -0.14257035 + - 0.80186856 + - 0.26013556 + - -0.8192661 + - 0.0673126 + - 1.3559809 + - 0.15953122 + - 0.12193849 + - -0.9855138 + - 1.1901648 + - -0.4618241 + - -0.0911454 + - 0.802613 + - 1.2701794 + - -0.23677644 + - -1.2519453 + - 0.71607137 + - 0.92035747 + - -0.62538624 + - 1.5103241 + - -0.80007315 + - 0.33570737 + - -0.5900537 + - -1.105646 + - 0.26965466 + - -0.56524664 + - -1.0891707 + - 0.80500734 + - 1.0073261 + - 0.8516231 + - 0.2846341 + - 0.021863783 + - -0.030895697 + - 0.4531852 + - 0.057674393 + - -1.3860906 + - 0.2807191 + - 0.6454668 + - -0.086350024 + - -0.22122198 + - -0.91251653 + - -0.30233338 + - 1.745604 + - -0.34630272 + - 1.0705025 + - 0.5886306 + - -0.557568 + - -0.42312482 + - 0.38263345 + - -0.03148527 + - -0.10465591 + - -0.34823352 + - 0.175807 + - 0.2505495 + - 0.23488253 + - -0.3790916 + - 0.080328636 + - -1.2244072 + - -0.59671885 + - 0.26484057 + - -0.007500753 + - -0.012369186 + - 0.095170885 + - -0.17913562 + - 0.7619838 + - 0.017722324 + - -0.5795547 + - -0.33227792 + - -0.15362066 + - -0.4837142 + - 0.48488715 + - 0.647977 + - -0.57872444 + - -0.81019527 + - 0.26567167 + - -0.1130701 + - -0.87123144 + - -0.0011230484 + - -0.5436704 + - -0.112206735 + - -0.51583534 + - -0.9498925 + - 0.1913439 + - 0.9314634 + - -0.9389002 + - -0.98477894 + - 0.3892994 + - -1.5344486 + - 0.3713038 + - 0.31109813 + - 1.2189252 + - 0.42187315 + - -0.016448878 + - 0.73511153 + - 0.61532474 + - 1.5558999 + - -0.287105 + - 1.6534475 + - -0.1625312 + - 1.1613071 + - 1.1697739 + - 1.0525866 + - 1.1106617 + - -0.86007065 + - 0.08663578 + - 0.7755933 + - -0.95357794 + - -0.46578205 + - -0.09211773 + - 0.21454361 + - -0.6230775 + - -0.4261074 + - -0.3109684 + - 0.37499413 + - 0.08089639 + - -1.0834663 + - 0.10616147 + - -0.17668453 + - 0.90584713 + - -0.019472152 + - 0.32551757 + - 0.2846677 + - 0.27126756 + - 0.15429564 + - -0.5521498 + - -1.3901165 + - -1.3631778 + - 0.15322357 + - -0.2693038 + - 0.65931535 + - -0.2566841 + - 0.8994683 + - 0.64375407 + - -0.5499315 + - 0.5510456 + - -1.0688804 + - 0.5970924 + - 1.421563 + - 0.23332255 + - 0.5070604 + - 0.016981704 + - 0.5529369 + - 0.046189755 + - -0.5046995 + - -1.287487 + - -0.23180762 + - -1.1458402 + - -0.5620824 + - -1.1722195 + - -0.8142969 diff --git a/backends/candle/tests/test_dense.rs b/backends/candle/tests/test_dense.rs new file mode 100644 index 00000000..e00fad81 --- /dev/null +++ b/backends/candle/tests/test_dense.rs @@ -0,0 +1,128 @@ +mod common; + +use crate::common::{sort_embeddings, SnapshotEmbeddings}; +use anyhow::Result; +use common::{batch, cosine_matcher, download_artifacts, load_tokenizer}; +use text_embeddings_backend_candle::CandleBackend; +use text_embeddings_backend_core::{Backend, ModelType, Pool}; + +#[test] +#[serial_test::serial] +fn test_stella_en_400m_v5_default_dense() -> Result<()> { + let model_root = + download_artifacts("dunzhang/stella_en_400M_v5", None, Some("2_Dense")).unwrap(); + let tokenizer = load_tokenizer(&model_root)?; + + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Embedding(Pool::Mean), + None, // This will default to 2_Dense if available and if model type is embedding + )?; + + let input_batch = batch( + vec![ + tokenizer.encode("What is Deep Learning?", true).unwrap(), + tokenizer.encode("Deep Learning is...", true).unwrap(), + tokenizer.encode("What is Deep Learning?", true).unwrap(), + ], + [0, 1, 2].to_vec(), + vec![], + ); + + let matcher = cosine_matcher(); + + let (pooled_embeddings, _) = sort_embeddings(backend.embed(input_batch)?); + let embeddings_batch = SnapshotEmbeddings::from(pooled_embeddings); + insta::assert_yaml_snapshot!( + "stella_en_400m_v5_default_dense_batch", + embeddings_batch, + &matcher + ); + + let input_single = batch( + vec![tokenizer.encode("What is Deep Learning?", true).unwrap()], + [0].to_vec(), + vec![], + ); + + let (pooled_embeddings, _) = sort_embeddings(backend.embed(input_single)?); + let embeddings_single = SnapshotEmbeddings::from(pooled_embeddings); + + insta::assert_yaml_snapshot!( + "stella_en_400m_v5_default_dense_single", + embeddings_single, + &matcher + ); + assert_eq!(embeddings_batch[0], embeddings_single[0]); + assert_eq!(embeddings_batch[2], embeddings_single[0]); + + Ok(()) +} + +#[test] +#[serial_test::serial] +fn test_stella_en_400m_v5_dense_1024() -> Result<()> { + let model_root = + download_artifacts("dunzhang/stella_en_400M_v5", None, Some("2_Dense_1024")).unwrap(); + let tokenizer = load_tokenizer(&model_root)?; + let dense_path = model_root.join("2_Dense_1024"); + + let backend = CandleBackend::new( + &model_root, + "float32".to_string(), + ModelType::Embedding(Pool::Mean), + Some(&dense_path), + )?; + + let input_batch = batch( + vec![ + tokenizer.encode("What is Deep Learning?", true).unwrap(), + tokenizer.encode("Deep Learning is...", true).unwrap(), + tokenizer.encode("What is Deep Learning?", true).unwrap(), + ], + [0, 1, 2].to_vec(), + vec![], + ); + + let matcher = cosine_matcher(); + + let (pooled_embeddings, _) = sort_embeddings(backend.embed(input_batch)?); + + // Check that embeddings have 1024 dimensions + assert!(!pooled_embeddings.is_empty()); + assert_eq!(pooled_embeddings[0].len(), 1024); + assert_eq!(pooled_embeddings[1].len(), 1024); + assert_eq!(pooled_embeddings[2].len(), 1024); + + let embeddings_batch = SnapshotEmbeddings::from(pooled_embeddings); + insta::assert_yaml_snapshot!( + "stella_en_400m_v5_dense_1024_batch", + embeddings_batch, + &matcher + ); + + let input_single = batch( + vec![tokenizer.encode("What is Deep Learning?", true).unwrap()], + [0].to_vec(), + vec![], + ); + + let (pooled_embeddings, _) = sort_embeddings(backend.embed(input_single)?); + + // Check that single embedding also has 1024 dimensions + assert!(!pooled_embeddings.is_empty()); + assert_eq!(pooled_embeddings[0].len(), 1024); + + let embeddings_single = SnapshotEmbeddings::from(pooled_embeddings); + + insta::assert_yaml_snapshot!( + "stella_en_400m_v5_dense_1024_single", + embeddings_single, + &matcher + ); + assert_eq!(embeddings_batch[0], embeddings_single[0]); + assert_eq!(embeddings_batch[2], embeddings_single[0]); + + Ok(()) +} From 144aec1a870ea45119ff7ab6c5a6d254df49a0d9 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:46:17 +0200 Subject: [PATCH 11/13] Rename with `serde` in `DenseActivation` --- backends/candle/src/models/dense.rs | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/backends/candle/src/models/dense.rs b/backends/candle/src/models/dense.rs index 308bc6c0..e327e2ec 100644 --- a/backends/candle/src/models/dense.rs +++ b/backends/candle/src/models/dense.rs @@ -3,9 +3,11 @@ use candle::{Result, Tensor}; use candle_nn::VarBuilder; use serde::Deserialize; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Deserialize, PartialEq)] pub enum DenseActivation { + #[serde(rename = "torch.nn.modules.activation.Tanh")] Tanh, + #[serde(rename = "torch.nn.modules.linear.Identity")] Identity, } @@ -23,7 +25,7 @@ pub struct DenseConfig { in_features: usize, out_features: usize, bias: bool, - activation_function: Option, + activation_function: Option, } pub trait DenseLayer { @@ -45,21 +47,13 @@ impl Dense { } else { None }; - - // Here we cannot leverage HiddenAct, since the activation functions for the - // 2_Dense/config.json are defined as PyTorch imports instead, so the deserialization would - // be different, as well as the range of commonly used activation functions (mainly tanh - // and identity) - let activation = match config.activation_function { - // e.g. https://huggingface.co/sentence-transformers/LaBSE/blob/main/2_Dense/config.json - Some(ref act) if act == "torch.nn.modules.activation.Tanh" => DenseActivation::Tanh, - // e.g. https://huggingface.co/NovaSearch/stella_en_400M_v5/blob/main/2_Dense/config.json - Some(ref act) if act == "torch.nn.modules.linear.Identity" => DenseActivation::Identity, - _ => DenseActivation::Identity, - }; - let linear = Linear::new(weight, bias, None); + let activation = config + .activation_function + .clone() + .unwrap_or(DenseActivation::Identity); + Ok(Self { linear, activation, From 0d1b698f4617c7c20103c819fdab08cae3d5ec86 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:48:21 +0200 Subject: [PATCH 12/13] Add comments in `DenseActivation` --- backends/candle/src/models/dense.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backends/candle/src/models/dense.rs b/backends/candle/src/models/dense.rs index e327e2ec..b3945b45 100644 --- a/backends/candle/src/models/dense.rs +++ b/backends/candle/src/models/dense.rs @@ -4,10 +4,13 @@ use candle_nn::VarBuilder; use serde::Deserialize; #[derive(Debug, Clone, Deserialize, PartialEq)] +/// The activation functions in `2_Dense/config.json` are defined as PyTorch imports pub enum DenseActivation { #[serde(rename = "torch.nn.modules.activation.Tanh")] + /// e.g. https://huggingface.co/sentence-transformers/LaBSE/blob/main/2_Dense/config.json Tanh, #[serde(rename = "torch.nn.modules.linear.Identity")] + /// e.g. https://huggingface.co/NovaSearch/stella_en_400M_v5/blob/main/2_Dense/config.json Identity, } From a368460bd7e376089c585c35a2418231d4db6966 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:50:07 +0200 Subject: [PATCH 13/13] Add missing `None` in `run` for `dense_path` --- router/tests/common.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/router/tests/common.rs b/router/tests/common.rs index 1ae4333b..47621176 100644 --- a/router/tests/common.rs +++ b/router/tests/common.rs @@ -60,6 +60,7 @@ pub async fn start_server(model_id: String, revision: Option, dtype: DTy None, None, None, + None, 8090, None, None,