gunicorn

Gunicorn max_requests / max_requests_jitter Gunicornでメモリリークを避けるために子プロセスを定期的に再起動するには、max_requestsとmax_requests_jitterの設定を利用するのが効果的です。これにより、一定のリクエスト数を処理した後にワーカープロセスが自動的に再起動されます。 以下はその設定方法です: max_requests: 各ワーカープロセスが再起動される前に処理するリクエストの最大数を指定します。 max_requests_jitter: 再起動のタイミングをランダム化するためのオプションです。これにより、全てのワーカープロセスが同時に再起動されるのを防ぎます。 Gunicornの設定ファイル(例:gunicorn.conf.py)に以下のように追加します: 1 2 3 4 # gunicorn.conf.py max_requests = 1000 # 1000リクエストごとに再起動 max_requests_jitter = 50 # 再起動タイミングをランダム化 または、コマンドラインで起動する際にオプションとして指定することもできます: 1 gunicorn --max-requests 1000 --max-requests-jitter 50 myapp:app これにより、各ワーカープロセスは1000回のリクエストを処理した後、ランダムに最大50回のリクエストを追加で処理してから再起動されます¹(https://qiita.com/ryu22e/items/2668a2243a5191bcdc78)²(https://zenn.dev/xknzw/articles/d2d337ae2f8966)³(https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934)。 この設定により、メモリリークの影響を最小限に抑えつつ、サービスの安定性を保つことができます。 ¹(https://qiita.com/ryu22e/items/2668a2243a5191bcdc78): gunicorn(>=19.2)ではmax_requestsと一緒にmax_requests_jitterも使おう - Qiita ²(https://zenn.dev/xknzw/articles/d2d337ae2f8966): gunicorn syncワーカーの全体像メモ - Zenn ³(https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934): gunicornでディスク使用量が増え続ける現象への対処 - Qiita (1) gunicorn(>=19.2)ではmax_requestsと一緒にmax_requests_jitterも使おう. https://qiita.com/ryu22e/items/2668a2243a5191bcdc78. (2) gunicorn syncワーカーの全体像メモ - Zenn. https://zenn.dev/xknzw/articles/d2d337ae2f8966. (3) gunicornでディスク使用量が増え続ける現象への対処 - Qiita. https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934.

2024年10月11日 · 1 分

ltsv

ltsv ltsv から csvに変換 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/env python import click import pandas as pd import csv import re @click.group() @click.option("--tf_output", "-to", default=None) @click.pass_context def group(ctx, tf_output): pass @group.command() @click.argument("src") @click.pass_context def ltsv2csv(ctx, src): """LTSV to CSV""" output = f"{src}.csv" def get_line_dict(line): return dict(re.search(r"^([^\:]+)\:(.*)$", i).groups() for i in line) with open(src) as f: data = pd.DataFrame(map(get_line_dict, csv.reader(f, delimiter="\t"))) data.to_csv(output, index=False) if __name__ == "__main__": group()

2024年10月11日 · 1 分

alembic: マイグレーションツール

Alembic リレーション フェイクマイグレーション

2024年10月10日 · 1 分

NPS

NPS(Net Promoter Score) Net Promoter Score (NPS) とは、顧客が企業や製品、サービスを他人に推薦する可能性を測定する指標です。 NPSは、顧客満足度やロイヤルティを評価するために広く使用されています。 NPSは、次のような質問に基づいて計算されます: 「この製品/サービスを友人や同僚に推薦する可能性はどのくらいありますか?」顧客は0から10のスケールで回答します。 9-10: 推奨者 (Promoters) - 非常に満足しており、積極的に推薦する可能性が高い。 7-8: 中立者 (Passives) - 満足しているが、積極的に推薦する可能性は低い。 0-6: 批判者 (Detractors) - 不満を持っており、他人に推薦しない可能性が高い。 NPSは、推奨者の割合から批判者の割合を引くことで計算されます。例えば、100人の顧客のうち60人が推奨者、20人が中立者、20人が批判者の場合、NPSは40(60% - 20%)となります。 NPSは、企業が顧客のフィードバックを理解し、改善点を見つけるための重要なツールです。 例 NPSの設問はシンプルで、次のように記述されます: 「この製品/サービスを友人や同僚に推薦する可能性はどのくらいありますか?」 回答は0から10のスケールで行います。具体的には以下のような形式です: 0 - 全く推薦しない 1 2 3 4 5 6 7 8 9 10 - 非常に推薦する この設問に続けて、自由記述欄を設けることも一般的です。例えば: 「この評価の理由を教えてください。」 これにより、顧客の具体的なフィードバックを収集しやすくなります。 記事 第113回: NPS(Net Promoter Score)という名の推奨意向 NPS®(ネットプロモータースコア)とは?

