タグ

ブックマーク / zenn.dev (47)

  • Zennへのスパム投稿が急増したのでLLMでなんとかした話

    はじめに Zennチームの吉川(dyoshikawa)です。 2024年6月頃より、Zennにいわゆるスパム投稿が急増したため、LLM(生成AI)を活用してのスパム投稿自動検出の仕組みを構築しました。 目的の性質上、あまり詳細については開示できないのですが、技術的な知見の共有のため、そして可能な限りコミュニティへ運営チームの取り組みをオープンにしたいという思いがあり件の概要を紹介したいと思います。 課題 2024年6月頃より、Zennにスパム投稿が急増しました。それに伴いユーザの違反報告が増加したことで我々Zennの運営メンバーも事態を認識することになりました。 スパム投稿が読者の目に触れることが定常化することは避けたいですし、その都度違反報告をしてくださるユーザの負担も大きなものだろうという思いがあり、対策を進めることになりました。 解決策 この状況に対して、ある程度自動でスパム投稿を

    Zennへのスパム投稿が急増したのでLLMでなんとかした話
    pukuman
    pukuman 2024/08/08
  • 中級 Vim 操作

    この記事は Vim 駅伝 の 06/05 の記事です。 前回の記事は thinca さんによる、 06/03 の「Meguro.vim #23 を開催しました」という記事でした。 次回は 06/07 に投稿される予定です。 はじめに 記事は以下の記事のオマージュです。 Vim の基操作のうち、比較的マイナーながら汎用的に使える機能や小技を集めました。プラグインや複雑な設定が必要なものは含まれておらず、いずれも VimNeovim の両方で使うことができます。気になったものがあれば使ってみてください。 ノーマルモード編 検索結果を次々と置き換える Vim で文字列置換を行う最も有名な方法は :substitute コマンド (短縮形: :s) ですが、ノーマルモードの cgn というイディオムも便利です。これは c オペレータと gn テキストオブジェクト (:h gn) を組み合

    中級 Vim 操作
    pukuman
    pukuman 2024/06/05
  • プログラマ視点での生成AIとの付き合い方

    プログラミングについて、最近考えてることについてのポエム。 基的に、 GPT-4 と Claude-3-Opus を使った経験を念頭に置いて話をする。機械学習エンジニアではないので、あくまで利用者に徹した視点での話。仕事で生成AIを使ったパイプラインを作ったりはしている。 生成AIの進化速度を予測しておく 今大事なことは、今AIがどの程度の性能かという定点の話ではなく、その進化の速度を認識すること。 コード生成というタスクにおいて、生成AIモデルを人間に当てはめると、こんな感じの人物像を自分は持っている。 GPT-4: プログラミング経験2年目の大学2年生 Claude-3-Opus: プログラミング経験3年目の大学3年生 ここでいうn年目は、業務経験ではなく、プログラミングの単位がある大学での、教育課程としての経験年数。今のひたすら学習量を増やす方式だと、単に1年に1年分ぐらい賢くなっ

    プログラマ視点での生成AIとの付き合い方
    pukuman
    pukuman 2024/06/03
  • オープンソースのRAGアプリ「RAGFlow」を試す

    かなり新し目のフレームワークRAGプラットフォームアプリ RAGFlowとは? RAGFlowは、深い文書理解に基づいたオープンソースのRAG(Retrieval-Augmented Generation)エンジンである。LLM(大規模言語モデル)を組み合わせることで、様々な複雑なフォーマットのデータから根拠のある引用に裏打ちされた、真実味のある質問応答機能を提供し、あらゆる規模のビジネスに合理化されたRAGワークフローを提供する。

    オープンソースのRAGアプリ「RAGFlow」を試す
  • M1MacでOllamaを試したら爆速で驚いた

    はじめに いつもNVIDIAが載っているWindowsで楽しくLLMを動かしたり生成AIライフを楽しんでいますが、今回はMacOSでOllamaを入れてLlama3を動かしてみました。 スペック: Apple M1 Pro(16 GB) 少し前だとCUDAのないMacでは推論は難しい感じだったと思いますが、今ではOllamaのおかげでMacでもLLMが動くと口コミを見かけるようになりました。 ずっと気になっていたのでついに私のM1 Macでも動くかどうかやってみました! 結論、爆速で推論できていたのでとても驚きました。OSS開発に感謝です! Ollamaとは OllamaとはローカルでLLMを動かすことができるアプリケーションです。 以下からダウンロードできます。 MacOSLinuxで使うことができます。Windowsもプレビュー版があるみたいです。 #いざ推論 ダウロードができたらシ

    M1MacでOllamaを試したら爆速で驚いた
  • ニューラルかな漢字変換エンジン「Zenzai」をazooKey on macOSに搭載します

    こんにちは。iOSの日本語入力アプリである「azooKey」を開発しているMiwaです。 azooKeyは最近macOS版の開発が進んでいます。このazooKey on macOSに、完全にローカルで動作するニューラルかな漢字変換エンジンである「Zenzai」を開発し、搭載します。この記事ではZenzai技術を解説します。 Zenzaiを搭載したazooKey on macOSは現在アルファ版としてリリースしています。macOSをご利用の方はぜひ入れて試してみてください! Zenzaiの概要 日本語入力に欠かせないかな漢字変換ですが、その歴史は長く、50年にも及びます。この間様々なアルゴリズムが提案され利用されてきましたが、近年の技術開発はやや落ち着きつつあります。オープンソースのかな漢字変換ソフトウェアで今でも広く利用されているものは数えるほどしかありません。 クローズドソースのシステ

    ニューラルかな漢字変換エンジン「Zenzai」をazooKey on macOSに搭載します
  • RAGでの回答精度向上のためのテクニック集(基礎編)

    はじめまして。株式会社ナレッジセンスの門脇です。普段はエンジニアPMとして、「社内データに基づいて回答してくれる」チャットボットをエンタープライズ企業向けに提供しています(一応、200社以上に導入実績あり)。ここで開発しているチャットボットは、ChatGPTを始めとしたLLM(Large Language Models)を活用したサービスであり、その中でもRAG(Retrieval Augmented Generative)という仕組みをガッツリ利用しています。記事では、RAG精度向上のための知見を共有していきます。 はじめに この記事は何 この記事は、LlamaIndexのAndrei氏による『A Cheat Sheet and Some Recipes For Building Advanced RAG』[1]という記事で紹介されている「RAGに関するチートシート」について、And

    RAGでの回答精度向上のためのテクニック集(基礎編)
  • WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)

    WebブラウザでOS動かしてどうすんだよ という根源的な疑問に回答が無いままとりあえずできちゃった。。 ※ コマンドが終了してもプロンプトが出ません。Enterを空打ちする必要があります (バグ) WasmLinuxは、WebAssembly "ネイティブ" なLinux環境です。カーネルもユーザーランドも、WebAssemblyのツールチェインでコンパイルされたWebAssemblyモジュール(をwasm2cでCにしたもの)です。 前回はカーネルしか動いていなかったんですが、今回はブラウザ上で ifconfig lo up して ping 127.0.0.1 したり top したり vi したりできます。BusyBox入ってるので。 ただしまだ実用性は皆無 です。Proof of Conceptって奴ですね。 前回の記事: 今回はMUSL libcを移植してBusyBoxが動くようになっ

    WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)
  • Vimで自動化を極める:入門者向けautocmdガイド

    はじめに Vimは、そのパワフルなカスタマイズ性と柔軟性で知られており、世界中のプログラマーやテキストエディタ愛好家たちから絶大な支持を受けています。このエディタの真価を引き出す鍵の一つが、autocmd(自動コマンド)機能です。autocmdを用いることで、ファイルの読み込みや保存、さらにはウィンドウのフォーカスが変更されるといった特定のイベントが発生した際に、自動でスクリプトやコマンドを実行することが可能になります。 このガイドでは、autocmdの基概念から始め、その豊富な応用方法を段階的に解説していきます。初心者でも容易に理解できるように、具体的な使用例を通じて、Vimの作業効率を大幅に向上させる方法をご紹介します。Vimをカスタマイズし、より快適なテキスト編集環境を実現するための第一歩として、このガイドをお役立てください。 autocmdを活用することで、あなたのVim使用経験

    Vimで自動化を極める:入門者向けautocmdガイド
    pukuman
    pukuman 2024/02/09
  • プログラマーの教養としての原則

    参考 プリンシプル オブ プログラミング - 3年目までに身につけたい一生役立つ101の原理原則 発行: 2016/3/23 著者: 上田 勲 まえがき プログラマーの世界で語り継がれる原則や格言を知ることは、その共通の言語や道徳を理解する手助けとなります。 『プリンシプル オブ プログラミング』(以下、プリプロ)は、統一された語句と形式により、先人のプログラマーたちが重要視していた思考法やアプローチを、微妙な概念の違いに気を使うことなく理解できるよう構築されています。この記事では、このを読む上で役立つ101の原則マップと原則から抽出した価値観をまとめます。プリプロを読む際のガイドになればと思います。 一方で、プリプロに収録されていないウィットに富んだ原則や格言も多く存在します。この記事では、主に私の現場で重要視しているプリプロの101の原則以外の原則・格言も追加で紹介します。 プログラ

    プログラマーの教養としての原則
  • 良いコメントが良い設計を導く

    要旨 コメントを適切に記述することは、特にインターフェイス(クラスやメソッド)において重要です。これにより、直感性が高まり、抽象化が十分に行われているかを確認する手助けになります。そのため、コメントはソフトウェア設計プロセスの重要な一部と位置づけられます。 2種類のコメントタイプ まず、コメントを2種類に分類します。 1️⃣ コードをより詳細化するコメント(lower-level comment) 2️⃣ コードをより抽象化するコメント(higher-level comment) どちらも必要なコメントとしつつ、書では後者のコメントをより重視しています。 1️⃣ コードを詳細化するコメント(lower-level comment) 変数名などに残すタイプのコメントで、宣言した対象の単位や境界値、null許容などの詳細を明示することで、コードの正確性を高めます。こちらのタイプのコメントも必

    良いコメントが良い設計を導く
  • Vimの思想について

    ここでいくつかのルールとして motion-count-multiplied 例えば10jで十行下へ移動、d2kで上2行を削除など operator-doubled 例えばyy, dd, cc, >>とか、2回繰り返すとカーサーのある行に動作する upper case operator 例えばc->C、d->D, y->Yのように、現在のカーサーから行の最後まで動作するケースと、対になっている(逆の機能を持つ)ケース、例えばp->P, o->O, n->N, a->A, i->I, f->Fなど)に大まかに分けられる exclusive inclusive 例えば、yiw vs yaw, cib vs cabの違いで、テキストオブジェクトの内部(inner)だけか、境界線も含めるか(around) があります。これらのルールは他のプラグインにもよくみられるので、Vim wayに慣れればプラ

    Vimの思想について
    pukuman
    pukuman 2023/10/31
  • Dockerのボリューム

    はじめに dockerでコンテナを立ち上げる際にホストのデータを共有したいことがあると思います。 今回はそんなデータの共有方法について記事にしたいと思います。 前提 今回の検証は全てAWSのEC2(Amazon Linux2023)上で行っています。 今回はボリュームの仕組みを確認するだけなので、Dockerfile等は使用しません。 コンテナの起動には全てコマンドを使用しています。 ボリュームの種類 Dockerではホストとデータを共有する方法がいくつかあります。 bind mount volume tmpfs mount 今回はこれらの特徴と、実際にどのように動くのかを確認していきます。 ちなみに共有と書いていますが、正確にはコンテナからホストのディレクトリを参照しているという方が正しいと思います。 bind mount 概要 bind mountはホスト上のディレクトリをコンテナでマ

    Dockerのボリューム
  • WASMバイナリを実行する自作OS, mavisの紹介

    mavisとは mavisは私がフルスクラッチで開発している自作OSです。 これをビルドしてmake runするとshellが立ち上がり、"hello"コマンドを実行すると"Hello World!"が表示されます。 現状できることはたったこれだけですが、面白いのはその仕組みです。実は上の画像のshellとhello worldプログラムはどちらも WASMバイナリ です。そしてkernelは低レベルなメモリ管理機能とタスク管理機能を除くと、「WASMバイナリをタスクとして実行する」以外の機能を持ちません。つまりkernelがWASM Runtimeであり、それによって"ユーザーランド"を実現しているということです。 このOSは「仮想メモリ」を持ちません。なぜならWASMバイナリは位置独立だからです。WASMはスタックマシンベースの命令セットなので、スタックさえ用意すればどこでも、何度でも

    WASMバイナリを実行する自作OS, mavisの紹介
  • なぜ脱OSSが増えているのか?

    はじめに TerraformやVaultを開発するHashiCorpは自社製品をOSSのMPL(Mozilla Public License v2.0) から、ソースコードは公開するも一部の利用に制限があるBSL(Business Source License) への変更をアナウンスしました。 これは2018年のRedisを皮切りにMongoDBCockroachDB、ElasticSearchなど多くのプロダクトで進められている脱OSSの流れです。商用のオープンソース[1]と言われてしまうこともある最近のこの動きの理由は何故なのか? という点を以下の動画で解説しました。 動画中では尺の都合で端折った個所も多いので、こちらの記事の方にもまとめておきたいと思います。 OSSとは? OSSの定義 まず、OSS(オープンソース)とはなんでしょうか? これはRMSのフリーソフトウェアを源流とする

    なぜ脱OSSが増えているのか?
  • LINE が公開した日本語言語モデルをM2 Macbook Airで動かす

    これはなに? LINE が公開した日語言語モデルをローカルで動かしたいけど、GPUがなくて動かなくて悲しかったのです。でも、huggingface に良い変換モデルを公開されてる方がいらして、それを試したら、いい感じで動きました。というご報告です。やったね! 結論: 動かす手順 homebrew で cmake をインストール mmngaさんが公開されている ggml 変換版の readme に従ってターミナルで以下を実行 git clone https://github.com/ggerganov/ggml.git cd ggml mkdir build && cd build cmake .. make -j mmngaさんが公開されているggml 変換版のモデルをダウンロード 保存先は 2. で mkdir した build ディレクトリに。 以下のコマンドで推論を実行 ./bin

    LINE が公開した日本語言語モデルをM2 Macbook Airで動かす
    pukuman
    pukuman 2023/08/17
  • 「システム設計の面接試験」という本が良かった

    皆さんこんにちは。株式会社ラクーンホールディングスで働いている川崎です。 最近「システム設計の面接試験」というを読みました。 個人的にとても面白いと感じたので、オススメポイントと感想を共有します。 直近でシステム設計の面接を受けない方も、きっと読んで得るものがあると思います。 の概要 システムの設計はシステムの機能や仕様、データのアクセスやセキュリティを左右するため、非常に重要だが、従うべき一定のパターンがないために、その習得は難しいと言われています。 一方で、システム設計自体がITエンジニアに日常的に求められる作業であるため、システム設計の面接試験は米国で広く採用されています。 書では、「Webクローラ」「通知システム」「ニュースフィードシステム」「チャットシステム」「youtube」など実践的なテーマに沿って、システム設計の問題を出題し、その回答を解説することで、システム設計力を

    「システム設計の面接試験」という本が良かった
  • 【未解決】Ruby3.2.0にupdateしてYJITを有効化したら失敗した話

    株式会社ウェイブでcoolmicという日のコミックを海外向けに配信するWEBサービスの開発を行なっております、こしけです! 今回が初投稿になります! 日はRuby3.2系から実用段階になったYJITをcoolmicで有効にしたら失敗した話を書いていこうと思います。 導入するきっかけ coolmicでは様々な機能の追加や、既存のコードの負債の影響で処理速度が低下してきているのが課題でした。そんな中でRubyのupdateを行なっている最中にYJITという存在を知りました。 こちらの記事では導入後全体的に2-3割のレスポンスタイムの削減がされたという記載もあり、coolmicでもかなり恩恵がありそうなので導入してみようという流れになりました。 導入方法 Ruby3.2.0のDockerイメージにはYJITの組み込みが既にされているので、DockerfileのENVにRUBY_YJIT_EN

    【未解決】Ruby3.2.0にupdateしてYJITを有効化したら失敗した話
    pukuman
    pukuman 2023/05/12
  • Docker一強の終焉にあたり、押さえるべきContainer事情

    章立て はじめに Docker・Container型仮想化とは Docker一強時代終焉の兆し Container技術関連史 様々なContainer Runtime おわりに 1. はじめに Containerを使うならDocker、という常識が崩れつつある。軽量な仮想環境であるContainerは、開発からリリース後もすでに欠かせないツールであるため、エンジニアは避けて通れない。Container実行ツール(Container Runtime)として挙げられるのがほぼDocker一択であり、それで十分と思われていたのだが、Dockerの脆弱性や消費リソースなどの問題、Kubernetes(K8s)の登場による影響、containerdやcri-o等の他のContainer Runtimeの登場により状況が劇的に変化している。記事では、これからContainerを利用したい人や再度情報

    Docker一強の終焉にあたり、押さえるべきContainer事情
  • サービスメッシュの本質は、トラフィック管理や可観測性ではない

    Abstruct サービスメッシュが、真に提供する価値は何なのか。それはトラフィック管理と可観測性なのだろうか。 サービスメッシュがこれほどにまで繁栄した理由について、私なりに考察する。 Introduction 近年では、ソフトウェアのアーキテクチャとして、マイクロサービスが大流行した。かつては最大手のインターネット企業のみが必要性に迫られていた、マイクロサービスアーキテクチャだが、昨今の急激に成長するITビジネスの中で、多くの企業にとってマイクロサービスは、あらゆる企業が取り組むべき必然性のあるソリューションとなっている マイクロサービス・アーキテクチャによって、大規模な開発チームがより俊敏になり、より多くのデプロイを実現させられることは、大きなメリットだ。一方で、マイクロサービス特有の課題も数多く存在する。 マイクロサービスに移行する際に発生する運用上の問題の多くは、結局のところ、ネ

    サービスメッシュの本質は、トラフィック管理や可観測性ではない