2024年10月6日 · 1 分

アンケート

アンケート 「ランキング(順位回答) 「ランキング(順位回答)」形式の設問を設定する際には、回答者に複数の選択肢を提示し、それらを順位付けしてもらう形になります。具体的な記述例を以下に示します: 設問例 Q1. 以下の旅行先を、行きたい順に1位から5位まで順位付けしてください。 パリ ニューヨーク 東京 ローマ シドニー 回答方法 回答者は、各選択肢に対して順位を記入します。例えば: 1位: 東京 2位: パリ 3位: シドニー 4位: ニューヨーク 5位: ローマ このように、回答者が自分の好みに基づいて順位を付けることで、アンケートの結果から人気のある選択肢や優先順位を分析することができます。

2024年10月6日 · 1 分

DSpy

DSPy (Declarative Sequencing for Python) https://dspy-docs.vercel.app/ (Programming—not prompting—Language Models) DSPyについて DSPyは、LMプロンプトとウェイトをアルゴリズム的に最適化するためのフレームワークです、 特にLMがパイプライン内で1回以上使用される場合。 LMを使用して複雑なシステムを構築する なし DSPy、あなたは一般的に次のことを行う必要があります: (1)問題をステップに分解する、 (2)各ステップが個別にうまく機能するまでLMをうまく促す、 (3)ステップを微調整してうまく連携する、 (4)合成例を生成する各ステップを調整し、 (5)これらの例を使用して、より小さなLMを調整してコストを削減します。 現在、これは困難で厄介です。パイプライン、LM、またはデータを変更するたびに、すべてのプロンプト(または微調整手順)を変更する必要がある場合があります。 これをより体系的ではるかに強力にするために、 DSPy 2つのことを行います。 まず、プログラムの流れを分離します(modules)各ステップのパラメーター(LMプロンプトとウェイト)から。 第二に、 DSPy 新しい optimizers、これは、LMコールのプロンプトやウェイトを調整できるLM駆動アルゴリズムです。metric 最大化したい。 DSPy のような強力なモデルを日常的に教えることができます GPT-3.5 または GPT-4 と地元のモデル T5-base または Llama2-13b タスクではるかに信頼性が高くなること、つまり、より高い品質を持つこと、および/または特定の障害パターンを回避すること。 DSPy オプティマイザーは 同じ プログラム 異なる 各LMの指示、ショットの少ないプロンプト、および/またはウェイトの更新(finetunes)。 これは、LMとそのプロンプトが、データから学習できるより大きなシステムの最適化可能な部分としてバックグラウンドにフェードインする新しいパラダイムです。 tldr; LMでハードタスクを解決するためのプロンプトが少なく、スコアが高く、より体系的なアプローチ。 ニューラルネットワークへのアナロジー ニューラルネットワークを構築するときは、マニュアルを書きません for-loops 以上のリスト 手調整 フロート。代わりに、次のようなフレームワークを使用できます PyTorch レイヤーを作成する(例: Convolution または Dropout)0次に、オプティマイザー(SGDやAdamなど)を使用して、ネットワークのパラメーターを学習します。 同上!DSPy 適切な汎用モジュールを提供します (例: ChainOfThought、 ReAct等)、文字列ベースのプロンプトトリックを置き換えます。 迅速なハッキングと1回限りの合成データジェネレーターを置き換えるには、 DSPy 一般的なオプティマイザーも提供します(BootstrapFewShotWithRandomSearch または MIPRO)、 これはプログラムのパラメーターを更新するアルゴリズムです。 コード、データ、アサーション、またはメトリックを変更するときはいつでも、 コンパイル あなたのプログラムをもう一度 DSPy 変更に適合する新しい効果的なプロンプトを作成します。 ...

2024年10月4日 · 1 分

Qdrant

Qdrant ベクターデータベース Chroma https://www.trychroma.com/ Pinecone https://www.pinecone.io/ Weaviate https://weaviate.io/ja Qdrant https://qdrant.tech/ レコードID Qdrantのレコードを更新する際のキー情報は、レコードのIDです。 Qdrantでは、各レコード(Point)は一意の識別子(ID)、ベクトル、そしてペイロード(追加情報)で構成されています¹。 レコードを更新する際には、このIDを使用して特定のレコードを指定します¹。 Lexical Search Lexical Search(レキシカル検索)は、キーワードベースの検索の一種で、[力されたクエリとデータベース内のテキストの正確な一致を探す方法です¹²。具体的には、以下のような特徴があります:> 正確な一致:クエリに入力された単語とデータベース内の単語が正確に一致するものを探します。スペルや文法のバリエーションは無視されます¹。 高速で効率的:特定の名前や日付など、変更されにくい情報を迅速に見つけるのに適しています¹。 シンプルな実装:多くの検索エンジンやデータベースで一般的に使用される方法です²。 例えば、データベース内で特定の人物の名前を探す場合、レキシカル検索を使用するとその名前と正確に一致するエントリを見つけることができます。 一方で、レキシカル検索は意味の理解を伴わないため、同義語や文脈を考慮した検索には向いていません³。そのため、より高度な検索が必要な場合は、セマンティック検索(意味検索)などの他の方法が使用されることがあります¹。 (1) Lexical Search Vs Semantic Search - Try Speak Free!. https://speakai.co/lexical-search-vs-semantic-search/. (2) Lexical and semantic search with Elasticsearch. https://www.elastic.co/search-labs/blog/lexical-and-semantic-search-with-elasticsearch. (3) Search in a Knowledge Base – Introduction & Lexical Search - Semedy. https://www.semedy.com/post/search-in-a-knowledge-base-introduction-lexical-search. Dense Search(デンス検索) Dense Search(デンス検索)は、高次元の数値ベクトルを使用してデータを検索する方法です。 これは、特にセマンティック検索(意味検索)に適しており、クエリとデータベース内のドキュメントの間の意味的な類似性を評価します¹²。 特徴 ベクトル表現:テキストや画像などのデータを高次元のベクトルに変換します。 これにより、データの意味的な情報を数値として表現できます¹。 距離計算:クエリベクトルとデータベース内のベクトル間の距離(例えば、ユークリッド距離やコサイン類似度)を計算し、最も類似した結果を返します²。 機械学習モデル:BERTやGloVeなどの機械学習モデルを使用して、データをベクトルにエンコードします²。 利点 意味的な一致:キーワードの正確な一致に依存せず、意味的に関連する結果を返すことができます³。 多様なデータ対応:テキストだけでなく、画像や音声などの異なるデータタイプにも適用可能です¹。 使用例 Dense Searchは、検索エンジンやレコメンデーションシステムなどで広く使用されています。 例えば、ユーザーが入力したクエリに対して、意味的に関連するドキュメントや商品を見つけるのに役立ちます。 ¹: Dense Vector Search :: Apache Solr Reference Guide ²: Hybrid Search Explained - Weaviate ³: Understanding hybrid search - Pinecone Docs ...

2024年10月4日 · 2 分

MyScaleDB

MyScaleDB https://github.com/myscale/MyScaleDB 記事 Unleashing the Power of HNSW Indexes with pgvector

2024年10月2日 · 1 分

Grafana

Grafana Grafanaでかっけぇダッシュボード作るよ!(構築・設定編) ネットワークメトリクスを視覚化してみた(collectd + Graphite + Grafana) 収集:collectd - SNMPでルータからメトリクスを収集する 蓄積:Graphite - 収集したメトリクスを保存する 描画:Grafana - メトリクスを時系列で表示する AWS AWSの利用料金をGraphina(Grafana)を使って可視化する事例について、いくつかの方法があります。以下はその一例です。 事例: GrafanaでAWSのコストを可視化 請求メトリクスの取得: まず、AWS側で請求額のメトリクスを取得します。AWS Cost ExplorerやCloudWatchを使用して、必要なデータを収集します。 認証情報の作成: Grafanaで使用するためのIAMユーザーを作成し、必要なポリシー(例: CloudWatchReadOnlyAccess)をアタッチします。アクセスキーとシークレットキーを取得します。 データソースの設定: GrafanaのデータソースとしてCloudWatchを設定します。取得したアクセスキーとシークレットキーを使用して認証を行います。 ダッシュボードのインポート: Grafanaのダッシュボードテンプレートを使用して、AWSのコストを可視化するダッシュボードをインポートします。例えば、「AWS Billing Dashboard」というテンプレートを使用することができます¹。 カスタマイズ: インポートしたダッシュボードを自分のニーズに合わせてカスタマイズします。不要なデータを削除したり、必要な情報を追加したりします。 具体的な手順 IAMユーザーの作成: 1 2 3 aws iam create-user --user-name <username> aws iam attach-user-policy --user-name <username> --policy-arn arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess aws iam create-access-key --user-name <username> Grafanaでの設定: Grafanaのメニューから「Connections > Data sources > Add new data source」を選択し、CloudWatchをデータソースとして追加します。 IAMユーザーのアクセスキーとシークレットキーを入力し、リージョンを us-east-1 に設定します。 ダッシュボードのインポート: ...

2024年10月1日 · 2 分

JAMStack

JAMStack 記事 【徹底比較】Jamstack vs WordPress|これからのWebはJamstack! Netlify vs Wix 【2024年版】おすすめのReactベース静的サイトジェネレーター6選 静的サイトジェネレータについて初心者向けに分かりやすく解説 【2024年】Webデザインのトレンド・参考サイトまとめ JamstackによりWebサイト構築のあり方が一変する可能性 2024年のWeb開発業界トレンドと最新技術 Jamstackで制作はどう変わる? 「削減できるもの」と「必要になるもの」 Jamstack とは何なの?メリットとデメリットはあるの? Jamstackとは何か?その意味と重要性について詳しく解説 JamStack簡単まとめ Jamstack入門:次世代ウェブ開発のための革新的なアーキテクチャとは何か? 2024 年の Web 開発トレンド トップ 10 Jamstackとは?パフォーマンスの高いフロントエンド構築 Jamstackによるサイト構築について 新しい古典:Jamstack と MACH が従来の CMS の概念に向け進化する 今話題の「ヘッドレスCMS」とは? Jamstack、マルチデバイスにも対応したCMSの新潮流 セキュリティ: 【2024年】サイバーセキュリティの現状と今後の方向性 Wordpress Jamstack、ノーコード vs WordPress? 2024年のWeb制作トレンドを予想しよう【おすすめUdemy講座紹介 ブロックエディタ FSE Snow Monkey, SWell Wordpress + Snow Monkey, Wordpress + Astro データ主権 マーケットシェア Wordpressは 60% (40%など調査主体による) シェア 0.2% 高トラフィックサイトで利用されている。 Netlify対Wix:違いは何ですか? はじめに: この記事では、NetlifyとWixの主な違いについて説明します。 これらのプラットフォームはさまざまな目的を果たし、Netlifyは人気のあるWeb開発およびホスティングプラットフォームですが、WixはWebサイトビルダーおよびホスティングプラットフォームです。 それらの違いを理解することは、個人や企業がWeb関連のニーズに合った適切なプラットフォームを選択するときに、情報に基づいた決定を行うのに役立ちます。 導入プロセス:Netlifyは、開発者がGitを使用してWebサイトを簡単に構築、テスト、および展開できるようにする、最新の合理化された展開プロセスを提供します。 継続的な展開、バージョン管理、ワンクリック展開を提供し、高速で効率的なワークフローを求める開発者に最適です。 一方、Wixは、Webサイトを作成するためのよりユーザーフレンドリーなドラッグアンドドロップインターフェイスを提供します。 これは、技術的な専門知識のない個人に対応する簡略化されたWebサイト構築エクスペリエンスを提供します。 ...

2024年9月19日 · 1 分